Distribuição	  de	  Dados	  com	  Java	               Uma	  Introdução	  ao	  JBoss	  Infinispan	                          ...
Hello!	                                      Agile experience with                             Investment Banks and Retail...
Apresentação	      §      Arquiteto de Software / Agile Coach / Software Craftsman    §      Instrutor da Globalcode da ...
Agenda	  §      Introdução	  §      JBoss	  Infinispan	  §      Configuração	  §      Cache	  Modes	             §  Ass...
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;	  ...
Introdução	   Os	  objetos	  devem	  ser	  manQdos	  na	  memória	   para	  aumentar	  a	  performance	  da	  aplicação,	 ...
Introdução	       A	  camada	  deve	  (de	  maneira	  transparente)	            carregar	  informações	  ausentes	  para	 ...
Introdução	         Ela	  deve	  ser	  capaz	  de	  propagar	  as	      modificações	  nos	  dados	  para	  o	  banco	  de	...
Introdução	          Deve	  ser	  tão	  simples	  de	  escalar	  quanto	  a	                          camada	  de	  aplica...
JBoss	  Infinispan	    Infinispan	  é	  uma	  plataforma	  para	  grid	  de	  dados	    open	  source	  distribuída	  pela	 ...
CaracterísQcas	  §  Cluster:	  Podemos	  distribuir	  nosso	  cache	  em	  cluster	  com	  apenas	          algumas	  con...
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() th...
Configuração	  ProgramáQca	  §  Configurar	  o	  Grid	  com	  a	  classe	  ConfiguraQon	  @Test public void testeCriacaoCach...
Arquivo	  §  Cache	  Modes	  @OCTO	  2011	  
Modo	  Local	  §  Cache	  tradicional,	  apenas	  para	  a	  instância	  onde	  está	  sendo	          executado.	     De...
Modo	  Replicação	  §  Cache	  para	  ambiente	  de	  Cluster.	  §  Fácil	  de	  configurar	  §  Máquinas	  se	  auto	  ...
Modo	  Replicação	  @OCTO	  2011	  
Modo	  Invalidação	  §  Conjunto	  de	  caches	  standalone	  §  Se	  comunicam	  após	  cada	  alteração	  §  Após	  u...
Modo	  Invalidação	  @OCTO	  2011	  
Modo	  Distribuição	  §  Permite	  que	  o	  Infinispan	  escale	  de	  maneira	  linear	  §  Conforme	  a	  necessidade,...
Modo	  Distribuição	  @OCTO	  2011	  
Modo	  Distribuição	  +	  L1	  Caching	  §  Perfeito	  para	  prevenir	  muitas	  chamadas	  remotas	  §  Ao	  detectar	...
Modo	  Distribuição	  +	  L1	  Caching	  @OCTO	  2011	  
Modo	  Distribuição	  +	  L1	  Caching	  §  Exemplo	  de	  configuração	                      <namedCache name="cacheDistr...
Síncrono	  ou	  Assíncrono	  §  Síncrono,	  implica	  que	  para	  todo	  objeto	  manipulado,	  o	  cliente	          te...
Sample	                      <clustering mode="replication">                      <!-- Network calls are synchronous.-->  ...
Cache	  Loader	  §  Interface	  para	  armazenar	  os	  objetos	  em	  	  um	  banco	  de	  dados.	  §  NoSQL	  Qpo	  Ch...
EvicQon	  @OCTO	  2011	  
EvicQon	       EvicQon	  (ou	  Despejo)	  é	  o	  processo	  que	      ocorre	  quando	  um	  objeto	  é	  despejado	  da	...
ExpiraQon	  @OCTO	  2011	  
ExpiraQon	         ExpiraQon	  (ou	  Expiração)	  é	  o	  processo	  de	          remover	  o	  objeto	  do	  cache	  quan...
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	  § ...
Módulos	  §  Comparação	  @OCTO	  2011	  
Perguntas?                              Obrigado                      Wagner Roberto dos Santos                          T...
Upcoming SlideShare
Loading in …5
×

Infinispan - Distribuição de Dados com Java

628 views
532 views

Published on

Palestra apresentada no evento TDC 2011, sobre Data Grid Platform (JBoss Infinispan)

Published in: Technology
0 Comments
4 Likes
Statistics
Notes
  • Be the first to comment

No Downloads
Views
Total views
628
On SlideShare
0
From Embeds
0
Number of Embeds
4
Actions
Shares
0
Downloads
0
Comments
0
Likes
4
Embeds 0
No embeds

No notes for slide

Infinispan - Distribuição de Dados com Java

  1. 1. Distribuição  de  Dados  com  Java   Uma  Introdução  ao  JBoss  Infinispan       Wagner  Roberto  dos  Santos  (@wrsantos)   Agile  Coach  /  Enterprise  Architect  
  2. 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. 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. 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. 5. Introdução  §  Você  já  presenciou  uma  arquitetura  dessas?  @OCTO  2011  
  6. 6.  @OCTO  2011  
  7. 7. Plataformas  de  DataGrid   Data Grid@OCTO  2011  
  8. 8. Introdução   Deve  gerenciar  os  dados  como  objetos,  pois   a  aplicação  lida  com  objetos;    @OCTO  2011  
  9. 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. 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. 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. 12. Introdução   Deve  ser  tão  simples  de  escalar  quanto  a   camada  de  aplicação  @OCTO  2011  
  13. 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. 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. 15. JBoss  Infinispan  §  Baseado  na  Interface  Map  @OCTO  2011  
  16. 16. Configuração  §  Forma  DeclaraQva  §  Forma  ProgramáQca  @OCTO  2011  
  17. 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. 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. 19. Arquivo  §  Cache  Modes  @OCTO  2011  
  20. 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. 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  
  22. 22. Modo  Replicação  @OCTO  2011  
  23. 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  
  24. 24. Modo  Invalidação  @OCTO  2011  
  25. 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  
  26. 26. Modo  Distribuição  @OCTO  2011  
  27. 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. 28. Modo  Distribuição  +  L1  Caching  @OCTO  2011  
  29. 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. 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. 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. 32. Cache  Loader  §  Interface  para  armazenar  os  objetos  em    um  banco  de  dados.  §  NoSQL  Qpo  Chave/Valor  @OCTO  2011  
  33. 33. EvicQon  @OCTO  2011  
  34. 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  
  35. 35. ExpiraQon  @OCTO  2011  
  36. 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. 37. Módulos  §  Peer2Peer  @OCTO  2011  
  38. 38. Módulos  §  Client  Server  over  Peer2Peer  @OCTO  2011  
  39. 39. Módulos  §  REST  Server  Module  §  MemCached  Server  Module  §  Hot  Rod  Server  Module  §  WebSocket  Server  Module  @OCTO  2011  
  40. 40. Módulos  §  Comparação  @OCTO  2011  
  41. 41. Perguntas? Obrigado Wagner Roberto dos Santos Twitter: @wrsantos Email: wrsconsulting@gmail.com@OCTO  2011  

×