Apache Cassandra como
   cache distribuido
       @julioviegas
        Globalcoder


                      Globalcode – Open4education
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
Agenda
 Cache no SPC Brasil
 Apache Cassandra
 Arquitetura
 Modelo de dados
 Configuracoes
 APIs
 Demo



                       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



                                 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?

                                    Globalcode – Open4education
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
Cassandras




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

   APACHE CASSANDRA! Porem...




                                    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


                                  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



                                    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)

                                     Globalcode – Open4education
Cassandras




             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

                                     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!


                                    Globalcode – Open4education
Modelo de dados
 Keyspace: grupo de chaves ou banco/schema
 Column: chave e valor ou tabela de uma coluna e
 linha




                                   Globalcode – Open4education
Modelo de dados
 SuperColumn: mapa ou tabela de n colunas e uma
 linha apenas




                                 Globalcode – Open4education
Cassandras




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




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




                                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


                                    Globalcode – Open4education
Configuracoes
 $CASSANDRA_HOME/conf/storage-conf.xml
 ClusterName
 AutoBootstrap
 Keyspace
  – ColumnFamily
  – ReplicaPlacementStrategy & EndPointSnitch:
    Unaware, Rack ou Datacenter
  – ReplicationFactor


                                  Globalcode – Open4education
Cassandras




             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...
                                   Globalcode – Open4education
API
 Apache Thrift
 ConsistencyLevel: ZERO, ANY, ONE, QUORUM,
 ALL

 ColumnOrSuperColumn
 Column
 SuperColumn
 ColumnPath
 ColumnParent

                               Globalcode – Open4education
API
 SlicePredicate
 SliceRange
 KeyRange
 KeySlice

 Mutation
 Deletion



                  Globalcode – Open4education
API
 AuthenticationRequest

 NotFoundException
 InvalidRequestException
 UnavailableException
 TimedOutException
 TapplicationException
 AuthenticationException/AuthorizationException


                                   Globalcode – Open4education
Cassandras




             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




                                    Globalcode – Open4education
Demo




       Globalcode – Open4education
Obrigado!




            Globalcode – Open4education

Mais conteúdo relacionado

PDF
Cloud computing & Spring Framework
PDF
NoSQL Livre
PDF
Alta Performance com Java
PPTX
Django no AWS
PDF
Usando a nuvem da AWS para Backup e Disaster Recovery
PDF
Spring + Cloud Computing
PPTX
Arquitetura Web no AWS
PPT
PHP FrameWARks - CakePHP
Cloud computing & Spring Framework
NoSQL Livre
Alta Performance com Java
Django no AWS
Usando a nuvem da AWS para Backup e Disaster Recovery
Spring + Cloud Computing
Arquitetura Web no AWS
PHP FrameWARks - CakePHP

Mais procurados (6)

PDF
Google App Engine e PHP
PDF
Conheça o Quarkus Java: Supersonic Subatomic Java
PPTX
Introdução Java virtual machine
PPTX
ASP.NET Core + Kubernetes + Azure: Orquestrando containers na nuvem - Develop...
PPTX
Lighting Talk - Apache Cassandra
PPTX
ASP.NET Core + Kubernetes + Azure: Orquestrando containers na nuvem - .NET SP...
Google App Engine e PHP
Conheça o Quarkus Java: Supersonic Subatomic Java
Introdução Java virtual machine
ASP.NET Core + Kubernetes + Azure: Orquestrando containers na nuvem - Develop...
Lighting Talk - Apache Cassandra
ASP.NET Core + Kubernetes + Azure: Orquestrando containers na nuvem - .NET SP...
Anúncio

Semelhante a Avaliando o Apache Cassandra como cache distribuido no SPC Brasil - NoSQLBR (20)

PDF
Phpjedi 090307090434-phpapp01 2
PDF
Bancos orientados a colunas (Cassandra)
PDF
Desenvolvendo aplicações Web escaláveis
PDF
Otimizacao de websites em PHP
PDF
Aws sao paulo summit 2015 elasti cache avancado
PPT
Tdc 2013 eric lemes - integracoes entre sistemas-2
PPSX
Cakephp 2.0 - O que mudou
ODP
Bancos de dados No-SQL e afins
ODP
NoSQL - Caelum Day 2009
PDF
TDC2012 - Sua aplicação JAVA flutuando nas nuvens
PDF
TDC2012 - Sua aplicação JAVA flutuando nas nuvens
PDF
PDF
Primeiros passos com o Cassandra
PDF
PHP Experience 2016 - [Palestra] Rumo à Certificação PHP
PDF
MySQL - the database
PDF
DBA Brasil 2.0 NOSql Apache Cassandra para DBAs
PDF
HA em PostgreSQL: O Elefante disponível para além do infinito
PDF
De 1 a 1.000.00 de usuários
PDF
DevOps containers x86 - Baremetal, Virtual e Cloud (pt_br)
PPTX
Pgday Campinas 2015 - Uma visão do PPAS 9.4 e PEM 5.0
Phpjedi 090307090434-phpapp01 2
Bancos orientados a colunas (Cassandra)
Desenvolvendo aplicações Web escaláveis
Otimizacao de websites em PHP
Aws sao paulo summit 2015 elasti cache avancado
Tdc 2013 eric lemes - integracoes entre sistemas-2
Cakephp 2.0 - O que mudou
Bancos de dados No-SQL e afins
NoSQL - Caelum Day 2009
TDC2012 - Sua aplicação JAVA flutuando nas nuvens
TDC2012 - Sua aplicação JAVA flutuando nas nuvens
Primeiros passos com o Cassandra
PHP Experience 2016 - [Palestra] Rumo à Certificação PHP
MySQL - the database
DBA Brasil 2.0 NOSql Apache Cassandra para DBAs
HA em PostgreSQL: O Elefante disponível para além do infinito
De 1 a 1.000.00 de usuários
DevOps containers x86 - Baremetal, Virtual e Cloud (pt_br)
Pgday Campinas 2015 - Uma visão do PPAS 9.4 e PEM 5.0
Anúncio

Último (20)

PDF
POO - Aula 05 - Herança - Generalização e Especialização.pdf
PDF
wp-sn-advanced-high-availability-architecture (pt-br).pdf
DOCX
Laboratório de cyber security, apresentação simples.
PPTX
Politicas-de-Seguranca-Privacidade-e-Cookies.pptx
PDF
Arquitetura de Software slides sommerville
PPTX
Formação aaaaaaaaadsdsfg er rsgrsgesf efsfsefsf e LEEI.pptx
PDF
T-pico 1.pdfnsjabdkaksbbsuendnijsbshajanzk
PPTX
RCSOFTdfsdfrvadfvdfvargfvevevrervevqer.pptx
PPTX
Modelo para Qualificação de Mestrado - Tecnologia da Informação
PDF
POO - Aula 05 - Herança - Generalização e Especialização.pdf
PPT
01 - Arquitetura de Computadores 1 TEC [Salvo automaticamente].ppt
PDF
instalacoes eletricas para industria apressentacao basicas
PPTX
Panorama da aviação civil brasileira ANAC
DOCX
20250828_Perfis Profissionais em ServiceNow Um Guia Detalhado.docx
PDF
Gestão contínua de exposição a ameaças petrobras
PPTX
Google saiba mais sobre o google e suas funcionalidades
PPT
Padrões de Beleza I - Estética Corporal e Saúde
PDF
Apostila Power Automate Impressionador.pdf
PPTX
Legislação aeronautica na aviação civil Brasileira
PDF
pdfcoffee.com_metalografia-25-pdf-free.pdf
POO - Aula 05 - Herança - Generalização e Especialização.pdf
wp-sn-advanced-high-availability-architecture (pt-br).pdf
Laboratório de cyber security, apresentação simples.
Politicas-de-Seguranca-Privacidade-e-Cookies.pptx
Arquitetura de Software slides sommerville
Formação aaaaaaaaadsdsfg er rsgrsgesf efsfsefsf e LEEI.pptx
T-pico 1.pdfnsjabdkaksbbsuendnijsbshajanzk
RCSOFTdfsdfrvadfvdfvargfvevevrervevqer.pptx
Modelo para Qualificação de Mestrado - Tecnologia da Informação
POO - Aula 05 - Herança - Generalização e Especialização.pdf
01 - Arquitetura de Computadores 1 TEC [Salvo automaticamente].ppt
instalacoes eletricas para industria apressentacao basicas
Panorama da aviação civil brasileira ANAC
20250828_Perfis Profissionais em ServiceNow Um Guia Detalhado.docx
Gestão contínua de exposição a ameaças petrobras
Google saiba mais sobre o google e suas funcionalidades
Padrões de Beleza I - Estética Corporal e Saúde
Apostila Power Automate Impressionador.pdf
Legislação aeronautica na aviação civil Brasileira
pdfcoffee.com_metalografia-25-pdf-free.pdf

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

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