ZooKeeperBasedMembershipTable Classe
Definição
Importante
Algumas informações se referem a produtos de pré-lançamento que podem ser substancialmente modificados antes do lançamento. A Microsoft não oferece garantias, expressas ou implícitas, das informações aqui fornecidas.
Uma implementação de Tabela de Associação usando o Apache Zookeeper 3.4.6 https://zookeeper.apache.org/doc/r3.4.6/
public class ZooKeeperBasedMembershipTable : Orleans.IMembershipTable
type ZooKeeperBasedMembershipTable = class
interface IMembershipTable
Public Class ZooKeeperBasedMembershipTable
Implements IMembershipTable
- Herança
-
ZooKeeperBasedMembershipTable
- Implementações
Comentários
Uma breve visão geral dos recursos do ZK usados: os dados são representados por uma árvore de nós (semelhante a um sistema de arquivos). Cada nó é endereçado por um caminho e pode conter dados como uma matriz de bytes e tem uma versão. Quando um nó é criado, sua versão é 0. Após as atualizações, a versão é incrementada atomicamente. Uma atualização também pode ser condicional em uma versão atual esperada. Uma transação pode conter várias operações, que têm êxito ou falham atomicamente. ao criar um cliente zookeeper, é possível definir um caminho base ao qual todas as operações são relativas.
Nesta implementação: cada implantação do Orleans tem um nó /UniqueDeploymentId O estado de cada Silo é salvo em /UniqueDeploymentId/IP:Port@Gen Cada IAmAlive de Silo é salvo em /UniqueDeploymentId/IP:Port@Gen/IAmAlive IAmAlive é salvo em um nó separado porque suas atualizações são incondicionales.
A versão ZK de um nó é sua ETag: a versão da tabela é a versão de /UniqueDeploymentId, a versão de entrada do silo é a versão de /UniqueDeploymentId/IP:Port@Gen
Construtores
ZooKeeperBasedMembershipTable(ILogger<ZooKeeperBasedMembershipTable>, IOptions<ZooKeeperClusteringSiloOptions>, IOptions<ClusterOptions>) |
Uma implementação de Tabela de Associação usando o Apache Zookeeper 3.4.6 https://zookeeper.apache.org/doc/r3.4.6/ |
Métodos
CleanupDefunctSiloEntries(DateTimeOffset) |
Uma implementação de Tabela de Associação usando o Apache Zookeeper 3.4.6 https://zookeeper.apache.org/doc/r3.4.6/ |
DeleteMembershipTableEntries(String) |
Exclui todas as entradas de tabela da clusterId fornecida |
InitializeMembershipTable(Boolean) |
Inicializa a tabela de associação baseada no ZooKeeper. |
InsertRow(MembershipEntry, TableVersion) |
Tenta atomicamente inserir (adicionar) um novo MembershipEntry para um silo e também atualizar o TableVersion. Se a operação for bem-sucedida, as seguintes alterações serão feitas na tabela:
|
ReadAll() |
Lê atomicamente o conteúdo completo da Tabela de Associação. O MembershipTableData retornado inclui todas as entradas MembershipEntry para todos os silos na tabela e TableVersion para esta tabela. MembershipEntries e TableVersion precisam ser lidos atomicamente. |
ReadRow(SiloAddress) |
Lê atomicamente as informações da Tabela de Associação sobre um determinado silo. O MembershipTableData retornado inclui uma entrada MembershipEntry para um determinado silo e TableVersion para esta tabela. O MembershipEntry e o TableVersion precisam ser lidos atomicamente. |
UpdateIAmAlive(MembershipEntry) |
Atualizações a parte IAmAlive (coluna) do MembershipEntry para esse silo. Essa operação só deve atualizar a coluna IAmAlive e não alterar outras colunas. Essa operação é uma "gravação suja" ou "atualização in-loco" e é executada sem validação de etag. Com relação à atualização de eTags: essa operação pode atualizar automaticamente a eTag associada à linha de silo fornecida, mas não precisa. Ele também pode deixar a etag não alterada ("gravação suja"). Em relação a TableVersion: essa operação não deve alterar o TableVersion da tabela. Ele deve deixá-lo intocado. Não há nenhum cenário em que essa operação possa falhar devido a motivos semânticos de tabela. Ele só pode falhar devido a problemas de rede ou indisponibilidade de tabela. |
UpdateRow(MembershipEntry, String, TableVersion) |
Tenta atomicamente atualizar o MembershipEntry para um silo e também atualizar o TableVersion. Se a operação for bem-sucedida, as seguintes alterações serão feitas na tabela:
|