Partilhar via


Atributos de coordenação de grãos

Você pode indicar quando e como os clusters devem coordenar seus diretórios de grãos para uma classe de grãos específica. GlobalSingleInstanceAttribute significa que pretende o mesmo comportamento que quando se executa Orleans num único cluster global: encaminhar todas as chamadas para uma única ativação do grain. Por outro lado, o [OneInstancePerCluster] atributo indica que cada cluster pode ter sua ativação independente. Isso é apropriado se você não quiser comunicação entre clusters.

Coloque os atributos em implementações granulares. Por exemplo:

using Orleans.MultiCluster;

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

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

Se uma classe de grão não especificar nenhum desses atributos, o padrão será OneInstancePerClusterAttribute. No entanto, será definido como GlobalSingleInstanceAttribute se definir o parâmetro de configuração GlobalConfiguration.UseGlobalSingleInstanceByDefault como true.

Protocolo para grãos globais de instância única

Quando você acessa um grão de instância única global (GSI) e nenhuma ativação é conhecida, Orleans executa um protocolo de ativação GSI especial antes de ativar uma nova instância. Especificamente, ele envia uma solicitação para todos os outros clusters na configuração multi-cluster atual para verificar se eles já têm uma ativação para esse grão. Se todas as respostas forem negativas, Orleans criará uma nova ativação no cluster atual. Caso contrário, ele usa a ativação remota (e armazena em cache uma referência a ela no diretório local).

Protocolo para grãos de uma instância por cluster

Não há comunicação entre clusters para grãos de uma instância por cluster. Eles simplesmente usam o mecanismo padrão Orleans de forma independente dentro de cada cluster. Dentro da Orleans própria estrutura, as seguintes classes de grãos são marcadas com o OneInstancePerClusterAttribute:

  • ManagementGrain
  • SystemTargetBasedMembershipTable
  • GrainBasedReminderTable

Ativações duvidosas

Se o protocolo GSI não receber respostas conclusivas de todos os clusters após 3 novas tentativas (ou o número especificado pelo parâmetro de configuração), ele criará de forma otimista uma nova ativação local "duvidosa", favorecendo a disponibilidade em detrimento da GlobalSingleInstanceNumberRetries consistência.

"Duvidoso" significa que a ativação pode ser duplicada porque um cluster remoto que não respondeu durante o protocolo GSI ainda pode ter uma ativação para esse grão. Portanto, periodicamente, a cada 30 segundos (ou o intervalo especificado pelo GlobalSingleInstanceRetryInterval parâmetro de configuração), Orleans executa o protocolo GSI novamente para todas as ativações duvidosas. Esse processo garante que, uma vez restaurada a comunicação entre clusters, o sistema possa detetar e remover ativações duplicadas.