Apache Cassandra como
   cache distribuido
       @julioviegas
        Globalcoder


                      Globalcode – Op...
Palestrante
 ~15 anos trabalhando com tecnologia
 Instrutor, arquiteto, mentor e desenvolvedor de
 software e eletronica
 ...
Agenda
 Cache no SPC Brasil
 Apache Cassandra
 Arquitetura
 Modelo de dados
 Configuracoes
 APIs
 Demo



                ...
Cache no SPC Brasil
 ~100 transacoes por segundo(ou mais)
 22 processos
 Caches mutaveis com replicacao via Ehcache+RMI
 C...
Cache no SPC Brasil
 Cache chave+valor
 Todo cache eh de leitura intensa
 Caches mutaveis sao de escrita ocasional
 Tentat...
Cache no SPC Brasil
 Capacidades necessarias
   Estabilidade
   Disponibilidade
   Baixa latencia(uso de memoria, C10K)
  ...
Cassandras




             Globalcode – Open4education
Cache no SPC Brasil
 Avaliando NoSQL tipo chave+valor
   Memcached
   Redis
   Voldemort

   APACHE CASSANDRA! Porem...


...
Apache Cassandra
 Criado pelo Facebook, e usado em parte dele
 Baseado no Amazon Dynamo
 Usuarios: Digg, Reddit, Cisco Web...
Arquitetura
 MySQL: muito IO imprevisivel!
 Solucoes baseadas em arquivos precisam de lock!

 Armazenamento descentralizad...
Arquitetura
 Disponibilidade e tolerancia a perda de particoes
 sobre consistencia(CAP)
 Consistencia configuravel
 Tradeo...
Cassandras




             Globalcode – Open4education
Arquitetura
 Administracao minima
 Sem ponto unico de falha
 Particionador configuravel
 Replicacao configuravel: quantida...
Arquitetura
 Escritas: quorum(maioria) ou assincronas(1), sem
 leituras, posicionamento, rapida(0.12ms vs 300ms
 do MySQL)...
Modelo de dados
 Keyspace: grupo de chaves ou banco/schema
 Column: chave e valor ou tabela de uma coluna e
 linha




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




                                 Globalc...
Cassandras




             Globalcode – Open4education
Modelo de dados
 ColumnFamily: lista de mapas ou tabela




                                   Globalcode – Open4education
Modelo de dados
 SuperColumnFamily: grupos de SuperColumn
 usando chave




                                Globalcode – O...
Modelo de dados
 Configuravel em storage-conf.xml

 Ordenacao eh feita na insercao, usando o nome da
 coluna
 ColumnFamily...
Configuracoes
 $CASSANDRA_HOME/conf/storage-conf.xml
 ClusterName
 AutoBootstrap
 Keyspace
  – ColumnFamily
  – ReplicaPla...
Cassandras




             Globalcode – Open4education
Configuracoes
 Autenticador
 Particionador: Random por padrao ou ordenado
 InitialToken: armazena chaves com token similar...
API
 Apache Thrift
 ConsistencyLevel: ZERO, ANY, ONE, QUORUM,
 ALL

 ColumnOrSuperColumn
 Column
 SuperColumn
 ColumnPath
...
API
 SlicePredicate
 SliceRange
 KeyRange
 KeySlice

 Mutation
 Deletion



                  Globalcode – Open4education
API
 AuthenticationRequest

 NotFoundException
 InvalidRequestException
 UnavailableException
 TimedOutException
 Tapplica...
Cassandras




             Globalcode – Open4education
API
 get / get_slice / multiget_slice / get_count /
 get_range_slices
 insert / batch_mutate / remove
 describe_keyspaces ...
Demo




       Globalcode – Open4education
Obrigado!




            Globalcode – Open4education
Upcoming SlideShare
Loading in...5
×

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

3,091

Published on

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... :)

Published in: Technology, Travel
0 Comments
2 Likes
Statistics
Notes
  • Be the first to comment

No Downloads
Views
Total Views
3,091
On Slideshare
0
From Embeds
0
Number of Embeds
0
Actions
Shares
0
Downloads
61
Comments
0
Likes
2
Embeds 0
No embeds

No notes for slide

Transcript of "Avaliando o Apache Cassandra como cache distribuido no SPC Brasil - NoSQLBR"

  1. 1. Apache Cassandra como cache distribuido @julioviegas Globalcoder Globalcode – Open4education
  2. 2. Palestrante ~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 Globalcode – Open4education
  3. 3. Agenda Cache no SPC Brasil Apache Cassandra Arquitetura Modelo de dados Configuracoes APIs Demo Globalcode – Open4education
  4. 4. 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 Globalcode – Open4education
  5. 5. 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? Globalcode – Open4education
  6. 6. Cache no SPC Brasil Capacidades 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 Globalcode – Open4education
  7. 7. Cassandras Globalcode – Open4education
  8. 8. Cache no SPC Brasil Avaliando NoSQL tipo chave+valor Memcached Redis Voldemort APACHE CASSANDRA! Porem... Globalcode – Open4education
  9. 9. 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 Globalcode – Open4education
  10. 10. 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 Globalcode – Open4education
  11. 11. 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) Globalcode – Open4education
  12. 12. Cassandras Globalcode – Open4education
  13. 13. 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 Globalcode – Open4education
  14. 14. 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! Globalcode – Open4education
  15. 15. Modelo de dados Keyspace: grupo de chaves ou banco/schema Column: chave e valor ou tabela de uma coluna e linha Globalcode – Open4education
  16. 16. Modelo de dados SuperColumn: mapa ou tabela de n colunas e uma linha apenas Globalcode – Open4education
  17. 17. Cassandras Globalcode – Open4education
  18. 18. Modelo de dados ColumnFamily: lista de mapas ou tabela Globalcode – Open4education
  19. 19. Modelo de dados SuperColumnFamily: grupos de SuperColumn usando chave Globalcode – Open4education
  20. 20. 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 Globalcode – Open4education
  21. 21. Configuracoes $CASSANDRA_HOME/conf/storage-conf.xml ClusterName AutoBootstrap Keyspace – ColumnFamily – ReplicaPlacementStrategy & EndPointSnitch: Unaware, Rack ou Datacenter – ReplicationFactor Globalcode – Open4education
  22. 22. Cassandras Globalcode – Open4education
  23. 23. 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... Globalcode – Open4education
  24. 24. API Apache Thrift ConsistencyLevel: ZERO, ANY, ONE, QUORUM, ALL ColumnOrSuperColumn Column SuperColumn ColumnPath ColumnParent Globalcode – Open4education
  25. 25. API SlicePredicate SliceRange KeyRange KeySlice Mutation Deletion Globalcode – Open4education
  26. 26. API AuthenticationRequest NotFoundException InvalidRequestException UnavailableException TimedOutException TapplicationException AuthenticationException/AuthorizationException Globalcode – Open4education
  27. 27. Cassandras Globalcode – Open4education
  28. 28. 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 Globalcode – Open4education
  29. 29. Demo Globalcode – Open4education
  30. 30. Obrigado! Globalcode – Open4education
  1. Gostou de algum slide específico?

    Recortar slides é uma maneira fácil de colecionar informações para acessar mais tarde.

×