Arquitetura Cassandra explicada: um tutorial abrangente
Publicados: 2021-03-10Desde sua criação no Facebook, Cassandra se tornou um dos projetos Apache mais populares. É um banco de dados distribuído de código aberto, de alto desempenho e amplamente utilizado e facilita a vida de engenheiros de software, cientistas de dados e desenvolvedores da web.
Os usuários desta robusta solução de banco de dados incluem IBM, Facebook, Reddit, eBay e Twitter.
No entanto, para se familiarizar com o Cassandra, você deve conhecer sua arquitetura e a arquitetura do Apache Cassandra pode ser um pouco complicada de entender.
É por isso que criamos o seguinte guia introdutório sobre a arquitetura Cassandra. Ele o familiarizará com todos os conceitos necessários da arquitetura Cassandra:
Índice
Noções básicas de arquitetura Cassandra
A arquitetura Apache Cassandra não possui nós mestres ou escravos. Em vez disso, possui uma arquitetura semelhante a um anel, onde os nós são distribuídos logicamente em um anel. A arquitetura permite que os dados sejam distribuídos automaticamente em todos os nós. Assim como o HDFS, os dados no Cassandra são replicados nos nós para redundância e são armazenados na memória. Ele usa os valores de hash das chaves para distribuir dados entre os nós do cluster.
A arquitetura Cassandra permite que o sistema funcione independentemente de um único ponto de falha. Isso significa que se um cluster tiver cem nós e um deles falhar, o cluster ainda estará em execução. Por outro lado, com o Hadoop, a falha de um namenode falharia em todo o sistema.
A arquitetura Cassandra oferece alta escalabilidade para que um cluster possa ter até milhares de nós. Além disso, você pode adicionar um novo nó a um cluster sem interromper suas operações.
Além dos recursos que discutimos acima, a arquitetura Apache Cassandra também oferece suporte a vários data centers e permite a replicação de dados entre data centers.
Topologia e Design
A arquitetura do Cassandra é baseada em uma arquitetura de sistema distribuído. A versão mais simples do Cassandra pode ser executada em uma máquina e funcionar bem com testes básicos. Uma instância do Cassandra é chamada de nó.
O Cassandra oferece escalabilidade horizontal onde você pode adicionar mais de um nó como componente de um cluster. Ele funciona com arquitetura ponto a ponto, onde cada nó está conectado a todos os outros nós. Cada nó do Cassandra executa todas as operações de banco de dados e solicitações de clientes de servidores sem um nó mestre.
Essa arquitetura distribuída ponto a ponto garante que um único ponto de falha não cause a falha de todo o sistema. Clusters no Cassandra podem se comunicar uns com os outros para inúmeras funções. Os seguintes conceitos são vitais para tal comunicação:
Fofoca
Gossip é um protocolo Cassandra que seus nós usam para comunicação ponto a ponto. Ele informa a um nó sobre os estados dos outros nós. A cada segundo, um nó faz fofoca com até três outros nós e cada mensagem de fofoca segue formatos e números de versão específicos para manter a comunicação eficiente.
Sementes
Cada nó no Cassandra configura uma lista de sementes que é uma lista de outros nós. Um nó de semente não tem outra finalidade além de inicializar um nó quando ele se junta a um cluster pela primeira vez. Após a inicialização, um nó não requer uma semente na reinicialização. É melhor usar dois ou três nós de sementes por data center do Cassandra e manter a lista de sementes uniforme.
Estrutura do banco de dados
No Cassandra, os dados são armazenados em tabelas onde cada tabela é organizada em linhas e colunas. Além disso, as tabelas no Cassandra são agrupadas em espaços-chave, como tabelas de dados do cliente que podem ser agrupadas em um espaço-chave, enquanto as tabelas de transações comerciais podem ser armazenadas em outro.
Cada tabela tem uma chave primária que é dividida em colunas de cluster e chave de partição. Observe que as colunas de cluster são opcionais. Cassandra usa a chave de partição para indexar os dados. Todas as linhas com uma chave de partição comum constituem uma partição de dados, a unidade básica para particionamento de dados.
Particionando no Cassandra
No Cassandra, um particionador converte chaves de partição em tokens. Existem várias opções de particionador presentes no Cassandra, onde o Murmur3Partitioner é o padrão. Cada token recebe um valor inteiro entre -2^63 a +2^63-1, e o nome desse intervalo é o intervalo do token.
Cada Cassandra possui uma parte deste intervalo e possui principalmente dados relacionados ao intervalo. Usamos um token para localizar os dados precisamente entre os nós.
Você pode entender o sistema de propriedade com este conceito: se um cluster tiver apenas um nó, esse nó possuirá o intervalo de token completo. Com a adição de mais nós, a propriedade do intervalo de tokens seria dividida de acordo.
Nós virtuais
O Cassandra simplifica os desafios de cálculo e atribuição de tokens usando nós virtuais, também conhecidos como Vnodes.
Ele divide um cluster em vários nós virtuais para atribuir tokens e cada nó físico recebe uma quantidade igual de Vnodes. O número padrão de Vnodes pertencentes a um nó é 256. Você pode definir o mesmo usando a propriedade num_tokens. Quando você adiciona um novo nó a um cluster, o algoritmo de alocação de token aloca os tokens necessários usando os Vnodes.
Replicação
O Cassandra replica os dados presentes em cada keyspace com um fator de replicação. Uma réplica primária dos dados permanece com o nó proprietário do token enquanto o restante é colocado pelo Cassandra em nós específicos por meio de sua estratégia de posicionamento de réplica. Observe que todas as réplicas têm a mesma importância para a maioria das operações de banco de dados.
Duas configurações afetam o posicionamento da réplica no Cassandra, que são snitch e a estratégia de replicação. Snitch determina o data center e o rack ao qual um nó pertence. Eles são responsáveis por informar a Cassandra sobre a topologia para manter as coisas eficientes.
A estratégia de replicação é definida no nível do keyspace e há duas delas: NetworkTopologyStrategy e estratégia simples. O primeiro é um rack e data center ciente, enquanto o último não.
Teorema CAP
Todo sistema distribuído funciona com base no teorema CAP. De acordo com este teorema, qualquer sistema distribuído pode entregar corretamente quaisquer duas das três propriedades, Consistência, Disponibilidade e Tolerância à Partição.
No Cassandra, você pode escolher entre disponibilidade e consistência. Isso significa que os dados podem ser altamente consistentes com menor disponibilidade ou altamente disponíveis com baixa consistência.
O conceito de solicitar um número específico de confirmações é chamado de consistência ajustável e você pode aplicá-lo no nível de consulta individual.
Processo de gravação
Nesse processo, os dados são gravados em um log de comentários em um disco e, em seguida, enviados para um nó responsável de acordo com o valor de hash.
Depois disso, os nós gravam dados em uma tabela na memória chamada memtable de onde os dados são gravados em um “sstable” na memória. Em seguida, ele é atualizado para a tabela real.
Se o nó responsável estiver inativo por algum motivo, os dados serão gravados em outro nó.
Saiba mais sobre a Arquitetura Cassandra
Entender a arquitetura do Apache Cassandra ajudaria você a entender como essa solução funciona. Até agora, você também sabe por que Cassandra se destaca na competição e por que é tão popular.
Se você estiver interessado em aprender mais sobre bancos de dados, confira os seguintes recursos:
SQL para ciência de dados: por que SQL, lista de benefícios e comandos
20 perguntas e respostas mais comuns em entrevistas SQL [para calouros]
Curso Online Gratuito de SQL com Certificado [2021]
Por outro lado, se você procura uma experiência de aprendizado personalizada, recomendamos fazer um curso de ciência de dados. Na upGrad, oferecemos um Diploma PG em Ciência de Dados e um Mestrado em Ciência de Dados . Esses cursos ensinarão todas as habilidades necessárias para se tornar um profissional de ciência de dados.
Conclusão
Se você estiver interessado em saber mais sobre o Programa Big Data, confira nosso programa PG Diploma in Software Development Specialization in Big Data, projetado para profissionais que trabalham e fornece mais de 7 estudos de caso e projetos, abrange 14 linguagens e ferramentas de programação, em workshops, mais de 400 horas de aprendizado rigoroso e assistência para colocação de emprego com as principais empresas.
Confira nossos outros Cursos de Engenharia de Software no upGrad.