Delen via


Korrelcoördinatiekenmerken

Ontwikkelaars kunnen aangeven wanneer en hoe clusters hun graanmappen moeten coördineren met betrekking tot een bepaalde graanklasse. Dit GlobalSingleInstanceAttribute betekent dat we hetzelfde gedrag willen als bij het uitvoeren Orleans in één globaal cluster: dat wil zeggen dat alle aanroepen worden doorgestuurd naar één activering van het graan. Omgekeerd geeft het [OneInstancePerCluster] kenmerk aan dat elk cluster de onafhankelijke activering kan hebben. Dit is geschikt als communicatie tussen clusters ongewenst is.

De kenmerken worden op graan implementaties geplaatst. Voorbeeld:

using Orleans.MultiCluster;

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

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

Als een graanklasse een van deze kenmerken niet opgeeft, wordt deze standaard ingesteld OneInstancePerClusterAttributeop , of GlobalSingleInstanceAttribute als de configuratieparameter GlobalConfiguration.UseGlobalSingleInstanceByDefault is ingesteld op true.

Protocol voor globale korrels met één exemplaar

Wanneer een GSI-graan (global-single-instance) wordt geopend en er geen activering bestaat, wordt een speciaal GSI-activeringsprotocol uitgevoerd voordat een nieuw exemplaar wordt geactiveerd. Er wordt met name een aanvraag verzonden naar alle andere clusters in de huidige configuratie met meerdere clusters om te controleren of deze al zijn geactiveerd voor dit graan. Als alle antwoorden negatief zijn, wordt er een nieuwe activering gemaakt in dit cluster. Anders wordt de externe activering gebruikt (en een verwijzing naar de activering in de cache in de lokale map).

Protocol voor één exemplaar per clusterkorrels

Er is geen communicatie tussen clusters voor korrels met één exemplaar per cluster. Ze gebruiken eenvoudigweg het standaardmechanisme Orleans onafhankelijk binnen elk cluster. Binnen het Orleans framework zelf worden de volgende graanklassen gemarkeerd met het OneInstancePerClusterAttributevolgende:

  • ManagementGrain
  • SystemTargetBasedMembershipTable
  • GrainBasedReminderTable

Twijfelachtige activeringen

Als het GSI-protocol geen overtuigende reacties ontvangt van alle clusters na 3 nieuwe pogingen (of een willekeurig getal dat is opgegeven door de configuratieparameter GlobalSingleInstanceNumberRetries), wordt er een nieuwe lokale 'twijfelachtige' activering optimistisch gemaakt, wat de beschikbaarheid ten opzichte van consistentie bevordert.

Twijfelachtige activeringen kunnen duplicaten zijn (omdat sommige externe clusters die niet hebben gereageerd tijdens de activering van het GSI-protocol, toch activering van dit graan hebben). Daarom wordt het GSI-protocol regelmatig elke 30 seconden (of elk interval opgegeven door de configuratieparameter GlobalSingleInstanceRetryInterval) opnieuw uitgevoerd voor alle twijfelachtige activeringen. Dit zorgt ervoor dat zodra de communicatie tussen clusters is hersteld, dubbele activeringen kunnen worden gedetecteerd en verwijderd.