Sdílet prostřednictvím


Atributy koordinace zrnitosti

Vývojáři můžou určit, kdy a jak mají clustery koordinovat jejich adresáře zrnitosti týkající se konkrétní třídy zrnitosti. To GlobalSingleInstanceAttribute znamená, že chceme stejné chování jako při spuštění Orleans v jednom globálním clusteru: to znamená směrovat všechna volání na jednu aktivaci agregace. Naopak atribut označuje, [OneInstancePerCluster] že každý cluster může mít svou nezávislou aktivaci. To je vhodné v případě, že komunikace mezi clustery není žádoucí.

Atributy se umísťují do implementace agregačních intervalů. Příklad:

using Orleans.MultiCluster;

[GlobalSingleInstance]
public class MyGlobalGrain : Orleans.Grain, IMyGrain
{
   // ...
}

[OneInstancePerCluster]
public class MyLocalGrain : Orleans.Grain, IMyGrain
{
   // ...
}

Pokud třída zrnitosti neurčí jeden z těchto atributů, je výchozí OneInstancePerClusterAttributehodnota , nebo GlobalSingleInstanceAttribute pokud je parametr GlobalConfiguration.UseGlobalSingleInstanceByDefault konfigurace nastaven na true.

Protokol pro globální zrna s jednou instancí

Při přístupu k agregačnímu intervalu globální instance (GSI) a neexistuje žádná aktivace, před aktivací nové instance se spustí speciální aktivační protokol GSI. Konkrétně se požadavek odešle do všech ostatních clusterů v aktuální konfiguraci více clusterů a zkontroluje, jestli už pro toto agregační intervaly mají aktivaci. Pokud jsou všechny odpovědi záporné, vytvoří se v tomto clusteru nová aktivace. Jinak se použije vzdálená aktivace (a odkaz na ni se uloží do mezipaměti v místním adresáři).

Protokol pro jednu instanci na zrnka clusteru

Pro zrna s jednou instancí na cluster neexistuje žádná komunikace mezi clustery. Jednoduše používají standardní Orleans mechanismus nezávisle v každém clusteru. Orleans Uvnitř samotné architektury jsou následující třídy agregační znaménkouOneInstancePerClusterAttribute:

  • ManagementGrain
  • SystemTargetBasedMembershipTable
  • GrainBasedReminderTable

Pochybné aktivace

Pokud protokol GSI neobdrží přesvědčivé odpovědi ze všech clusterů po 3 opakovaných pokusech (nebo jakékoli číslo zadané parametrem GlobalSingleInstanceNumberRetrieskonfigurace), vytvoří novou místní "pochybnou" aktivaci optimisticky, což upřednostňuje dostupnost před konzistencí.

Pochybnosti o aktivaci mohou být duplicitní (protože některé vzdálené clustery, které nereagovaly během aktivace protokolu GSI, mohou mít aktivaci tohoto podrobného intervalu). Proto pravidelně každých 30 sekund (nebo jakýkoli interval je určen parametrem GlobalSingleInstanceRetryIntervalkonfigurace) se protokol GSI spustí znovu pro všechny pochybné aktivace. Tím se zajistí, že po obnovení komunikace mezi clustery je možné detekovat a odebírat duplicitní aktivace.