Pesquisar este blog

quinta-feira, 13 de novembro de 2014

Introdução ao Apache Zookeeper

Introdução ao Apache Zookeeper

Da mesma forma que sabemos que não deve-se sair implementando uma biblioteca de criptografia ou mesmo o seu servidor web, ao invés de utilizar um algorítmo já implementado e muito bem revisto pela comunidade, ou empresas. Implementar o seu próprio protocolo de coordenação de um sistema distribuído vai dar muito trabalho, ser muito complicado e provavelmente causar muita frustração.
Estes protocolos são extremamente complexos, a arquitetura de um sistema distribuído não é um problema simples de se resolver, como já vimos nestes posts, existem os problemas de concorrência, deadlock e consistência. Estes problemas são o que o Apache Zoopkeeper te ajuda a resolver. Ele é um sistema de coordenação que te ajuda a cconstruir um sistema distribuído corretamente.
O Apache Zookeper já resolve todos estes tipos de problemas, sem que você tenha que reinventar a roda. O Zookeeper já é utilizado em grandes projetos como o Apache HBase, o HDFS e o Apache Hadoop.
O HBase é um sistema de armazenamento de dados de BigData que provê acesso randômico e em tempo real de leitura e escrita a estruturas com bilhôes de linhas e milhôes de colunas.
O HDFS (Hadoop Distributed File System) é um sistema de arquivos distribuídos que foi desenvolvido para ser utilizado em computadores baratos, com grande tolerância a falhas, ele provê uma grande velocidade de acesso aos lados e é utilizado por aplicações que possuem uma quantidade de dados muito grande.
O Apache Hadoop é um framework que provê processamento de dados, desde um sistema que possui apenas um servidor e pode escalar até milhares de servidores, onde cada um deles provê um processamento local e um armazenamento de dados local. Ao invés de confiar em sistemas de hardware confiáveis para prover tolerância a falhas, o hadoop consegue detectar e contornar estas falhas por software provendo um serviço de alta disponibilidade em um cluster de computadores.

Como o ZooKeeper funciona

O Zookeeper roda em um cluster de servidores chamados de conjunto, os quais compartilham o estado dos seus dados entre si. Cada atualização de dados só é considerada uma alteração de sucesso, depois que metade das máquinas deste conjunto completa esta atualização. Um lider será eleito pelo conjunto e se duas atualizações conflitantes são enviadas para o conjunto, aquela que for processada pelo lider primeiro será a que prevalecerá, a outra irá falhar.
Nele é possível configurar um parâmetro de timeout de conexão, e o Zookeeper cuidará de desconectar qualquer servidor que fique desconectado por um tempo maior ou igual ao parâmetro de timeout. Enquanto houver mais da metade do conjunto online, o Zookeeper conseguirá manter o sistema consistente. Assim que um servidor que ficou offline voltar a se conectar ao Zookeeper ele irá resincronizar todos os seus dados.
É recomendado ter um número impar de servidores, por exemplo, se você tiver 5 servidores e um deles estiver em manutenção, você ainda consegue trabalhar se algum outro servidor se desconectar, porém se três servidores estiverem desconectado o seu serviço ficará indisponível. Quanto mais servidores você adiciona ao seu sistema, mais tolerante a falhas ele ficará, porém a escrita de dados se tornará mais lenta. Trabalhando em um sistema com seis servidores, eles ficarão desconectados caso três servidores fiquem offline.

Nenhum comentário:

Postar um comentário