Observação
O acesso a essa página exige autorização. Você pode tentar entrar ou alterar diretórios.
O acesso a essa página exige autorização. Você pode tentar alterar os diretórios.
Em um determinado cluster, os silos podem dar suporte a diferentes conjuntos de tipos de grãos:
Neste exemplo, o cluster dá suporte a grãos de tipoA
, , B
, C
e D
E
:
- Tipos de grãos
A
eB
podem ser colocados no Silo 1 e 2. - O tipo de grão
C
pode ser colocado no Silo 1, 2 ou 3. - O tipo de grão
D
só pode ser colocado no Silo 3. - O tipo de grão
E
só pode ser colocado no Silo 4.
Todos os silos devem fazer referência às interfaces de todos os tipos de grãos no cluster, mas as classes de grãos só devem ser referenciadas pelos silos que os hospedam. O cliente não sabe qual silo dá suporte a um determinado tipo de grão.
Importante
Uma determinada implementação de tipo de grão deve ser a mesma em cada silo que dá suporte a ele.
O cenário a seguir não é válido:
No Silo 1 e 2:
public class C: Grain, IMyGrainInterface
{
public Task SomeMethod() { /* ... */ }
}
No Silo 3:
public class C: Grain, IMyGrainInterface, IMyOtherGrainInterface
{
public Task SomeMethod() { /* ... */ }
public Task SomeOtherMethod() { /* ... */ }
}
Configuração
Nenhuma configuração é necessária; você pode implantar binários diferentes em cada silo em seu cluster. No entanto, se necessário, você pode alterar o intervalo no qual silos e clientes verificam se há alterações nos tipos com suporte usando a TypeManagementOptions.TypeMapRefreshInterval propriedade.
Para fins de teste, você pode usar a GrainClassOptions.ExcludedGrainTypes propriedade, que é uma lista de nomes dos tipos que você deseja excluir em silos específicos.
Limitações
- Os clientes conectados não serão notificados se o conjunto de tipos de grãos com suporte for alterado. No exemplo anterior:
- Se o Silo 4 sair do cluster, o cliente ainda tentará fazer chamadas para grãos do tipo
E
. Falha durante o tempo de execução com um OrleansException. - Se o cliente estiver conectado ao cluster antes da junção do Silo 4, o cliente não poderá fazer chamadas para granulações do tipo
E
. Falha com um ArgumentException.
- Se o Silo 4 sair do cluster, o cliente ainda tentará fazer chamadas para grãos do tipo
- Não há suporte para grãos sem estado em implantações heterogêneas: todos os silos no cluster devem dar suporte ao mesmo conjunto de grãos sem estado.
- ImplicitStreamSubscriptionAttribute não é suportado; portanto, você só pode usar assinaturas explícitas em Orleans Streams com silos heterogêneos.