SlideShare uma empresa Scribd logo
Distribuição de dados em
    escala global com
         Cassandra
  Mário Sérgio Coelho Marroquim
             mariomarroquim@gmail.com
     http://blogdomariomarroquim.wordpress.com
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
Web 2.0 :)
Big Data
Facebook:   845 mi de usuários
                    
Twitter:   140   mi de tweets por dia

                              LE MA
                        PR OB
Múltiplos
servidores!



                  UÇÃO
              SOL
Múltiplos
data centers!



                  UÇÃO
              SOL
Dist. de dados em escala global!
● Baixa latência da rede
● Melhor balanceamento de carga
● Alta disponibilidade do serviço
● Maior performance geral
● (...)
A rede VAI falhar
Os nós VÃO falhar
Escalabilidade
Disponibilidade
 Consistência
 Performance
Bases de dados relacionais
● Propriedades ACID
  -   Atomicidade
  -   Consistência
  -   Isolamento
  -   Durabilidade
● Normalizações
● 2-phase commit / 2-phase locking
  - Baixa performance
  - Deadlocks                        LE MA
                           PR OB
2-phase commit



                 COORDENADOR



   SERVIDORES
Distribuição de Dados em Escala Global com Cassandra
Banco NoSQL
 Feito em Java
Criado em 2008
ACID
        LE MA
   PR OB
CAP
Consistência | Disponibilidade | Tolerância


                                  UÇÃO
                            SO  L
Distribuição de Dados em Escala Global com Cassandra
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
Modelo de dados
BigTable
● Criado pelo Google em 2004
● Sem tabelas ou relacionamentos
● É fácil de particionar e replicar
● Altamente escalável
● Baseado em colunas
Coluna
Super Coluna
Família de Colunas
Família de Super Colunas
Família de Super Colunas




                           keyspace
Arquitetura Distribuída
Baseada no
   Dynamo
 * Amazon *
Redes P2P
Redes P2P




                         ZA DO
                   TR ALI
             ES CEN
            D
Gossip / Scuttlebutt
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
Gossip / Scuttlebutt




                               EN TE
                          TELIG
                       IN
Distributed Hash Tables
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
Consistent Hashing
Consistent Hashing
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
Particionamento
Particionamento




                          AB E!
                        ÁS
                      ÊJ
                  V OC
Replicação
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
Replicação
Simple Strategy
Desconsidera hacks e datacenters




               Considera apenas a
               distribuição circular dos nós
               no data center!
Old Network Topology Strategy
Considera os hacks em um mesmo data center




               Uma das réplicas é enviada
               para outro data center!
Network Topology Strategy
Considera os hacks em todos os data center




               Permite parametrização de
               detalhes para otimização da rep.
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
Escrita e Leitura
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
Escrita e Leitura




                    R
 Número mínimo de nós que devem responder
de forma síncrona à uma operação de LEITURA
Escrita e Leitura




                  W
Número mínimo de nós que devem responder de
 forma síncrona à uma operação de ESCRITA
Escrita e Leitura




      R+W>N
           Maior consistência
Escrita e Leitura




           W=1
        Escritas nunca irão falhar
Escrita e Leitura




    R e W altos
   Maior consistência, menor performance
Escrita e Leitura




            N alto
    Maior durabilidade, boa performance
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!
Deleção distribuída
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
Detecção e correção de
   conflitos / falhas
Hinted Handoff
● Um nó substitui outro nó indisponível
● Temporário, sincronização posterior
● Baseado no protocolo Gossip
● Rápido, assíncrono
Read Repair
● Sincronização de dados sob demanda
● Uso do campo timestamp
● Rápido, assíncrono
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!
Protocolo anti-entropia

    Nó #1, Chave 13       Nó #2, Chave 13
Estudo de caso
Projeto Cassandra Hits
● Cluster simples, 2 servidores
● Centenas de escritas e leituras
● Escalabilidade x Performance




       https://github.com/mariomarroquim/cassandra-hits
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
Configuração do cluster
Configuração do cluster
Configuração do cluster
Configuração do cluster
Configuração do cluster
Resultados obtidos




      Os 2 nós respondem normalmente às
                  requisições
Resultados obtidos




        Após a queda do segundo nó, a
              velocidade diminui
Resultados obtidos




        Após a volta do segundo nó, a
        velocidade inicial é retomada
Conclusões
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!
Dúvidas?
Distribuição de dados em
    escala global com
         Cassandra
  Mário Sérgio Coelho Marroquim
             mariomarroquim@gmail.com
     http://blogdomariomarroquim.wordpress.com

Mais conteúdo relacionado

PDF
Cassandra - O básico
PDF
DBA Brasil 2.0 NOSql Apache Cassandra para DBAs
PDF
Conhecendo Apache Cassandra @Movile
PDF
TDC2015 - Apache Cassandra no Desenvolvimento de Sistemas de Alto Desempenho
PDF
Cassandra NoSQL JUG Vale 2012
PDF
Como criar infraestrutura de sites para receber milhões de usuários?
PDF
Apresentacao Cassandra
Cassandra - O básico
DBA Brasil 2.0 NOSql Apache Cassandra para DBAs
Conhecendo Apache Cassandra @Movile
TDC2015 - Apache Cassandra no Desenvolvimento de Sistemas de Alto Desempenho
Cassandra NoSQL JUG Vale 2012
Como criar infraestrutura de sites para receber milhões de usuários?
Apresentacao Cassandra

Mais procurados (20)

PDF
Primeiros passos com o Cassandra
PPT
Comparação de desempenho entre SQL e NoSQL
PPTX
Estou seguro com no sql
PDF
Tópicos - Cluster de Balanceamento de Carga com DNS
PDF
QConSP16 - Apache Cassandra Evoluindo Sistemas Distribuídos
PDF
Alta Disponibilidade utilizando Pacemaker e DRBD
PDF
Linux Network Fault Tolerance
ODP
Cluster de Alta Disponibilidade em Linux
PDF
Google File System
PDF
Alta Disponibilidade na Prática utilizando servidores Linux
PDF
Alta Disponibilidade em Linux com Heartbeat e Drbd
PPT
Cluster de Alta disponibilidade
PDF
PDF
Tópicos - Cluster de Balanceamento de Carga
PDF
HA em PostgreSQL: O Elefante disponível para além do infinito
PDF
Alta disponibilidade com PostgreSQL
PPTX
Aula 3 (alta disponibilidade)
PDF
Oficina de Squid: Filtros Inteligentes
PDF
Tópicos - Redes para Cluster de Alta Performance
PPTX
Primeiros passos com o Cassandra
Comparação de desempenho entre SQL e NoSQL
Estou seguro com no sql
Tópicos - Cluster de Balanceamento de Carga com DNS
QConSP16 - Apache Cassandra Evoluindo Sistemas Distribuídos
Alta Disponibilidade utilizando Pacemaker e DRBD
Linux Network Fault Tolerance
Cluster de Alta Disponibilidade em Linux
Google File System
Alta Disponibilidade na Prática utilizando servidores Linux
Alta Disponibilidade em Linux com Heartbeat e Drbd
Cluster de Alta disponibilidade
Tópicos - Cluster de Balanceamento de Carga
HA em PostgreSQL: O Elefante disponível para além do infinito
Alta disponibilidade com PostgreSQL
Aula 3 (alta disponibilidade)
Oficina de Squid: Filtros Inteligentes
Tópicos - Redes para Cluster de Alta Performance
Anúncio

Semelhante a Distribuição de Dados em Escala Global com Cassandra (20)

PDF
Unidade2 projeto lógico da rede
PDF
Em Direção às Redes Programáveis na Internet do Futuro
PDF
Como arquiteturas de dados quebram
PDF
PostgreSQL Tuning: O elefante mais rápido que um leopardo
PDF
Escalabilidade, as modas, (No)SQL
PDF
Alta Disponibilidade na Prática utilizando servidores Linuxes Linux
PDF
Apresentação sobre adaptação de topologia em redes móveis
PDF
Seminario SD - Redes de Alta Performance
PPTX
Camada de enlace parte1
PDF
ClusterizaçãO De AplicaçõEs Php
PDF
Clusterização de Aplicações PHP
PPTX
NoSQL, Base VS ACID e Teorema CAP
PDF
FreeBsd com Alta Disponibilidade
PDF
NoSQL Livre
XLS
Valdir Adorni - Infra and S.A.N Assessment Integration Sample
PDF
Introdução ao P2P
PPTX
Microsoft Azure Storage - Tudo o que você precisa saber sobre armazenamento d...
PDF
Escalabilidade Linear com o Banco de Dados NoSQL Apache Cassandra.
PDF
Rc02-intro-info.pdf
PPTX
Equpamentos Passivos Miguel Ferreira
Unidade2 projeto lógico da rede
Em Direção às Redes Programáveis na Internet do Futuro
Como arquiteturas de dados quebram
PostgreSQL Tuning: O elefante mais rápido que um leopardo
Escalabilidade, as modas, (No)SQL
Alta Disponibilidade na Prática utilizando servidores Linuxes Linux
Apresentação sobre adaptação de topologia em redes móveis
Seminario SD - Redes de Alta Performance
Camada de enlace parte1
ClusterizaçãO De AplicaçõEs Php
Clusterização de Aplicações PHP
NoSQL, Base VS ACID e Teorema CAP
FreeBsd com Alta Disponibilidade
NoSQL Livre
Valdir Adorni - Infra and S.A.N Assessment Integration Sample
Introdução ao P2P
Microsoft Azure Storage - Tudo o que você precisa saber sobre armazenamento d...
Escalabilidade Linear com o Banco de Dados NoSQL Apache Cassandra.
Rc02-intro-info.pdf
Equpamentos Passivos Miguel Ferreira
Anúncio

Mais de Mário Marroquim (6)

PDF
AllViXM - Final presentation
PPTX
Research follow up for my PhD on Immunoinformatics - 2 years
PPTX
Research follow up for my PhD on Immunoinformatics - 1 year
PPTX
AllViXM - Initial presentation
PPT
Ruby On Rails na Credishop
AllViXM - Final presentation
Research follow up for my PhD on Immunoinformatics - 2 years
Research follow up for my PhD on Immunoinformatics - 1 year
AllViXM - Initial presentation
Ruby On Rails na Credishop

Último (11)

PDF
Manejo integrado de pragas na cultura do algodão
PPTX
Viasol Energia Solar -Soluções para geração e economia de energia
PDF
eBook - GUIA DE CONSULTA RAPIDA EM ROTEADORES E SWITCHES CISCO - VOL I.pdf
PPT
Conceitos básicos de Redes Neurais Artificiais
PPTX
Utilizando code blockes por andre backes
PPTX
Proposta de Implementação de uma Rede de Computador Cabeada.pptx
PPTX
Informática Aplicada Informática Aplicada Plano de Ensino - estudo de caso NR...
PDF
Jira Software projetos completos com scrum
PDF
Termos utilizados na designação de relação entre pessoa e uma obra.pdf
PPTX
Eng. Software - pontos essenciais para o início
PPTX
Tipos de servidor em redes de computador.pptx
Manejo integrado de pragas na cultura do algodão
Viasol Energia Solar -Soluções para geração e economia de energia
eBook - GUIA DE CONSULTA RAPIDA EM ROTEADORES E SWITCHES CISCO - VOL I.pdf
Conceitos básicos de Redes Neurais Artificiais
Utilizando code blockes por andre backes
Proposta de Implementação de uma Rede de Computador Cabeada.pptx
Informática Aplicada Informática Aplicada Plano de Ensino - estudo de caso NR...
Jira Software projetos completos com scrum
Termos utilizados na designação de relação entre pessoa e uma obra.pdf
Eng. Software - pontos essenciais para o início
Tipos de servidor em redes de computador.pptx

Distribuição de Dados em Escala Global com Cassandra