Não se pode julgar um livro pela capa, mas é possível julgar a arquitetura de um sistema distribuído por sua topologia.
Se dois sistemas distribuídos são igualmente eficazes, aquele com a topologia mais simples é o que tem a melhor arquitetura? Este artigo compara a arquitetura de dois bancos de dados de documentos e dois armazenamentos de colunas amplas, observando suas topologias.
Loja de colunas largas
Topologia #1
Uau. Há muita coisa acontecendo aqui. Há quatro tipos de nós e vários componentes por nó.
Topologia #2
Agradável. Simples. Há um tipo de nó.
Qual loja de colunas largas você escolheria?
- Qual deles será mais fácil de implementar?
- Qual deles será mais fácil de manter?
- Qual deles será mais fácil de dimensionar?
- Qual deles será mais resistente?
Acredito que quanto menos peças móveis, melhor.
Apache HBase
O Apache HBase fica sobre o Apache Hadoop, portanto, há vários tipos de nós e componentes. O Apache Hadoop requer nós de nome e nós de dados para o HDFS. Ele requer rastreadores de trabalho e rastreadores de tarefa para mapear/reduzir. O Apache HBase requer servidores mestre, servidores de região e um cluster do Zookeeper. Os componentes do Apache HBase, HDFS e map / reduce podem ser co-localizados. No entanto, eles não precisam estar.
O servidor mestre e o nó de nome podem ser pontos únicos de falha. Entretanto, vários nós de nomes podem ser implantados, assim como vários servidores mestres. Dito isso, haverá problemas se os nós de nomes não estiverem disponíveis, se os servidores mestres não estiverem disponíveis e/ou se o cluster do Zookeeper não estiver disponível.
Apache Cassandra
Há um tipo de nó. E é só isso. Os clientes se comunicam diretamente com os nós. Não há pontos únicos de falha. Não há dependências de nós independentes ou clusters separados.
Bancos de dados de documentos
Topologia #1
Uau. Há muita coisa acontecendo aqui. Há quatro tipos de nós e duas camadas de agrupamentos lógicos.
Topologia #2
Agradável. Simples. Há um tipo de nó.
Qual banco de dados de documentos você escolheria?
- Qual deles será mais fácil de implementar?
- Qual deles será mais fácil de manter?
- Qual deles será mais fácil de dimensionar?
- Qual deles será mais resiliente?
Acredito que quanto menos peças móveis, melhor.
MongoDB
A topologia do MongoDB é semelhante à topologia do Apache HBase. A diferença é que os clientes não se conectam diretamente aos nós. As solicitações dos clientes são representadas pelos nós do roteador. Os nós do roteador recuperam informações de shard dos nós de configuração. Um fragmento consiste em um conjunto de réplicas. Um conjunto de réplicas consiste em vários nós e um árbitro.
Assim como o Apache HBase, o nó do roteador e o nó de configuração podem ser pontos únicos de falha. Entretanto, assim como o Apache HBase, vários nós de roteador e vários nós de configuração podem ser implantados. Dito isso, haverá problemas se os nós do roteador e/ou os nós de configuração não estiverem disponíveis.
Servidor Couchbase
Há um tipo de nó. E é só isso. Os clientes se comunicam diretamente com os nós. Não há pontos únicos de falha. Não há dependências de nós independentes ou clusters separados.
Resumo
Uma arquitetura excelente equilibra flexibilidade e simplicidade. Há valor em uma arquitetura modular. Há valor em uma arquitetura simples. Entretanto, a modularidade não precisa ser refletida na topologia de um sistema distribuído. O Couchbase Server é um sistema modular e distribuído. Uma única instância é composta de vários componentes e vários serviços. No entanto, a modularidade não é imposta aos administradores. Ela é um aspecto do próprio sistema distribuído, não de sua implementação.
Participe da conversa no reddit (link).
Participe da conversa no Hacker News (link).
Muito bem escrito! Muito eficaz.
[...] o Couchbase Server oferece apenas o mais alto desempenho, é fácil de dimensionar (link) e é consistente [...]