Apresentação do artigo para conclusão da minha Especialização em Banco de Dados, no IFPI, em 2012. NOTA: alguns emails e links podem não mais existir :(
Distribuição de Dados em Escala Global com Cassandra
1. Distribuição de dados em
escala global com
Cassandra
Mário Sérgio Coelho Marroquim
mariomarroquim@gmail.com
http://blogdomariomarroquim.wordpress.com
2. Sumário
● A Web 2.0, o Big Data e as bases relacionais
● O Casssandra
● Modelo de dados, BigTable
● Arquitetura distribuída, Dynamo
- Redes P2P, Gossip / Scuttlebut
- Distributed Hash Tables, hash consistente
- Distribuição, escrita, leitura e deleção de dados
- Detecção e correção de conflitos / falhas
● Estudo de caso
● Conclusões
8. Dist. de dados em escala global!
● Baixa latência da rede
● Melhor balanceamento de carga
● Alta disponibilidade do serviço
● Maior performance geral
● (...)
19. Cassandra
● Permite configuração do balanço entre
- Escalabilidade
- Disponibilidade
- Consistência / Durabilidade
- Performance
- Tolerância a falhas na rede
● Sem nó coordenador
- Sem SPOF: Single Point Of Failure
● Baixo custo, servidores convencionais
21. BigTable
● Criado pelo Google em 2004
● Sem tabelas ou relacionamentos
● É fácil de particionar e replicar
● Altamente escalável
● Baseado em colunas
32. Gossip / Scuttlebutt
● Cada nó conheçe ao menos outro nó
● Propagação epidêmica
● Remove a necessidade de um registro
centralizado de nós
● Scuttlebutt, menor uso de recursos
- Accrural Failure Detector
35. Distributed Hash Table
● Consistent Hashing
- Cada nó é identificado por uma chave
- Estrutura circular de nós
- Cada linha possui uma chave
- Cada linha é alocada no próximo nó com
chave maior que a sua
38. Consistent Hashing
● Provoca o particionamento das linhas
● Permite prever em qual nó está uma linha
● A remoção ou inclusão de nós afeta apenas
os seus nós vizinhos
42. Replicação
● Evita um ponto único de falha
● Dados são replicados em N - 1 nós
- N = fator de replicação
● Estratégias específicas para
- Apenas um hack
- Todo um data center
- Todo o cluster
● Assíncrona
47. Replicação
● Nenhum nó será responsável por mais
de N - 1 nós (Zookeeper)
● Aumenta a disponibilidade dos dados
● Aumenta a tolerância contra falhas
● Não prejudica a performance geral
49. Escrita e Leitura
● A partir de qualquer nó: descentralização
● Redirecionamento para o nó coordenador
- Protocolo Gossip, Consistent Hashing
● Balanço entre consistência e performance
- Configurável
- Consistência eventual
50. Escrita e Leitura
R
Número mínimo de nós que devem responder
de forma síncrona à uma operação de LEITURA
51. Escrita e Leitura
W
Número mínimo de nós que devem responder de
forma síncrona à uma operação de ESCRITA
56. Quorum, Local Quorum, Each Quorum
● Configuração por operação (leit. e escrita)
● Ao menos N / 2 + 1 réplicas síncronas
● Consideram hacks no mesmo data center e
em outros data centers!
58. Deleção distribuída
● Impossibilidade de propagar deleções
● Adição (e propagação) de uma coluna
chamada tombstone
● Limpeza local em cada nó com o comando
nodetool repair
62. Protocolo anti-entropia
● Baseado em Merkle Trees
● MD5 para cada chave, coluna e família
● Sincronização baseada em timestamp
● Lento, muito uso de CPU e disco
● Uso do comando nodetool repair
● Corrige o que o Read Repair não corrigiu!
65. Projeto Cassandra Hits
● Cluster simples, 2 servidores
● Centenas de escritas e leituras
● Escalabilidade x Performance
https://github.com/mariomarroquim/cassandra-hits
66. Ambiente de teste
● Processadores Intel Xeon 2Ghz, quadcore
● 2Gb de RAM em um servidor e 512Mb de
RAM no outro
● Ubuntu Server 10.04 e 10.10 instalados em
cada servidor, respectivamente
● Java 1.6.31 instalado em ambos
76. Conclusões
● O Cassandra está preparado para os desafios
da Web 2.0 e do fenômeno do Big Data
● Balanço configurável entre escalabilidade,
disponibilidade, consistência e performance
● Escalabilidade incremental e linear
● Provado pelo mercado!
78. Distribuição de dados em
escala global com
Cassandra
Mário Sérgio Coelho Marroquim
mariomarroquim@gmail.com
http://blogdomariomarroquim.wordpress.com