QConSP 2014 - Cassandra no Desenvolvimento de Aplicações para serviços Móveis

26
Cassandra no Desenvolvimento de Aplicações para serviços Móveis Cassandra no Desenvolvimento de Aplicações para serviços Móveis por J.P. Eiti Kimura

description

Material apresentado no QConSP 2014. Overview sobre o NoSQL Cassandra e como aplicá-lo no desenvolvimento de serviços críticos de alto desempenho para aplicações móveis.

Transcript of QConSP 2014 - Cassandra no Desenvolvimento de Aplicações para serviços Móveis

Page 1: QConSP 2014 - Cassandra no Desenvolvimento  de Aplicações para  serviços Móveis

Cassandra no Desenvolvimento de Aplicações para serviços Móveis

Cassandra no Desenvolvimento de Aplicações para serviços Móveis

por J.P. Eiti Kimura

Page 2: QConSP 2014 - Cassandra no Desenvolvimento  de Aplicações para  serviços Móveis

Apache CassandraO que é? Princípio de FuncionamentoModelo de dados

Aplicação do CassandraRequisitos do serviçoArquitetura da PlataformaCluster de Cassandra

Resultados

Page 3: QConSP 2014 - Cassandra no Desenvolvimento  de Aplicações para  serviços Móveis

O que é?Uma definição em 50 palavras ou menos

“Apache Cassandra é um banco de dados não relacional orientado a colunas, distribuído, descentralizado, escalável, de alta disponibilidade, tolerante a falhas, com design baseado no Amazon's Dynamo e o modelo de dados no BigTable do Google. Criado pelo Facebook e hoje utilizado em grandes empresas como Netflix, eBay, Instagram e outras”

Page 4: QConSP 2014 - Cassandra no Desenvolvimento  de Aplicações para  serviços Móveis

Arquitetura e Funcionamento

Page 5: QConSP 2014 - Cassandra no Desenvolvimento  de Aplicações para  serviços Móveis

Arquitetura e Funcionamento

● Desenvolvido em Java: http://cassandra.apache.org/

● Descentralizado (não há SPOF)

● Utiliza o Protocolo Peer-to-Peer (ao invés do modelo master/slave)

● Escalabilidade Elástica

Page 6: QConSP 2014 - Cassandra no Desenvolvimento  de Aplicações para  serviços Móveis

Arquitetura e Funcionamento - Teorema CAP

Cassandra tem maior foco em disponibilidade e particionamento.

O teorema indica que é possível obter somente duas dessas propriedades

Page 7: QConSP 2014 - Cassandra no Desenvolvimento  de Aplicações para  serviços Móveis

Eventually Consistency

● Consistência Eventual: a consistência ocorrerá ao longo do tempo, e eventualmente todos os clientes acessarão a mesma informação em um dado instante.

● Forma de consistência propagada. Ex.: DNS

Page 8: QConSP 2014 - Cassandra no Desenvolvimento  de Aplicações para  serviços Móveis

Modelo de dados

Algumas Equivalências

Page 9: QConSP 2014 - Cassandra no Desenvolvimento  de Aplicações para  serviços Móveis

Modelo de dados

Column Family (CF)

Super Column Family (SCF)

Page 10: QConSP 2014 - Cassandra no Desenvolvimento  de Aplicações para  serviços Móveis

Modelo de dados

Composite Columns

CREATE TABLE timeline (

user_id varchar,

tweet_id uuid,

author varchar,

body varchar,

PRIMARY KEY (user_id, tweet_id)

);

Page 11: QConSP 2014 - Cassandra no Desenvolvimento  de Aplicações para  serviços Móveis

Mais de 20 milhões de pessoas usando nossos

serviços todo mês.

A Movile é líder em desenvolvimento de

plataformas de comércio e conteúdo móvel na

América Latina. Com produtos para celulares,

smartphones e tablets, nosso trabalho deixa a

vida das pessoas melhor e mais divertida

Movile

Page 12: QConSP 2014 - Cassandra no Desenvolvimento  de Aplicações para  serviços Móveis

● Alta disponibilidade: o serviço nunca pode

parar

● Plataforma crítica

● Alto desempenho: deve responder em

alguns milissegundos

● Sistema Seguro e confiável

Requisitos da Plataforma

Page 13: QConSP 2014 - Cassandra no Desenvolvimento  de Aplicações para  serviços Móveis

Legado...

● cobrança de usuários nas operadoras

● controle de assinaturas de produtos

● base de broadcast de mensagens

Page 14: QConSP 2014 - Cassandra no Desenvolvimento  de Aplicações para  serviços Móveis

Escalar Verticalmente

● sobrecarga na API de serviço

● Investimento em hardware mais robusto

Page 15: QConSP 2014 - Cassandra no Desenvolvimento  de Aplicações para  serviços Móveis

Alta Utilização

● Sobrecarga no banco de dados relacional

● Sobrecarga nas API’s de serviço (efeito cascata)

Page 16: QConSP 2014 - Cassandra no Desenvolvimento  de Aplicações para  serviços Móveis

Ass

inat

uras

Tempo

2006 2014

Aumento de volume ao longo do tempo

Page 17: QConSP 2014 - Cassandra no Desenvolvimento  de Aplicações para  serviços Móveis

Volume de Dados

~ Assinaturas: 56,4 milhões~ Assinantes: 37,1 milhões

~ 11K leituras/segundo~ 4,2 escritas/segundo

Page 18: QConSP 2014 - Cassandra no Desenvolvimento  de Aplicações para  serviços Móveis
Page 19: QConSP 2014 - Cassandra no Desenvolvimento  de Aplicações para  serviços Móveis

SUBSCRIPTION -> Column Family Name

‘USER_ID’ : string -> Row Key: value-type

carrier_id: int -> ColumnName: value-type

subs_id_1: byte[] -> Dynamic ColumnName: value-type

subs_id_2: byte[] -> Dynamic ColumnName: value-type

Cassandra Data Model

551900001111carrier_id SID-9217436 SID-8854522 SID-55214

5 [0110011001] [01100110] [01100110]

551900002222carrier_id SID-555111 SID-444222 SID-333666

1 [0110011001] [01100110] [01100110]

Estrutura da Informação

Exemplo de dados

Page 20: QConSP 2014 - Cassandra no Desenvolvimento  de Aplicações para  serviços Móveis

Nova arquitetura

Page 21: QConSP 2014 - Cassandra no Desenvolvimento  de Aplicações para  serviços Móveis

● Bom desempenho de leitura

● Excelente desempenho em escrita

● Throughput de leitura e escrita altamente escalável

● Suporta geo-distribuição de informação

● Tolerante a falhas

● Controle fino do nível de consistência por cliente

● Integridade de dados com checks e repairs

● Queremos: FOSS (Free and Open Source Software) +

Suporte

Porque Cassandra?

Page 22: QConSP 2014 - Cassandra no Desenvolvimento  de Aplicações para  serviços Móveis

Node 1 :load_avg: 0.08write_latency(us): 1057.2read_latency(us): 1113.0

Node 2 :load_avg: 0.16write_latency(us): 1026.6read_latency(us): 1637.8

Node 3 :load_avg: 0.16write_latency(us): 855.5read_latency(us): 851.7

Node 4 :load_avg: 0.22write_latency(us): 1117.7read_latency(us): 871.5

Node 5 :load_avg: 1.6write_latency(us): 1278.1read_latency(us): 1252.5

Estatísticas de Desempenho

Read Latency AVG: ~ 1144 usWrite Latency AVG: ~ 1066 us

Page 23: QConSP 2014 - Cassandra no Desenvolvimento  de Aplicações para  serviços Móveis

Resultados: operações ao longo do dia

reads per minutewrites per minute

Page 24: QConSP 2014 - Cassandra no Desenvolvimento  de Aplicações para  serviços Móveis

Benchmark

Benchmarking Top NoSQL Databases, White Paper , DATASTAX CORPORATION, FEBRUARY 2013

Page 25: QConSP 2014 - Cassandra no Desenvolvimento  de Aplicações para  serviços Móveis

Benchmark

Benchmarking Top NoSQL Databases, White Paper , DATASTAX CORPORATION, FEBRUARY 2013

Page 26: QConSP 2014 - Cassandra no Desenvolvimento  de Aplicações para  serviços Móveis

[email protected]

@eitikimura

facebook.com/eiti.kimura

flickr.com/eitikimura

Perguntas