Este artigo é um artigo espelhado de tradução automática, por favor clique aqui para ir para o artigo original.

Vista: 9508|Resposta: 2

Implementação de trava distribuída no Zookeeper

[Copiar link]
Publicado em 20/03/2018 16:23:52 | | | |
Design da eclusa

  Entenda a ideia da implementação do bloqueio:
1. Comece criando um diretório como um bloqueio (znode), que geralmente é usado para descrever a entidade travada, chamada :/lock_node
2. O cliente que deseja obter o bloqueio cria um znode no diretório do lock como um nó filho do bloqueio/lock_node, e o tipo de nó é Nó Temporário Ordenado (EPHEMERAL_SEQUENTIAL);
Por exemplo, dois clientes criam znodes, /lock_node/lock-1 e /lock_node/lock-2
3. O cliente atual chama getChildren(/lock_node) para obter todos os nós filhos do diretório de bloqueio, sem definir watch, e então obter os nós irmãos que são menores que ele (criados no passo 2).
4. O nó que é menor que ele mesmo no passo 3 não existe e o menor nó é o mesmo criado no passo 2, indicando que o número atual da sequência do cliente é o menor, obtenha o bloqueio e fim.
5. O cliente monitora o estado do nó temporário ordenado que é o menor próximo a si mesmo
6. Se o status do sub-nó monitorado mudar, pule para o passo 3 e continue as operações de acompanhamento até que a corrida de bloqueio seja encerrada.     

O autor não vai introduzir o bloqueio de distribuição aqui, vamos dar uma olhada no fluxograma de todo o design do código da seguinte forma





Anterior:Explicação detalhada do AutoResetEvent em .net/c#
Próximo:Sobre o problema de que o Android 7.0 não consegue realizar captura de pacotes https
 Senhorio| Publicado em 20/03/2018 16:49:35 |
Passos de eclusa distribuídos pelo Zookeeper:
1. Zookeeper é um nó com nós, semelhante a um diretório de arquivos, então abstraímos o bloqueio em um diretório, zookeeper tem um nó de EPHEMERAL_SEQUENTIAL tipos, múltiplas threads e, quando o nó é criado pelo zookeeper, ele nos ajuda a organizar a ordem para ser criada, de modo que os diretórios sob esse nó sejam sequenciais.
2. Obter o menor nó do diretório atual, determinar se o menor nó é o nó atual, se isso significa que o bloqueio foi bem-sucedido, se não for a falha na aquisição do bloqueio.
3. Quando o bloqueio falha, para evitar o efeito enxame, o que você precisa fazer é obter o nó anterior do nó atual e então ouvir o nó.
4. Quando você faz isso, ao liberar o bloqueio, também notificará o próximo nó.
 Senhorio| Publicado em 20/03/2018 16:54:46 |
Aprenda sobre o status dos tratadores e os tipos de eventos com antecedência.


Disclaimer:
Todo software, material de programação ou artigos publicados pela Code Farmer Network são apenas para fins de aprendizado e pesquisa; O conteúdo acima não deve ser usado para fins comerciais ou ilegais, caso contrário, os usuários terão todas as consequências. As informações deste site vêm da Internet, e disputas de direitos autorais não têm nada a ver com este site. Você deve deletar completamente o conteúdo acima do seu computador em até 24 horas após o download. Se você gosta do programa, por favor, apoie um software genuíno, compre o registro e obtenha serviços genuínos melhores. Se houver qualquer infração, por favor, entre em contato conosco por e-mail.

Mail To:help@itsvse.com