Sdílet prostřednictvím


Správa verzí podrobného rozhraní

V tomto článku se dozvíte, jak používat správu verzí podrobného rozhraní. Správa verzí stavu agregace je mimo rozsah.

Přehled

V daném clusteru mohou sila podporovat různé verze typu agregace.

Cluster with different versions of a grain

V tomto příkladu byl klient a Silo{1,2,3} zkompilovány s rozhraním grain verze A 1. Silo 4 bylo zkompilováno s A verzí 2.

Omezení

  • Bezstavová verze pracovního procesu
  • Rozhraní streamování nejsou verze

Povolení správy verzí

Pokud atribut verze není explicitně přidán do rozhraní grain, pak zrnka mají výchozí verzi 0. Podrobné informace o verzích můžete provádět pomocí versionAttribute v rozhraní odstupňovaného intervalu:

[Version(X)]
public interface IVersionUpgradeTestGrain : IGrainWithIntegerKey
{
}

Kde X je číslo verze rozhraní agregace, což je obvykle monotonicky rostoucí.

Kompatibilita a umístění odstupňované verze

Když do clusteru přijde volání z agregovaného intervalu s verzí:

  • Pokud neexistuje žádná aktivace, vytvoří se kompatibilní aktivace.
  • Pokud aktivace existuje:
    • Pokud aktuální verze není kompatibilní, deaktivuje se a vytvoří se nová kompatibilní verze (viz strategie selektoru verzí).
    • Pokud je aktuální kompatibilní (viz kompatibilní zrnka), bude hovor zpracován normálně.

Standardně:

  • Všechna zrna verze mají být zpětně kompatibilní pouze (viz pokyny pro zpětnou kompatibilitu a kompatibilní zrnka). To znamená, že agregační interval v1 může volat agregační interval v2, ale v2 agregační interval nemůže volat v1.
  • Pokud v clusteru existuje více verzí, nová aktivace se náhodně umístí na kompatibilní silo.

Toto výchozí chování můžete změnit pomocí GrainVersioningOptionspříkazu :

var silo = new HostBuilder()
    .UseOrleans(c =>
    {
        c.Configure<GrainVersioningOptions>(options =>
        {
            options.DefaultCompatibilityStrategy = nameof(BackwardCompatible);
            options.DefaultVersionSelectorStrategy = nameof(MinimumVersion);
        });
    });