avaliando o apache cassandra como cache distribuido no spc brasil - nosqlbr

30
Globalcode – Open4education Apache Cassandra como cache distribuido @julioviegas Globalcoder

Upload: julioviegas

Post on 05-Dec-2014

4.479 views

Category:

Technology


5 download

DESCRIPTION

Nessa apresentacao eu descrevo as necessidades de caching do SPC Brasil e como as capacidades oferecidas pelo Apache Cassandra se aplicam na solucao do problema. Tambem eh descrita a arquitetura, modelo de dados e API de uso do Cassandra. E algumas Cassandras... :)

TRANSCRIPT

Page 1: Avaliando o Apache Cassandra como cache distribuido no SPC Brasil - NoSQLBR

Globalcode – Open4education

Apache Cassandra como cache distribuido

@julioviegasGlobalcoder

Page 2: Avaliando o Apache Cassandra como cache distribuido no SPC Brasil - NoSQLBR

Globalcode – Open4education

~15 anos trabalhando com tecnologia

Instrutor, arquiteto, mentor e desenvolvedor de software e eletronica

Participa de comunidades de usuarios: RSJUG, XP-RS, CEJUG, Open4Education...

Sun Certified Trainer, SCEA 1 e 5, SCDJWS 1.4 e 5, SCWCD 1.4, SCBCD 5, SCJP 5, SCJA 1

Arquiteto de Software e Sistemas no SPC Brasil e Instrutor Globalcode

Palestrante

Page 3: Avaliando o Apache Cassandra como cache distribuido no SPC Brasil - NoSQLBR

Globalcode – Open4education

Agenda

Cache no SPC Brasil

Apache Cassandra

Arquitetura

Modelo de dados

Configuracoes

APIs

Demo

Page 4: Avaliando o Apache Cassandra como cache distribuido no SPC Brasil - NoSQLBR

Globalcode – Open4education

Cache no SPC Brasil

~100 transacoes por segundo(ou mais)

22 processos

Caches mutaveis com replicacao via Ehcache+RMI

Caches imutaveis com Ehcache

Caches isolados usando ConcurrentHashMap

Replicacao Ehcache+RMI desligada, reboot dos Nos para atualizacao

Page 5: Avaliando o Apache Cassandra como cache distribuido no SPC Brasil - NoSQLBR

Globalcode – Open4education

Cache no SPC Brasil

Cache chave+valor

Todo cache eh de leitura intensa

Caches mutaveis sao de escrita ocasional

Tentativas com Terracotta nao foram satisfatorias: instrumentar tudo nao eh legal!

Nao foi possivel utilizar o controle de sessoes compartilhadas web(Jetty) como cache distribuido

CHEGA! NoSQL?

Page 6: Avaliando o Apache Cassandra como cache distribuido no SPC Brasil - NoSQLBR

Globalcode – Open4education

Cache no SPC BrasilCapacidades necessarias

Estabilidade

Disponibilidade

Baixa latencia(uso de memoria, C10K)

Consistencia(ultima versao da informacao)

Persistencia

Tolerancia a perda de dados(replicacao)

Recuperacao de falhas de modo automatico(failover)

Escalabilidade(horizontal)

Cases de sucesso

Livre, aberto, gratis, comunidade

Page 7: Avaliando o Apache Cassandra como cache distribuido no SPC Brasil - NoSQLBR

Globalcode – Open4education

Cassandras

Page 8: Avaliando o Apache Cassandra como cache distribuido no SPC Brasil - NoSQLBR

Globalcode – Open4education

Cache no SPC Brasil

Avaliando NoSQL tipo chave+valorMemcached

Redis

Voldemort

APACHE CASSANDRA! Porem...

Page 9: Avaliando o Apache Cassandra como cache distribuido no SPC Brasil - NoSQLBR

Globalcode – Open4education

Apache Cassandra

Criado pelo Facebook, e usado em parte dele

Baseado no Amazon Dynamo

Usuarios: Digg, Reddit, Cisco Webex, Rackspace, Twitter

Chave+valor

Tipos dinamicos versionados com timestamp

Atomicidade por chave

Configuracao simples

Page 10: Avaliando o Apache Cassandra como cache distribuido no SPC Brasil - NoSQLBR

Globalcode – Open4education

Arquitetura

MySQL: muito IO imprevisivel!

Solucoes baseadas em arquivos precisam de lock!

Armazenamento descentralizado

Tolerante a falhas

Elastico: adicione mais servidores a quente

Escala horizontalmente

Page 11: Avaliando o Apache Cassandra como cache distribuido no SPC Brasil - NoSQLBR

Globalcode – Open4education

Arquitetura

Disponibilidade e tolerancia a perda de particoes sobre consistencia(CAP)

Consistencia configuravel

Tradeoff: Consistencia versus Latencia

Particionamento e replicacao baseado no Dynamo(Amazon) e modelo de dados estruturado(ColumnFamily) baseado no Bigtable(Google)

Page 12: Avaliando o Apache Cassandra como cache distribuido no SPC Brasil - NoSQLBR

Globalcode – Open4education

Cassandras

Page 13: Avaliando o Apache Cassandra como cache distribuido no SPC Brasil - NoSQLBR

Globalcode – Open4education

Arquitetura

Administracao minima

Sem ponto unico de falha

Particionador configuravel

Replicacao configuravel: quantidade, rack e site “aware”

Gossip, messaging, bootstrap, compaction

Memtable

Monitoracao e ferramentas de administracao

Commit log

Page 14: Avaliando o Apache Cassandra como cache distribuido no SPC Brasil - NoSQLBR

Globalcode – Open4education

Arquitetura

Escritas: quorum(maioria) ou assincronas(1), sem leituras, posicionamento, rapida(0.12ms vs 300ms do MySQL), atomica, sempre garantida

Leitura: memtable e +RAM, mais lenta que a escrita(15ms vs 350ms do MySQL), escala a bilhoes de linhas

Consistencia: 1, quorum, all. Cuidado com a latencia!

Page 15: Avaliando o Apache Cassandra como cache distribuido no SPC Brasil - NoSQLBR

Globalcode – Open4education

Modelo de dados

Keyspace: grupo de chaves ou banco/schema

Column: chave e valor ou tabela de uma coluna e linha

Page 16: Avaliando o Apache Cassandra como cache distribuido no SPC Brasil - NoSQLBR

Globalcode – Open4education

Modelo de dados

SuperColumn: mapa ou tabela de n colunas e uma linha apenas

Page 17: Avaliando o Apache Cassandra como cache distribuido no SPC Brasil - NoSQLBR

Globalcode – Open4education

Cassandras

Page 18: Avaliando o Apache Cassandra como cache distribuido no SPC Brasil - NoSQLBR

Globalcode – Open4education

Modelo de dados

ColumnFamily: lista de mapas ou tabela

Page 19: Avaliando o Apache Cassandra como cache distribuido no SPC Brasil - NoSQLBR

Globalcode – Open4education

Modelo de dados

SuperColumnFamily: grupos de SuperColumn usando chave

Page 20: Avaliando o Apache Cassandra como cache distribuido no SPC Brasil - NoSQLBR

Globalcode – Open4education

Modelo de dados

Configuravel em storage-conf.xml

Ordenacao eh feita na insercao, usando o nome da coluna

ColumnFamily CompareWith

SuperColumn CompareSubcolumnsWith

Tipos: BytesType, UTF8Type, LexicalUUIDType, TimeUUIDType, AsciiType, LongType

Page 21: Avaliando o Apache Cassandra como cache distribuido no SPC Brasil - NoSQLBR

Globalcode – Open4education

Configuracoes

$CASSANDRA_HOME/conf/storage-conf.xml

ClusterName

AutoBootstrap

Keyspace– ColumnFamily– ReplicaPlacementStrategy & EndPointSnitch:

Unaware, Rack ou Datacenter– ReplicationFactor

Page 22: Avaliando o Apache Cassandra como cache distribuido no SPC Brasil - NoSQLBR

Globalcode – Open4education

Cassandras

Page 23: Avaliando o Apache Cassandra como cache distribuido no SPC Brasil - NoSQLBR

Globalcode – Open4education

Configuracoes

Autenticador

Particionador: Random por padrao ou ordenado

InitialToken: armazena chaves com token similar

CommitLogDirectory

DataFileDirectory

Seed

ListenAddress/StoragePort

ThriftAddress/ThriftPort

Outras opcoes avancadas de tunning...

Page 24: Avaliando o Apache Cassandra como cache distribuido no SPC Brasil - NoSQLBR

Globalcode – Open4education

API

Apache Thrift

ConsistencyLevel: ZERO, ANY, ONE, QUORUM, ALL

ColumnOrSuperColumn

Column

SuperColumn

ColumnPath

ColumnParent

Page 25: Avaliando o Apache Cassandra como cache distribuido no SPC Brasil - NoSQLBR

Globalcode – Open4education

API

SlicePredicate

SliceRange

KeyRange

KeySlice

Mutation

Deletion

Page 26: Avaliando o Apache Cassandra como cache distribuido no SPC Brasil - NoSQLBR

Globalcode – Open4education

API

AuthenticationRequest

NotFoundException

InvalidRequestException

UnavailableException

TimedOutException

TapplicationException

AuthenticationException/AuthorizationException

Page 27: Avaliando o Apache Cassandra como cache distribuido no SPC Brasil - NoSQLBR

Globalcode – Open4education

Cassandras

Page 28: Avaliando o Apache Cassandra como cache distribuido no SPC Brasil - NoSQLBR

Globalcode – Open4education

API

get / get_slice / multiget_slice / get_count / get_range_slices

insert / batch_mutate / remove

describe_keyspaces / describe_cluster_name / describe_version / describe_ring / describe_keyspace

Page 29: Avaliando o Apache Cassandra como cache distribuido no SPC Brasil - NoSQLBR

Globalcode – Open4education

Demo

Page 30: Avaliando o Apache Cassandra como cache distribuido no SPC Brasil - NoSQLBR

Globalcode – Open4education

Obrigado!