Suporte a vários clusters
O suporte a vários clusters foi removido na v2. A documentação a seguir refere-se ao Orleans v1. O Orleans 1.3.0 adicionou suporte para federar vários clusters do Orleans com o uso de vários clusters conectados de maneira flexível que funcionam como um só serviço. O uso de vários clusters facilita a distribuição geográfica como um serviço, ou seja, facilitando a execução de um aplicativo Orleans em vários data centers em todo o mundo. Além disso, o uso de vários clusters pode ser executado em um só datacenter para obter melhor isolamento de desempenho e falha.
Todos os mecanismos foram projetados com especial atenção para:
- Minimizar a comunicação entre clusters.
- Permitir que cada cluster seja executado de maneira autônoma, mesmo que outros clusters falhem ou fiquem inacessíveis.
Configuração e operação
Abaixo, documentamos como configurar e operar vários clusters.
Comunicação. Os clusters se comunicam por meio das mesmas conexões silo a silo usadas em um cluster. Para trocar informações de status e de configuração, os clusters usam um mecanismo de fofocas e implementações de canal de fofocas.
Configuração de silos. Os silos precisam ser configurados para que eles saibam a qual cluster pertencem (cada cluster é identificado por uma cadeia de caracteres exclusiva). Além disso, cada silo precisa ser configurado com cadeias de conexão que permitam que eles se conectem a um ou mais canais de fofocas na inicialização.
Injeção de configuração de vários clusters. Em runtime, o operador de serviço pode especificar e/ou alterar a configuração de vários clusters, que contém uma lista de IDs de cluster, para especificar quais clusters fazem parte da configuração de vários clusters atual. Isso é feito chamando a granularidade de gerenciamento em um dos clusters.
Granularidade de vários clusters
Abaixo, documentamos como usar a funcionalidade de vários clusters no nível do aplicativo.
Granularidade global de instância única. Os desenvolvedores podem indicar quando e como os clusters devem coordenar os diretórios de granularidade em relação a determinada classe de granularidade. O GlobalSingleInstanceAttribute significa que queremos o mesmo comportamento que ao executar o Orleans em um só cluster global: ou seja, rotear todas as chamadas para uma única ativação do grão. Por outro lado, o OneInstancePerClusterAttribute indica que cada cluster pode ter uma ativação independente. Isso será apropriado se a comunicação entre os clusters não for desejada.
Granularidade de exibição de log (não disponível na v.1.3.0). Um tipo especial de granularidade que usa uma nova API, semelhante ao fornecimento de eventos, para sincronizar ou persistir o estado de granularidade. Ele pode ser usado para sincronizar de modo automático e eficiente o estado de uma granularidade entre clusters e com armazenamento. Como os algoritmos de sincronização são seguros de serem usados com a granularidade reentrante e são otimizados para usar o envio em lote e a replicação, ele pode ter um desempenho melhor do que a granularidade padrão quando uma granularidade é acessada com frequência em vários clusters e/ou quando ela é gravada no armazenamento com frequência. O suporte para granularidade de exibição de log ainda não faz parte da ramificação principal. Temos um pré-lançamento, incluindo exemplos e um pouco da documentação no branch geo-orleans
. Atualmente, ele está sendo avaliado em produção por um usuário pioneiro.