conhecendo apache cassandra @movile

Post on 06-Aug-2015

377 Views

Category:

Technology

5 Downloads

Preview:

Click to see full reader

TRANSCRIPT

1

Conhecendo Apache Cassandra

@Movile

Eiti Kimura 2015

2

Quem sou eu… Cassandra MVP

3

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

4

A Movile cria apps para todas as plataformas móveis.

5

Playkids

6

IFood

7

Apache CassandraO que é?Um pouco de História (NoSQL)Arquitetura Princípio de FuncionamentoFluxo de Leitura e EscritaModelo de Distribuição de Dados, Geo distribuiçãoModelo de dados, Demonstração CQLUm programa para acesso a dados em Java

Aplicação do CassandraRequisitos do serviçoArquitetura da PlataformaDicas de Uso

Sumário

8

O que é?

“Apache Cassandra é um banco de dados não relacional (nosql) orientado a colunas, distribuído, escalável, de alta disponibilidade, tolerante a falhas”

[The Definitive Guide, Eben Hewitt, 2010]

9

NoSQL

NoSQL "Not Only SQL" são bancos de dados não relacionais que não se baseiam diretamente no SQL, a linguagem mais comum dos bancos de dados relacionais.

Em geral não suportam operações de junções de dados (joins)

NoSQL armazenam os dados com técnicas que visam atender a requisitos de escalabilidade.

É importante entender que o intuito não é eliminar bancos de dados relacionais, mas oferecer uma alternativa.

10

História

11

Herança do BigTable

● Modelo de dados colunar

● Armazenamento em SSTable

● MemTable (buffer e ordenação)

● Arquivos SSTable imutáveis

● Compactação de dados

http://pt.slideshare.net/geminimobile/bigtable-4820829

12

Herança do Dynamo

● Consistent Hash

● Protocolo Gossip

● Vector Clock

● Hinted Handoff

● Read repair

http://www.allthingsdistributed.com/files/amazon-dynamo-sosp2007.pdf

13

Arquitetura e Funcionamento Teorema CAP

Cassandra tem maior foco em disponibilidade e particionamento.

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

14

Cuidado!Não é SQL

Características Principais

15

Descentralizado

Tolerante a falhas, sem ponto único central de controle, não existe um nó “master”

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

16

Escalabilidade Elástica

A taxa de transferência (throughput) de operações de leitura e escrita aumenta linearmente a medida que novas máquinas são adicionadas

17

Modelo Transacional

A C I Dtomicidade

oncistência

solamento

urabilidade

Cassandra não usa transações ACID com nos RDBMS com rollback ou mecanismos de lock.

Oference controle de atomicidade e isolamento no contexto de linha (row-level)

18

Cassandra: Atomicidade

Escrita é atômica no contexto da partição (row). Atualização ou Inserção de colunas são tratadas como uma operação de write.

Utiliza timestamps para determinar o valor mais atualizado de uma coluna (Last Wins)

19

Cassandra: Consistência

A consistência e disponibilidade podem ser ajustadas (tunable) e podem ser fortes, conforme o teorema CAP.

Não há lock ou consistência transacional quando múltiplas linhas ou tabelas são alteradas concorrentemente. O ajuste da consistência e disponibilidade oferece a possibilidade de tolerância a partição.

Cassandra >= 2.0, micro transações (lighweight transactions) use em menos de 1% de suas transações

20

Controle de Consistência

Escrita

Leitura

21

Cassandra: Isolamento

Full row-level isolation: Escrita a uma linha é totalmente isolada ao cliente que está executando a escrita e não é visível a nenhum outro cliente até que a operação complete

22

Cassandra: Durabilidade

As escritas são duráveis: Todas as escritas aos nós são registrados em memória e em disco antes de retornar como uma operação completa (acknowledge)

23

Consistência Eventual

● 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

24

Fluxo de Escrita (Write)

25

Distribuição dos dados (Consistent Hash)

Consistent Hash permite distribuir a informação pelos nós do cluster minimizando a reorganização caso um nó seja adicionado ou removido.

Cassandra atribui um valor hash para cada chave de partição

26

27

Fluxo de Leitura (Read)

28

O que é um cluster Cassandra?

Conjunto Ponto-a-Ponto de Nós● Node: uma instância de Cassandra● Rack: conjunto lógico de nós● Datacenter: conjunto lógico de racks● Cluster: conjunto total de nós que mapeiam um token-ring completo

29

Arquitetura e Funcionamento

Fluxo de Dados

1. A escrita/leitura pode ocorrer em qualquer nó

2. O coordenador replica/obtém a informação para/de diferentes nós e zonas

3. Coordenador retorna o ACK para o cliente

4. Cliente pode escolher por esperar a confirmação de um nó, um grupo de nós (quorum) ou todos os nós do cluster antes de receber o ACK

30

Sem Distribuição Geográfica de Informação

31

Com Distribuição Geográfica de Informação

32

INTRODUÇÃO AO MODELO DE DADOS

33

Cassandra: Modelagem de Dados

Modelagem de dados é um processo que envolve a identificação de entidades, ou itens para serem armazenados, assim como o relacionamento entre essas entidades.

Adicionalmente envolve a identificação de padrões de acesso aos dados e consultas que serão realizadas.

No Cassandra as consultas são a chave para organização dos dados (query-driven). Por ser um banco distribuído, eficiência de escrita e leitura é obtida quando os dados estão agrupados em um mesmo nó (partição).

34

Introdução: Modelo de Dados

Modelo Relacional

DadosAPLICAÇÃO

MODELO

DADOS

35

Modelo de Dados: Cassandra

Dados

MODELOS

DADOS

APLICAÇÃO

36

37

Introdução ao Modelo de Dados

38

Exemplo: Serviço de Música

39

Exemplo: Serviço de Música

Identificar Padrões de Acesso

40

Exemplo: Serviço de Música

Atenção: Diferentemente dos banco de dados relacionais, onde a modelagem está baseada no relacionamento entre as entidades, no Cassandra, temos uma tabela por consulta, replicando os dados ao longo das tabelas envolvidas, processo conhecido como desnormalização!

41

CQL

● Cassandra Query Language, é a linguagem de acesso aos dados do Cassandra.

● CQL v3 oferece um modelo muito próximo ao SQL no tocante ao armazenamento de dados em forma de tabelas que contém linhas e colunas.

● Não existe operações de junção (joins) entre tabelas, não existe integridade referencial, não existe chave estrangeira, não possui locks ou transações como nos bancos de dados relacionais.

42

CQL

● Particionamento de dados por chave

● Tipos de dados complexos (objeto do usuário)

● Tipo de dados multi-valorados

○ Set

○ List

○ Map

● Colunas do tipo contador

43

CQL: Estrutura de armazenamento de dados

Column Name

... Column Name

Column Value ... Column Value

Timestamp ... Timestamp

TTL ... TTL

Row Key

2 billhões

● Modelo trazido do Bigtable do Google *

● Uma chave (row key) e muitas colunas

● Colunas de controle: Timestamp, TTL

● Nome da coluna ordenado (UTF8, Int, Timestamp, etc...)

* http://research.google.com/archive/bigtable.html

44

CQL Exemplo

CREATE TABLE emp ( empID int, deptID int, first_name varchar, last_name varchar, PRIMARY KEY (empID, deptID));

Definição do nome da tabela

Definição do nome e tipo da

coluna

Campos que compõe a chave

primária e particionamento

45

CQL DEMO

46

http://planetcassandra.org/tente-cassandra/

47

http://planetcassandra.org/client-drivers-tools/

DataStax C# / .NET Client Driver for Apache CassandraA C# client driver for Apache Cassandra

DataStax Java Client Driver for Apache CassandraA Java client driver for Apache Cassandra. This driver works exclusively with CQL3

DataStax C++ Client Driver for Apache CassandraDataStax Python Driver for Apache CassandraDataStax Node.js Client Driver for Apache CassandraDataStax Ruby Client Driver for Apache CassandraDataStax PHP Client Driver for Apache Cassandra (Alpha)

48

https://github.com/pcmanus/ccm

Cassandra Cluster Manager: bilbioteca/script para criar, implantar e remover um cluster de Apache Cassandra em sua máquina local.

# ccm create -v 2.0.14 --nodes 3 --start clusterName

# ccm statusCluster: 'clusterName'--------------node1: UPnode3: UPnode2: UP

# ccm node1 status# ccm node1 stop# ccm node2 start

#ccm stop#ccm start

49

https://github.com/eiti-kimura-movile/CassandraMusicService.git

Aplicação de Exemplo usando Java

JAVA DRIVER DEMO

50

Modelagem de dados com Cassandra: Resumo

• Não tenha medo da desnormalização

• Desnormalizar: escritas são baratas, leituras mais

custosas, modele e organize seus dados no melhor

formato para recuperá-los

• Há várias formas de modelar uma solução, não

existe forma certa ou errada

• Modelagem guiada por consultas (Query)

51

Caso de Uso Movile

52

Subscription & Billing Platform a.k.a SBS

• API de serviço REST

• Responsável por gerenciar as assinaturas

dos usuários

• Efetua a cobrança dos usuários nas operadoras

• Renova as assinaturas dos usuários periodicamente

• Nunca pode parar

• Deve ter alto desempenho

53

60,2 milhões de assinaturas

50 request/s

★ subscribe★ cancel★ profile

Plataforma em números

95,5 milhões transações com as

operadoras

54

Arquitetura básica de serviço

55

Arquitetura básica de serviço com alto uso

● Instâncias de serviços escaláveis● Alta disponibilidade

56

Arquitetura básica de serviço com carga Intensa

● Tempo de resposta

muito alto

● Capacidade de

processamento

(throughput) reduzida

● Baixa disponibilidade,

ponto único de falha

● Pior que parar é

funcionar algumas

vezes

57

• Problemas de

desempenho

resolvidos

• Melhora de

disponibilidade

• Não existe mais

ponto único de falha

•Aumento da

capacidade de

processamento de

transações

C*

Solução Distribuída

58

Total de Operações por dia

tempo

num

. ope

raçõ

es

> 1,3 Billhões de Operações ao dia

59http://techblog.netflix.com/2011/11/benchmarking-cassandra-scalability-on.html

60

# Dicas

Dica 1#: usar quando a disponibilidade é um fator importante, onde exista um alto volume de dados, com número grande de operações de escrita.

Dica 2#: entenda os requisitos da aplicação, identifique os padrões de acesso a informação.

Dica #3: pense em desnormalização de dados, mas com cuidado…

Dica #4: usar quando desempenho é um fator importante para a aplicação

61

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

62

eiti.kimura@movile.com

@eitikimura

facebook.com/eiti.kimura

flickr.com/eitikimura

Perguntas

talentos@movile.comhttp://www.movile.com/pt/carreiras

eiti-kimura-movile

eitikimura

top related