qconsp 2014 - cassandra no desenvolvimento de aplicações para serviços móveis

Post on 15-Jan-2015

262 Views

Category:

Technology

3 Downloads

Preview:

Click to see full reader

DESCRIPTION

Material apresentado no QConSP 2014.

TRANSCRIPT

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

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

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

Resultados

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”

Arquitetura e Funcionamento

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

Arquitetura e Funcionamento - Teorema CAP

Cassandra tem maior foco em disponibilidade e particionamento.

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

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

Modelo de dados

Algumas Equivalências

Modelo de dados

Column Family (CF)

Super Column Family (SCF)

Modelo de dados

Composite Columns

CREATE TABLE timeline (

user_id varchar,

tweet_id uuid,

author varchar,

body varchar,

PRIMARY KEY (user_id, tweet_id)

);

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

● 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

Legado...

● cobrança de usuários nas operadoras

● controle de assinaturas de produtos

● base de broadcast de mensagens

Escalar Verticalmente

● sobrecarga na API de serviço

● Investimento em hardware mais robusto

Alta Utilização

● Sobrecarga no banco de dados relacional

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

Ass

inat

uras

Tempo

2006 2014

Aumento de volume ao longo do tempo

Volume de Dados

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

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

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

Nova arquitetura

● 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?

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

Resultados: operações ao longo do dia

reads per minutewrites per minute

Benchmark

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

Benchmark

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

eiti.kimura@movile.com

@eitikimura

facebook.com/eiti.kimura

flickr.com/eitikimura

Perguntas

top related