SlideShare une entreprise Scribd logo
1  sur  41
Distribuição	
  de	
  Dados	
  com	
  Java	
  
             Uma	
  Introdução	
  ao	
  JBoss	
  Infinispan	
  
                                                                            	
  
                                                             	
  
             Wagner	
  Roberto	
  dos	
  Santos	
  (@wrsantos)	
  
                             Agile	
  Coach	
  /	
  Enterprise	
  Architect	
  
Hello!	
  

                                    Agile experience with
                             Investment Banks and Retail Banks

                                   Off-shore development
                                   Teams up to 60 people

                        Architecture, IS Management, Expertise, and
                                       methodology (Agile)

                     Supported Agile adoption in main Banks in France:
                    Credit Agricole, LCL, Société Générale, BNP Parisbas/
                                              Fortis



@OCTO	
  2011	
  
Apresentação	
  
    §      Arquiteto de Software / Agile Coach / Software Craftsman
    §      Instrutor da Globalcode da formação Academia Agile
    §      Editor do Portal InfoQ Brasil (http://infoq.com/br).
    §      Participação nos projetos de tradução e teste do NetBeans.
    §      Palestrante de eventos como Just Java, Sun Tech Days,
            Campus Party.
    §      Premiações em competições de tecnologia .
    §      Autor de vários artigos para a revista Mundo Java e Java
            Magazine
    §      Certificações: SCJA, SCJP, SCSNI, SCJWSD, SCBCD, SCEA,
            CSM e ACP.
    §      Mantém o blog http://netfeijao.blogspot.com
    §      Twitter: @wrsantos



@OCTO	
  2011	
  
Agenda	
  
§      Introdução	
  
§      JBoss	
  Infinispan	
  
§      Configuração	
  
§      Cache	
  Modes	
  
           §  Assíncrono	
  ou	
  Síncrono?	
  
§      Cache	
  Loaders	
  
§      EvicQon	
  e	
  ExpiraQon	
  
§      Módulos	
  
§      Dúvidas	
  




@OCTO	
  2011	
  
Introdução	
  
§  Você	
  já	
  presenciou	
  uma	
  arquitetura	
  dessas?	
  




@OCTO	
  2011	
  
 


@OCTO	
  2011	
  
Plataformas	
  de	
  DataGrid	
  

                                           Data Grid




@OCTO	
  2011	
  
Introdução	
  




 Deve	
  gerenciar	
  os	
  dados	
  como	
  objetos,	
  pois	
  
           a	
  aplicação	
  lida	
  com	
  objetos;	
  
                                	
  



@OCTO	
  2011	
  
Introdução	
  




 Os	
  objetos	
  devem	
  ser	
  manQdos	
  na	
  memória	
  
 para	
  aumentar	
  a	
  performance	
  da	
  aplicação,	
  
    evitar	
  I/O	
  excessivo	
  no	
  disco	
  e	
  aliviar	
  o	
  
                      banco	
  de	
  dados	
  



@OCTO	
  2011	
  
Introdução	
  




     A	
  camada	
  deve	
  (de	
  maneira	
  transparente)	
  
          carregar	
  informações	
  ausentes	
  para	
  a	
  
          memória	
  oriundas	
  do	
  banco	
  de	
  dados	
  




@OCTO	
  2011	
  
Introdução	
  




       Ela	
  deve	
  ser	
  capaz	
  de	
  propagar	
  as	
  
    modificações	
  nos	
  dados	
  para	
  o	
  banco	
  de	
  
   dados	
  (ou	
  outro	
  repositório	
  persistente)	
  de	
  
                    maneira	
  assíncrona	
  



@OCTO	
  2011	
  
Introdução	
  




        Deve	
  ser	
  tão	
  simples	
  de	
  escalar	
  quanto	
  a	
  
                        camada	
  de	
  aplicação	
  




@OCTO	
  2011	
  
JBoss	
  Infinispan	
  
  Infinispan	
  é	
  uma	
  plataforma	
  para	
  grid	
  de	
  dados	
  
  open	
  source	
  distribuída	
  pela	
  JBoss.	
  Geralmente,	
  
 data	
  grids	
  são	
  uQlizados	
  para	
  reduzir	
  a	
  latência	
  ao	
  
   banco	
  de	
  dados,	
  prover	
  alta	
  disponibilidade	
  e	
  
    storage	
  elásQco	
  dos	
  dados,	
  como	
  soluções	
  
                                NoSQL.	
  




@OCTO	
  2011	
  
CaracterísQcas	
  
§  Cluster:	
  Podemos	
  distribuir	
  nosso	
  cache	
  em	
  cluster	
  com	
  apenas	
  
        algumas	
  configurações;	
  
§      Evic7on:	
  Mecanismo	
  automáQco	
  de	
  evicQon	
  para	
  evitar	
  erros	
  
        de	
  out-­‐of-­‐memory	
  e	
  controle	
  do	
  melhor	
  uso	
  da	
  memória;	
  
§      Cache	
  Loader:	
  É	
  possível	
  configurar	
  cache	
  loaders	
  (ver	
  tópico	
  
        “Cache	
  Loader”)	
  para	
  persisQr	
  o	
  estado	
  dos	
  objetos	
  em	
  um	
  
        banco	
  de	
  dados	
  ou	
  em	
  um	
  arquivo	
  no	
  disco;	
  
§      Suporte	
  a	
  JTA	
  e	
  compa7bilidade	
  com	
  XA:	
  Gerenciamento	
  de	
  
        transação	
  com	
  qualquer	
  aplicação	
  compalvel	
  com	
  JTA;	
  
§      Gerenciamento:	
  É	
  possível	
  gerenciar	
  e	
  monitorar	
  os	
  objetos	
  de	
  
        uma	
  instância	
  do	
  grid	
  de	
  dados	
  através	
  de	
  componentes	
  JMX	
  
        ou	
  uQlizar	
  um	
  console	
  gráfico	
  com	
  RHQ.	
  


@OCTO	
  2011	
  
JBoss	
  Infinispan	
  
§  Baseado	
  na	
  Interface	
  Map	
  




@OCTO	
  2011	
  
Configuração	
  
§  Forma	
  DeclaraQva	
  
§  Forma	
  ProgramáQca	
  




@OCTO	
  2011	
  
Configuração	
  DeclaraQva	
  
§  UQlizando	
  um	
  Arquivo	
  de	
  Configuração	
  



public void testeCriacaoCacheDeclarativo() throws IOException {
    String ArquivoConfiguracao = "/path/infinispan-config.xml";
    CacheContainer container = new DefaultCacheManager(ArquivoConfiguracao);
    Cache<String, String> cache = container.getCache();
    // Inclusão de novo valor no cache
    cache.put("wagner", "santos");
    // Validação da informação atribuída no cache
    assertEquals(cache.get("wagner"), "santos");
 }




@OCTO	
  2011	
  
Configuração	
  ProgramáQca	
  
§  Configurar	
  o	
  Grid	
  com	
  a	
  classe	
  ConfiguraQon	
  
@Test
 public void testeCriacaoCacheProgramatico() {
   // Configuração Global com os valores default
   GlobalConfiguration globalConf = GlobalConfiguration.getClusteredDefault();
   // Criação de objeto configuração
   Configuration conf = new Configuration();
   // Mudando o mode para Replicação Síncrona
   conf.setCacheMode(CacheMode.REPL_SYNC);
   // Criação de CacheManager
   CacheContainer container = new DefaultCacheManager(globalConf, conf);
   // Obtendo o cache baseado nos valores informados
   Cache<String, String> cache = container.getCache();
   // Inclusão de novo valor no cache
   cache.put("wagner", "santos");
   // Validação da informação atribuída no cache
   assertEquals(cache.get("wagner"), "santos");
 }

@OCTO	
  2011	
  
Arquivo	
  
§  Cache	
  Modes	
  




@OCTO	
  2011	
  
Modo	
  Local	
  
§  Cache	
  tradicional,	
  apenas	
  para	
  a	
  instância	
  onde	
  está	
  sendo	
  
        executado.	
  




   DefaultCacheManager m = new DefaultCacheManager();
   Cache<String, String> c = m.getCache(); // Cache Local



@OCTO	
  2011	
  
Modo	
  Replicação	
  
§  Cache	
  para	
  ambiente	
  de	
  Cluster.	
  
§  Fácil	
  de	
  configurar	
  
§  Máquinas	
  se	
  auto	
  descobrem	
  

   <infinispan>
    <global>
      <transport />
    </global>
    <default>
      <clustering mode=”R”>
    <sync />
    </clustering>
    </default>
   </infinispan>
@OCTO	
  2011	
  
Modo	
  Replicação	
  




@OCTO	
  2011	
  
Modo	
  Invalidação	
  
§  Conjunto	
  de	
  caches	
  standalone	
  
§  Se	
  comunicam	
  após	
  cada	
  alteração	
  
§  Após	
  uma	
  alteração	
  em	
  um	
  objeto,	
  o	
  objeto	
  se	
  torna	
  inválido	
  
    nos	
  outros	
  nós.	
  
§  Uso	
  indicado	
  para	
  sistemas	
  que	
  necessitem	
  fazer	
  muita	
  leitura	
  
    de	
  banco	
  de	
  dados	
  




@OCTO	
  2011	
  
Modo	
  Invalidação	
  




@OCTO	
  2011	
  
Modo	
  Distribuição	
  
§  Permite	
  que	
  o	
  Infinispan	
  escale	
  de	
  maneira	
  linear	
  
§  Conforme	
  a	
  necessidade,	
  podemos	
  adicionar	
  mais	
  nós	
  ao	
  nosso	
  
        Grid.	
  




@OCTO	
  2011	
  
Modo	
  Distribuição	
  




@OCTO	
  2011	
  
Modo	
  Distribuição	
  +	
  L1	
  Caching	
  
§  Perfeito	
  para	
  prevenir	
  muitas	
  chamadas	
  remotas	
  
§  Ao	
  detectar	
  muitas	
  chamadas	
  remotas,	
  Infinispan	
  disponibiliza	
  
        o	
  objeto	
  no	
  nós	
  solicitado	
  por	
  um	
  período	
  de	
  tempo	
  
        configurável.	
  




@OCTO	
  2011	
  
Modo	
  Distribuição	
  +	
  L1	
  Caching	
  




@OCTO	
  2011	
  
Modo	
  Distribuição	
  +	
  L1	
  Caching	
  
§  Exemplo	
  de	
  configuração	
  

                    <namedCache name="cacheDistribuido">
                      <clustering mode="distribution">
                        <sync/>
                        <hash
                          numOwners="3"
                          rehashWait="120000"
                          rehashRpcTimeout="600000"
                        />
                        <l1
                          enabled="true"
                          lifespan="600000"
                        />
                      </clustering>
                    </namedCache>



@OCTO	
  2011	
  
Síncrono	
  ou	
  Assíncrono	
  
§  Síncrono,	
  implica	
  que	
  para	
  todo	
  objeto	
  manipulado,	
  o	
  cliente	
  
        terá	
  que	
  aguardar	
  o	
  Infinispan	
  realizar	
  todo	
  o	
  ciclo	
  de	
  
        atualizações.	
  
           §  Menos	
  Velocidade	
  e	
  Mais	
  Consistência	
  


§  Assíncrono,	
  ao	
  contrário,	
  o	
  cliente	
  não	
  precisa	
  aguardar	
  
           §  Mais	
  Velocidade	
  e	
  Menor	
  Consistência	
  




@OCTO	
  2011	
  
Sample	
  
                    <clustering mode="replication">
                      <!-- Network calls are synchronous.-->
                      <sync replTimeout="20000"/>

                      <!-- Uncomment this for async replication. -->
                      <!--
                        <async
                          useReplQueue="true"
                          replQueueInterval="10000"
                          replQueueMaxElements="500"
                        />
                          <l1
                            enabled="true"
                            lifespan="600000"
                          />
                      -->
                    </clustering>



@OCTO	
  2011	
  
Cache	
  Loader	
  
§  Interface	
  para	
  armazenar	
  os	
  objetos	
  em	
  	
  
um	
  banco	
  de	
  dados.	
  
§  NoSQL	
  Qpo	
  Chave/Valor	
  




@OCTO	
  2011	
  
EvicQon	
  




@OCTO	
  2011	
  
EvicQon	
  

     EvicQon	
  (ou	
  Despejo)	
  é	
  o	
  processo	
  que	
  
    ocorre	
  quando	
  um	
  objeto	
  é	
  despejado	
  da	
  
    memória,	
  no	
  momento	
  em	
  existem	
  muitos	
  
         objetos	
  adicionados	
  no	
  cache	
  	
  




@OCTO	
  2011	
  
ExpiraQon	
  




@OCTO	
  2011	
  
ExpiraQon	
  

       ExpiraQon	
  (ou	
  Expiração)	
  é	
  o	
  processo	
  de	
  
        remover	
  o	
  objeto	
  do	
  cache	
  quando	
  ele	
  
        chega	
  ao	
  fim	
  do	
  seu	
  tempo	
  de	
  vida,	
  ou	
  
        quando	
  o	
  objeto	
  está	
  há	
  muito	
  tempo	
  
                        ocioso	
  no	
  cache.	
  




@OCTO	
  2011	
  
Módulos	
  
§  Peer2Peer	
  




@OCTO	
  2011	
  
Módulos	
  
§  Client	
  Server	
  over	
  Peer2Peer	
  




@OCTO	
  2011	
  
Módulos	
  
§      REST	
  Server	
  Module	
  
§      MemCached	
  Server	
  Module	
  
§      Hot	
  Rod	
  Server	
  Module	
  
§      WebSocket	
  Server	
  Module	
  




@OCTO	
  2011	
  
Módulos	
  
§  Comparação	
  




@OCTO	
  2011	
  
Perguntas?




                              Obrigado


                      Wagner Roberto dos Santos
                          Twitter: @wrsantos
                    Email: wrsconsulting@gmail.com
@OCTO	
  2011	
  

Contenu connexe

Tendances

Otimizando um banco de dados Oracle para Exadata
Otimizando um banco de dados Oracle para ExadataOtimizando um banco de dados Oracle para Exadata
Otimizando um banco de dados Oracle para ExadataRodrigo Almeida
 
Oracle Exadata - Consolidação & Migração
Oracle Exadata - Consolidação & MigraçãoOracle Exadata - Consolidação & Migração
Oracle Exadata - Consolidação & MigraçãoRodrigo Almeida
 
Elastic MeetUp Porto Alegre
Elastic MeetUp Porto AlegreElastic MeetUp Porto Alegre
Elastic MeetUp Porto AlegreRafael Gomes
 
DBA became DMA for Oracle Exadata X2-2
DBA became DMA for Oracle Exadata X2-2DBA became DMA for Oracle Exadata X2-2
DBA became DMA for Oracle Exadata X2-2Rodrigo Almeida
 
GUOB - Passa-a-passo para migração do Oracle Database 11g
GUOB - Passa-a-passo para migração do Oracle Database 11gGUOB - Passa-a-passo para migração do Oracle Database 11g
GUOB - Passa-a-passo para migração do Oracle Database 11gRodrigo Almeida
 
Desvendando Oracle Exadata X2-2
Desvendando Oracle Exadata X2-2Desvendando Oracle Exadata X2-2
Desvendando Oracle Exadata X2-2Rodrigo Almeida
 
Estrategias de backup e recovery
Estrategias de backup e recoveryEstrategias de backup e recovery
Estrategias de backup e recoveryRodrigo Crespi
 
Oracle Exadata
Oracle ExadataOracle Exadata
Oracle ExadataiMasters
 
Fazendo Um Elefante Passar Debaixo da Porta - CONSEGI
Fazendo Um Elefante Passar Debaixo da Porta - CONSEGIFazendo Um Elefante Passar Debaixo da Porta - CONSEGI
Fazendo Um Elefante Passar Debaixo da Porta - CONSEGIFabio Telles Rodriguez
 
ENPO - RMAN: Vilão ou Heroí?
ENPO - RMAN: Vilão ou Heroí?ENPO - RMAN: Vilão ou Heroí?
ENPO - RMAN: Vilão ou Heroí?Rodrigo Almeida
 
Persistência Java: Hibernate e JPA
Persistência Java: Hibernate e JPAPersistência Java: Hibernate e JPA
Persistência Java: Hibernate e JPACaelum
 
UOL Tech Day: Testes de Integração com OpenEJB
UOL Tech Day: Testes de Integração com OpenEJBUOL Tech Day: Testes de Integração com OpenEJB
UOL Tech Day: Testes de Integração com OpenEJBGabriel Ozeas
 
Estratégia de backup - RMAN
Estratégia de backup - RMANEstratégia de backup - RMAN
Estratégia de backup - RMANEduardo Legatti
 
Introdução a JPA e Hibernate - TDC 2012
Introdução a JPA e Hibernate - TDC 2012Introdução a JPA e Hibernate - TDC 2012
Introdução a JPA e Hibernate - TDC 2012Frederico Maia Arantes
 
Banco de Dados NoSQL - Disciplina: Sistemas Distribuídos
Banco de Dados NoSQL - Disciplina: Sistemas DistribuídosBanco de Dados NoSQL - Disciplina: Sistemas Distribuídos
Banco de Dados NoSQL - Disciplina: Sistemas DistribuídosJoão Helis Bernardo
 

Tendances (17)

Otimizando um banco de dados Oracle para Exadata
Otimizando um banco de dados Oracle para ExadataOtimizando um banco de dados Oracle para Exadata
Otimizando um banco de dados Oracle para Exadata
 
Oracle Exadata - Consolidação & Migração
Oracle Exadata - Consolidação & MigraçãoOracle Exadata - Consolidação & Migração
Oracle Exadata - Consolidação & Migração
 
Elastic MeetUp Porto Alegre
Elastic MeetUp Porto AlegreElastic MeetUp Porto Alegre
Elastic MeetUp Porto Alegre
 
Oracle Data Guard
Oracle Data GuardOracle Data Guard
Oracle Data Guard
 
DBA became DMA for Oracle Exadata X2-2
DBA became DMA for Oracle Exadata X2-2DBA became DMA for Oracle Exadata X2-2
DBA became DMA for Oracle Exadata X2-2
 
GUOB - Passa-a-passo para migração do Oracle Database 11g
GUOB - Passa-a-passo para migração do Oracle Database 11gGUOB - Passa-a-passo para migração do Oracle Database 11g
GUOB - Passa-a-passo para migração do Oracle Database 11g
 
IDC Summit 2015 - DBaaS
IDC Summit 2015 - DBaaSIDC Summit 2015 - DBaaS
IDC Summit 2015 - DBaaS
 
Desvendando Oracle Exadata X2-2
Desvendando Oracle Exadata X2-2Desvendando Oracle Exadata X2-2
Desvendando Oracle Exadata X2-2
 
Estrategias de backup e recovery
Estrategias de backup e recoveryEstrategias de backup e recovery
Estrategias de backup e recovery
 
Oracle Exadata
Oracle ExadataOracle Exadata
Oracle Exadata
 
Fazendo Um Elefante Passar Debaixo da Porta - CONSEGI
Fazendo Um Elefante Passar Debaixo da Porta - CONSEGIFazendo Um Elefante Passar Debaixo da Porta - CONSEGI
Fazendo Um Elefante Passar Debaixo da Porta - CONSEGI
 
ENPO - RMAN: Vilão ou Heroí?
ENPO - RMAN: Vilão ou Heroí?ENPO - RMAN: Vilão ou Heroí?
ENPO - RMAN: Vilão ou Heroí?
 
Persistência Java: Hibernate e JPA
Persistência Java: Hibernate e JPAPersistência Java: Hibernate e JPA
Persistência Java: Hibernate e JPA
 
UOL Tech Day: Testes de Integração com OpenEJB
UOL Tech Day: Testes de Integração com OpenEJBUOL Tech Day: Testes de Integração com OpenEJB
UOL Tech Day: Testes de Integração com OpenEJB
 
Estratégia de backup - RMAN
Estratégia de backup - RMANEstratégia de backup - RMAN
Estratégia de backup - RMAN
 
Introdução a JPA e Hibernate - TDC 2012
Introdução a JPA e Hibernate - TDC 2012Introdução a JPA e Hibernate - TDC 2012
Introdução a JPA e Hibernate - TDC 2012
 
Banco de Dados NoSQL - Disciplina: Sistemas Distribuídos
Banco de Dados NoSQL - Disciplina: Sistemas DistribuídosBanco de Dados NoSQL - Disciplina: Sistemas Distribuídos
Banco de Dados NoSQL - Disciplina: Sistemas Distribuídos
 

Similaire à Infinispan - Distribuição de Dados com Java

Terraform + Kops + Kubernetes na AWS
Terraform + Kops + Kubernetes na AWSTerraform + Kops + Kubernetes na AWS
Terraform + Kops + Kubernetes na AWSLeandro Freitas
 
Introdução ao JPA com Hibernate
Introdução ao JPA com HibernateIntrodução ao JPA com Hibernate
Introdução ao JPA com HibernateDanilo Braga
 
Introdução ao JPA com Hibernate
Introdução ao JPA com HibernateIntrodução ao JPA com Hibernate
Introdução ao JPA com HibernateDanilo Braga
 
Sistemas Distribuídos - Comunicação Distribuída - EJB
Sistemas Distribuídos - Comunicação Distribuída - EJBSistemas Distribuídos - Comunicação Distribuída - EJB
Sistemas Distribuídos - Comunicação Distribuída - EJBAdriano Teixeira de Souza
 
JavaEE 7, na era do cloud computing
JavaEE 7, na era do cloud computingJavaEE 7, na era do cloud computing
JavaEE 7, na era do cloud computingEder Magalhães
 
Intro Arquitetura Oracle
Intro Arquitetura OracleIntro Arquitetura Oracle
Intro Arquitetura OraclePablo Garcia
 
Sistemas Distribuídos - Comunicação Distribuída - EJB (JBoss 7)
Sistemas Distribuídos - Comunicação Distribuída - EJB (JBoss 7)Sistemas Distribuídos - Comunicação Distribuída - EJB (JBoss 7)
Sistemas Distribuídos - Comunicação Distribuída - EJB (JBoss 7)Adriano Teixeira de Souza
 
Design Patterns para Tuning Pentaho com Ctools
Design Patterns para Tuning Pentaho com CtoolsDesign Patterns para Tuning Pentaho com Ctools
Design Patterns para Tuning Pentaho com Ctoolse-Setorial
 
Como DDD e Strategic Design estão nos ajudando a modernizar um Legado
Como DDD e Strategic Design estão nos ajudando a modernizar um LegadoComo DDD e Strategic Design estão nos ajudando a modernizar um Legado
Como DDD e Strategic Design estão nos ajudando a modernizar um LegadoLuiz Costa
 
hibernate annotation
hibernate annotationhibernate annotation
hibernate annotationeduardo dias
 
Modularidade na Web com Java: Desenvolvimento OSGI Web com Eclipse Virgo
Modularidade na Web com Java: Desenvolvimento OSGI Web com Eclipse VirgoModularidade na Web com Java: Desenvolvimento OSGI Web com Eclipse Virgo
Modularidade na Web com Java: Desenvolvimento OSGI Web com Eclipse VirgoRegis Machado
 
Brutos Framework (Java WEB MVC)
Brutos Framework (Java WEB MVC)Brutos Framework (Java WEB MVC)
Brutos Framework (Java WEB MVC)Afonso Brandão
 
Palestra Elasticsearch - The Developers Conference - Floripa - 2017
Palestra Elasticsearch - The Developers Conference - Floripa - 2017Palestra Elasticsearch - The Developers Conference - Floripa - 2017
Palestra Elasticsearch - The Developers Conference - Floripa - 2017Thiago Barradas
 
07 - Osvaldo Daibert - Cenários para cache de dados distribuidos
07  - Osvaldo Daibert - Cenários para cache de dados distribuidos07  - Osvaldo Daibert - Cenários para cache de dados distribuidos
07 - Osvaldo Daibert - Cenários para cache de dados distribuidosDNAD
 
Oracle para Desenvolvedores - recursos e técnicas - visões gerais (Uninove 2016)
Oracle para Desenvolvedores - recursos e técnicas - visões gerais (Uninove 2016)Oracle para Desenvolvedores - recursos e técnicas - visões gerais (Uninove 2016)
Oracle para Desenvolvedores - recursos e técnicas - visões gerais (Uninove 2016)Andre Santos
 
2019 - GUOB MeetUp - Journey to Cloud and DBA Career
2019 - GUOB MeetUp - Journey to Cloud and DBA Career2019 - GUOB MeetUp - Journey to Cloud and DBA Career
2019 - GUOB MeetUp - Journey to Cloud and DBA CareerMarcus Vinicius Miguel Pedro
 

Similaire à Infinispan - Distribuição de Dados com Java (20)

Appi303 daibert
Appi303   daibertAppi303   daibert
Appi303 daibert
 
Terraform + Kops + Kubernetes na AWS
Terraform + Kops + Kubernetes na AWSTerraform + Kops + Kubernetes na AWS
Terraform + Kops + Kubernetes na AWS
 
JBoss Fuse Workshop Desenvolvimento - Parte 1
JBoss Fuse Workshop Desenvolvimento - Parte 1JBoss Fuse Workshop Desenvolvimento - Parte 1
JBoss Fuse Workshop Desenvolvimento - Parte 1
 
Introdução ao JPA com Hibernate
Introdução ao JPA com HibernateIntrodução ao JPA com Hibernate
Introdução ao JPA com Hibernate
 
Introdução ao JPA com Hibernate
Introdução ao JPA com HibernateIntrodução ao JPA com Hibernate
Introdução ao JPA com Hibernate
 
Sistemas Distribuídos - Comunicação Distribuída - EJB
Sistemas Distribuídos - Comunicação Distribuída - EJBSistemas Distribuídos - Comunicação Distribuída - EJB
Sistemas Distribuídos - Comunicação Distribuída - EJB
 
JavaEE 7, na era do cloud computing
JavaEE 7, na era do cloud computingJavaEE 7, na era do cloud computing
JavaEE 7, na era do cloud computing
 
Intro Arquitetura Oracle
Intro Arquitetura OracleIntro Arquitetura Oracle
Intro Arquitetura Oracle
 
Sistemas Distribuídos - Comunicação Distribuída - EJB (JBoss 7)
Sistemas Distribuídos - Comunicação Distribuída - EJB (JBoss 7)Sistemas Distribuídos - Comunicação Distribuída - EJB (JBoss 7)
Sistemas Distribuídos - Comunicação Distribuída - EJB (JBoss 7)
 
Design Patterns para Tuning Pentaho com Ctools
Design Patterns para Tuning Pentaho com CtoolsDesign Patterns para Tuning Pentaho com Ctools
Design Patterns para Tuning Pentaho com Ctools
 
Como DDD e Strategic Design estão nos ajudando a modernizar um Legado
Como DDD e Strategic Design estão nos ajudando a modernizar um LegadoComo DDD e Strategic Design estão nos ajudando a modernizar um Legado
Como DDD e Strategic Design estão nos ajudando a modernizar um Legado
 
PHP FrameWARks - CakePHP
PHP FrameWARks - CakePHPPHP FrameWARks - CakePHP
PHP FrameWARks - CakePHP
 
hibernate annotation
hibernate annotationhibernate annotation
hibernate annotation
 
Modularidade na Web com Java: Desenvolvimento OSGI Web com Eclipse Virgo
Modularidade na Web com Java: Desenvolvimento OSGI Web com Eclipse VirgoModularidade na Web com Java: Desenvolvimento OSGI Web com Eclipse Virgo
Modularidade na Web com Java: Desenvolvimento OSGI Web com Eclipse Virgo
 
Brutos Framework (Java WEB MVC)
Brutos Framework (Java WEB MVC)Brutos Framework (Java WEB MVC)
Brutos Framework (Java WEB MVC)
 
JAVA REFLETCION
JAVA REFLETCIONJAVA REFLETCION
JAVA REFLETCION
 
Palestra Elasticsearch - The Developers Conference - Floripa - 2017
Palestra Elasticsearch - The Developers Conference - Floripa - 2017Palestra Elasticsearch - The Developers Conference - Floripa - 2017
Palestra Elasticsearch - The Developers Conference - Floripa - 2017
 
07 - Osvaldo Daibert - Cenários para cache de dados distribuidos
07  - Osvaldo Daibert - Cenários para cache de dados distribuidos07  - Osvaldo Daibert - Cenários para cache de dados distribuidos
07 - Osvaldo Daibert - Cenários para cache de dados distribuidos
 
Oracle para Desenvolvedores - recursos e técnicas - visões gerais (Uninove 2016)
Oracle para Desenvolvedores - recursos e técnicas - visões gerais (Uninove 2016)Oracle para Desenvolvedores - recursos e técnicas - visões gerais (Uninove 2016)
Oracle para Desenvolvedores - recursos e técnicas - visões gerais (Uninove 2016)
 
2019 - GUOB MeetUp - Journey to Cloud and DBA Career
2019 - GUOB MeetUp - Journey to Cloud and DBA Career2019 - GUOB MeetUp - Journey to Cloud and DBA Career
2019 - GUOB MeetUp - Journey to Cloud and DBA Career
 

Plus de Wagner Roberto dos Santos

Plus de Wagner Roberto dos Santos (6)

Tdc2013 Inspecionando antes da adoção
Tdc2013 Inspecionando antes da adoçãoTdc2013 Inspecionando antes da adoção
Tdc2013 Inspecionando antes da adoção
 
[Tdc2012] Auditoria Sistêmica - Processos, Práticas e Ferramentas
[Tdc2012] Auditoria Sistêmica - Processos, Práticas e Ferramentas[Tdc2012] Auditoria Sistêmica - Processos, Práticas e Ferramentas
[Tdc2012] Auditoria Sistêmica - Processos, Práticas e Ferramentas
 
Continuous Delivery e DevOps
Continuous Delivery e DevOpsContinuous Delivery e DevOps
Continuous Delivery e DevOps
 
Como Se Dar Bem Com Java
Como Se Dar Bem Com JavaComo Se Dar Bem Com Java
Como Se Dar Bem Com Java
 
De Web Services RESTful a Aplicações Mashup
De Web Services RESTful a Aplicações MashupDe Web Services RESTful a Aplicações Mashup
De Web Services RESTful a Aplicações Mashup
 
Como me dei bem com Java
Como me dei bem com JavaComo me dei bem com Java
Como me dei bem com Java
 

Infinispan - Distribuição de Dados com Java

  • 1. Distribuição  de  Dados  com  Java   Uma  Introdução  ao  JBoss  Infinispan       Wagner  Roberto  dos  Santos  (@wrsantos)   Agile  Coach  /  Enterprise  Architect  
  • 2. Hello!   Agile experience with Investment Banks and Retail Banks Off-shore development Teams up to 60 people Architecture, IS Management, Expertise, and methodology (Agile) Supported Agile adoption in main Banks in France: Credit Agricole, LCL, Société Générale, BNP Parisbas/ Fortis @OCTO  2011  
  • 3. Apresentação   §  Arquiteto de Software / Agile Coach / Software Craftsman §  Instrutor da Globalcode da formação Academia Agile §  Editor do Portal InfoQ Brasil (http://infoq.com/br). §  Participação nos projetos de tradução e teste do NetBeans. §  Palestrante de eventos como Just Java, Sun Tech Days, Campus Party. §  Premiações em competições de tecnologia . §  Autor de vários artigos para a revista Mundo Java e Java Magazine §  Certificações: SCJA, SCJP, SCSNI, SCJWSD, SCBCD, SCEA, CSM e ACP. §  Mantém o blog http://netfeijao.blogspot.com §  Twitter: @wrsantos @OCTO  2011  
  • 4. Agenda   §  Introdução   §  JBoss  Infinispan   §  Configuração   §  Cache  Modes   §  Assíncrono  ou  Síncrono?   §  Cache  Loaders   §  EvicQon  e  ExpiraQon   §  Módulos   §  Dúvidas   @OCTO  2011  
  • 5. Introdução   §  Você  já  presenciou  uma  arquitetura  dessas?   @OCTO  2011  
  • 7. Plataformas  de  DataGrid   Data Grid @OCTO  2011  
  • 8. Introdução   Deve  gerenciar  os  dados  como  objetos,  pois   a  aplicação  lida  com  objetos;     @OCTO  2011  
  • 9. Introdução   Os  objetos  devem  ser  manQdos  na  memória   para  aumentar  a  performance  da  aplicação,   evitar  I/O  excessivo  no  disco  e  aliviar  o   banco  de  dados   @OCTO  2011  
  • 10. Introdução   A  camada  deve  (de  maneira  transparente)   carregar  informações  ausentes  para  a   memória  oriundas  do  banco  de  dados   @OCTO  2011  
  • 11. Introdução   Ela  deve  ser  capaz  de  propagar  as   modificações  nos  dados  para  o  banco  de   dados  (ou  outro  repositório  persistente)  de   maneira  assíncrona   @OCTO  2011  
  • 12. Introdução   Deve  ser  tão  simples  de  escalar  quanto  a   camada  de  aplicação   @OCTO  2011  
  • 13. JBoss  Infinispan   Infinispan  é  uma  plataforma  para  grid  de  dados   open  source  distribuída  pela  JBoss.  Geralmente,   data  grids  são  uQlizados  para  reduzir  a  latência  ao   banco  de  dados,  prover  alta  disponibilidade  e   storage  elásQco  dos  dados,  como  soluções   NoSQL.   @OCTO  2011  
  • 14. CaracterísQcas   §  Cluster:  Podemos  distribuir  nosso  cache  em  cluster  com  apenas   algumas  configurações;   §  Evic7on:  Mecanismo  automáQco  de  evicQon  para  evitar  erros   de  out-­‐of-­‐memory  e  controle  do  melhor  uso  da  memória;   §  Cache  Loader:  É  possível  configurar  cache  loaders  (ver  tópico   “Cache  Loader”)  para  persisQr  o  estado  dos  objetos  em  um   banco  de  dados  ou  em  um  arquivo  no  disco;   §  Suporte  a  JTA  e  compa7bilidade  com  XA:  Gerenciamento  de   transação  com  qualquer  aplicação  compalvel  com  JTA;   §  Gerenciamento:  É  possível  gerenciar  e  monitorar  os  objetos  de   uma  instância  do  grid  de  dados  através  de  componentes  JMX   ou  uQlizar  um  console  gráfico  com  RHQ.   @OCTO  2011  
  • 15. JBoss  Infinispan   §  Baseado  na  Interface  Map   @OCTO  2011  
  • 16. Configuração   §  Forma  DeclaraQva   §  Forma  ProgramáQca   @OCTO  2011  
  • 17. Configuração  DeclaraQva   §  UQlizando  um  Arquivo  de  Configuração   public void testeCriacaoCacheDeclarativo() throws IOException { String ArquivoConfiguracao = "/path/infinispan-config.xml"; CacheContainer container = new DefaultCacheManager(ArquivoConfiguracao); Cache<String, String> cache = container.getCache(); // Inclusão de novo valor no cache cache.put("wagner", "santos"); // Validação da informação atribuída no cache assertEquals(cache.get("wagner"), "santos"); } @OCTO  2011  
  • 18. Configuração  ProgramáQca   §  Configurar  o  Grid  com  a  classe  ConfiguraQon   @Test public void testeCriacaoCacheProgramatico() { // Configuração Global com os valores default GlobalConfiguration globalConf = GlobalConfiguration.getClusteredDefault(); // Criação de objeto configuração Configuration conf = new Configuration(); // Mudando o mode para Replicação Síncrona conf.setCacheMode(CacheMode.REPL_SYNC); // Criação de CacheManager CacheContainer container = new DefaultCacheManager(globalConf, conf); // Obtendo o cache baseado nos valores informados Cache<String, String> cache = container.getCache(); // Inclusão de novo valor no cache cache.put("wagner", "santos"); // Validação da informação atribuída no cache assertEquals(cache.get("wagner"), "santos"); } @OCTO  2011  
  • 19. Arquivo   §  Cache  Modes   @OCTO  2011  
  • 20. Modo  Local   §  Cache  tradicional,  apenas  para  a  instância  onde  está  sendo   executado.   DefaultCacheManager m = new DefaultCacheManager(); Cache<String, String> c = m.getCache(); // Cache Local @OCTO  2011  
  • 21. Modo  Replicação   §  Cache  para  ambiente  de  Cluster.   §  Fácil  de  configurar   §  Máquinas  se  auto  descobrem   <infinispan> <global> <transport /> </global> <default> <clustering mode=”R”> <sync /> </clustering> </default> </infinispan> @OCTO  2011  
  • 23. Modo  Invalidação   §  Conjunto  de  caches  standalone   §  Se  comunicam  após  cada  alteração   §  Após  uma  alteração  em  um  objeto,  o  objeto  se  torna  inválido   nos  outros  nós.   §  Uso  indicado  para  sistemas  que  necessitem  fazer  muita  leitura   de  banco  de  dados   @OCTO  2011  
  • 25. Modo  Distribuição   §  Permite  que  o  Infinispan  escale  de  maneira  linear   §  Conforme  a  necessidade,  podemos  adicionar  mais  nós  ao  nosso   Grid.   @OCTO  2011  
  • 27. Modo  Distribuição  +  L1  Caching   §  Perfeito  para  prevenir  muitas  chamadas  remotas   §  Ao  detectar  muitas  chamadas  remotas,  Infinispan  disponibiliza   o  objeto  no  nós  solicitado  por  um  período  de  tempo   configurável.   @OCTO  2011  
  • 28. Modo  Distribuição  +  L1  Caching   @OCTO  2011  
  • 29. Modo  Distribuição  +  L1  Caching   §  Exemplo  de  configuração   <namedCache name="cacheDistribuido"> <clustering mode="distribution"> <sync/> <hash numOwners="3" rehashWait="120000" rehashRpcTimeout="600000" /> <l1 enabled="true" lifespan="600000" /> </clustering> </namedCache> @OCTO  2011  
  • 30. Síncrono  ou  Assíncrono   §  Síncrono,  implica  que  para  todo  objeto  manipulado,  o  cliente   terá  que  aguardar  o  Infinispan  realizar  todo  o  ciclo  de   atualizações.   §  Menos  Velocidade  e  Mais  Consistência   §  Assíncrono,  ao  contrário,  o  cliente  não  precisa  aguardar   §  Mais  Velocidade  e  Menor  Consistência   @OCTO  2011  
  • 31. Sample   <clustering mode="replication"> <!-- Network calls are synchronous.--> <sync replTimeout="20000"/> <!-- Uncomment this for async replication. --> <!-- <async useReplQueue="true" replQueueInterval="10000" replQueueMaxElements="500" /> <l1 enabled="true" lifespan="600000" /> --> </clustering> @OCTO  2011  
  • 32. Cache  Loader   §  Interface  para  armazenar  os  objetos  em     um  banco  de  dados.   §  NoSQL  Qpo  Chave/Valor   @OCTO  2011  
  • 34. EvicQon   EvicQon  (ou  Despejo)  é  o  processo  que   ocorre  quando  um  objeto  é  despejado  da   memória,  no  momento  em  existem  muitos   objetos  adicionados  no  cache     @OCTO  2011  
  • 36. ExpiraQon   ExpiraQon  (ou  Expiração)  é  o  processo  de   remover  o  objeto  do  cache  quando  ele   chega  ao  fim  do  seu  tempo  de  vida,  ou   quando  o  objeto  está  há  muito  tempo   ocioso  no  cache.   @OCTO  2011  
  • 37. Módulos   §  Peer2Peer   @OCTO  2011  
  • 38. Módulos   §  Client  Server  over  Peer2Peer   @OCTO  2011  
  • 39. Módulos   §  REST  Server  Module   §  MemCached  Server  Module   §  Hot  Rod  Server  Module   §  WebSocket  Server  Module   @OCTO  2011  
  • 40. Módulos   §  Comparação   @OCTO  2011  
  • 41. Perguntas? Obrigado Wagner Roberto dos Santos Twitter: @wrsantos Email: wrsconsulting@gmail.com @OCTO  2011