Vídeo: Scaling Databases - Web Development 2024
Um grande cluster de bases de dados NoSQL é uma coisa difícil de gerenciar. Apache Zookeeper para o resgate! Manter o controle de quais nós estão no cluster, quais dados cada um está gerenciando e garantir que os novos mestres sejam selecionados quando um mestre falhar não são tarefas fáceis.
A coordenação de grandes sistemas distribuídos é, portanto, muito difícil. Ambos os bancos de dados Hadoop e NoSQL distribuídos precisam de uma maneira de gerenciar a configuração de um cluster inteiro. Este processo também precisa estar altamente disponível para que não seja um único ponto de falha no sistema geral.
Este é o lugar onde o Apache Zookeeper entra. O Zookeeper fornece um serviço de coordenação distribuído e transacional.
Vários outros produtos usam Zookeeper para gerenciamento de cluster:
-
Apache Hadoop
-
Solr Cloud
-
Neo4j
-
Accumulo
-
HBase
-
Rackspace
-
Zynga
-
Yahoo! (para vários dos seus serviços)
O Zookeeper fornece uma estrutura de armazenamento hierárquica na memória semelhante a um sistema de arquivos de computador. Essa estrutura é gerenciada pelo atual Mestre Zookeeper e replicada entre os outros nós no cluster. Um cluster Zookeeper é chamado de Zookeeper e nsemble.
Somente o mestre gerencia atualizações (gravações) no armazenamento. Essas alterações são verificadas no disco para torná-las duráveis e depois replicadas para as outras instâncias do Zookeeper no conjunto.
Esses serviços armazenam seus dados de configuração de cluster no Zookeeper. Alguns deles armazenam os intervalos de chaves para fragmentos de sua base de dados, também. Isso permite que clientes que utilizem um banco de dados NoSQL que usa o Zookeeper para se comunicar com qualquer servidor Zookeeper no conjunto. Desta forma, os clientes podem descobrir quais servidores NoSQL mantêm os dados em que eles estão interessados.
Olhando para qual nó armazena qual intervalo de chave minimiza a carga nos servidores NoSQL, porque eles não precisam encaminhar pedidos de dados de um nó NoSQL para o nó que realmente detém os dados.
Você também pode usar o armazenamento de dados do Zookeeper para armazenamento efêmero (armazenamento que não vai durar além de um reinício do serviço), que é útil para armazenar a sessão ou outros dados de tempo de execução.
Os servidores do Zookeeper usam este armazenamento efêmero para determinar quem assume o controle se um mestre falhar. Cada servidor cria um znode efêmero numerado (arquivo de armazenamento) no espaço da chave. Se o mestre do Zookeeper (líder) sofrer uma falha de hardware, o proprietário do próximo znode na seqüência torna-se o mestre. Esta é uma solução elegante e evita o efeito "rebanho" onde todos os servidores se comunicam freneticamente uns com os outros durante alguns segundos para selecionar um novo mestre.
O Zookeeper é uma ótima solução Java para os problemas inerentes ao gerenciamento de sistemas coordenados e alta disponibilidade. Você pode usá-lo para implementar serviços altamente disponíveis, incluindo serviços de mensagens. Então, se você precisa criar um novo serviço distribuído, considere usar o Zookeeper.