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

Upload: planet-cassandra

Post on 15-Jan-2015

262 views

Category:

Technology


3 download

DESCRIPTION

Material apresentado no QConSP 2014.

TRANSCRIPT

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