JBoss Cache

22
JBoss Cache Helves H. Domingues MAC 5863 - Sistemas de Middleware Avançados Prof. Francisco Reverbel

description

JBoss Cache. Helves H. Domingues MAC 5863 - Sistemas de Middleware Avançados Prof. Francisco Reverbel. Agenda. Visão Geral TreeCache / Demonstração POJOCache / Demonstração Cache Loaders Configurações. JBoss Cache. Consiste em dois módulos TreeCache Dados em estrutura de árvore - PowerPoint PPT Presentation

Transcript of JBoss Cache

Page 1: JBoss Cache

JBoss Cache

Helves H. Domingues

MAC 5863 - Sistemas de Middleware Avançados

Prof. Francisco Reverbel

Page 2: JBoss Cache

Agenda

Visão Geral TreeCache / Demonstração POJOCache / Demonstração Cache Loaders Configurações

Page 3: JBoss Cache

JBoss Cache

Consiste em dois módulos– TreeCache

Dados em estrutura de árvore Replicação, transação Utiliza JGroups

– PojoCache “Acima” do TreeCache Replicação de objetos POJO Utiliza AOP

Page 4: JBoss Cache

Versão Atual

JBoss Cache 1.4.0 “Jalapeno” Integrado ao JBoss App. Server como

MBean service. Standalone – Pode rodar em qualquer Java

EE Server ( WebLogic e WebSphere) e também em um processo Java fora de um servidor de applicação.

Page 5: JBoss Cache

Aplicações

JBoss Cache como segundo nível de cache para o Hibernate

Replicação de objetos de sessão em um cluster Cópia local de dados “caros”:

– Banco de dados ( acesso mais lento )– Dados calculados ( faz um cálculo )– Parte de conjunto muito grande– Dados remotos, onde o tráfego é lento

Page 6: JBoss Cache

Organização dos dados

b c

a

d

e f

Full Qualified Name ( Fqn ) = /a/d/f

Page 7: JBoss Cache

TreeCache API

put (Fqn path,Object key, Object value) put (Fqn path,Object key, Map data) Object get (Fqn path,Object key) remove(Fqn path) remove(Fqn path, Object key)

Page 8: JBoss Cache

TreeCache Exemplo 1 / Demonstração

import org.jboss.cache.*;

TreeCache tree = new TreeCache();PropertyConfigurator config = new PropertyConfigurator();config.configure(tree, "META-INF/replSync-service.xml");

tree.startService();tree.put("/a/b/c", "chave", "valor1");

Page 9: JBoss Cache

POJOCache API

putObject (Fqn path,Object pojo) Object getObject (Fqn path) removeObject(Fqn path)

O objeto que será posto no cache:– @org.jboss.cache.aop.annotation.InstanceOfPojoCacheable

Page 10: JBoss Cache

POJOCache Interceptadores

POJO Cache

Objeto

CacheInterceptor

1 2

3

45

6

Page 11: JBoss Cache

POJOCache Exemplo 2 / Demonstração

// Import necessários…

TreeCache tree = new PojoCache();PropertyConfigurator config = new PropertyConfigurator();config.configure(tree, "META-INF/replSync-service.xml");

Person joe = new Person();joe.setName("Joao Batista");joe.setAge(31);Address addr = new Address();addr.setCity("Sao Paulo");addr.setStreet("Bosque Saude, 56");addr.setZip(04136-222);joe.setAddress(addr);

tree.startService(); tree.putObject("/aop/joe", joe);

Page 12: JBoss Cache

POJOCache com TransaçãoExemplo 3 / Demonstração

//-- Import necessários…DummyTransactionManager.getInstance();

Properties prop = new Properties();prop.put(Context.INITIAL_CONTEXT_FACTORY,"org.jboss.cache.tra

nsaction.DummyContextFactory");UserTransaction tx = (UserTransaction)new

InitialContext(prop).lookup("UserTransaction");

PojoCache tree = new PojoCache();PropertyConfigurator config = new PropertyConfigurator();config.configure(tree, "META-INF/replSync-service.xml");

//-- Criação do Person e Address, etc…tree.startService(); tree.putObject("/aop/joe", joe);

tx.begin();joe.setAge(41);tx.commit();

Page 13: JBoss Cache

POJOCache com CacheLoaderExemplo 4 / Demonstração

//-- Import necessários…//-- o mesmo do exemplo anterior…

config.configure(tree, "META-INF/oodb-service.xml");tree.startService();

if(!tree.exists("/aop/joe")) {

print("Criando um entrada no cache"); //-- Cria Person e Addres..

}else {

print("O Cache ja tem a entrada /aop/joe");}

Page 14: JBoss Cache

Cenários CacheLoadersRepositório compartilhado

Replicação

Repositório

CacheLoader CacheLoader

Page 15: JBoss Cache

Cenários CacheLoadersRepositório único

Replicação

Repositório

CacheLoader

Page 16: JBoss Cache

Cenários CacheLoadersRepositórios isolados

Replicação

Repositório

CacheLoader

Repositório

CacheLoader

Page 17: JBoss Cache

Configuração JBoss CacheModo de replicação

CacheMode– Sem replicação

LOCAL

– Com replicação REPL_SYNC REPL_ASYNC

– Com invalidação INVALIDATE_SYNC INVALIDATE_ASYNC

Page 18: JBoss Cache

Configuração JBoss Cache Transação

IsolationLevel– SERIALIZABLE– REPEATABLE_READ (default)– READ_COMMITTED– READ_UNCOMMITTED– NONE

NodeLockingScheme– OPTIMISTIC– PESSIMISTIC (default)

Page 19: JBoss Cache

Configuração JBoss CacheReplicação entre um subgrupo

buddyReplicationEnabled– TRUE/FALSE

buddyLocatorProperties– numBuddies = 5– ignoreColocatedBuddies = true

buddyPoolName

Page 20: JBoss Cache

Configuração JBoss CacheInvalidação de Cache “Eviction Policy”

EvictionPolicyClass– LRUPolicy, LFUPolicy, MRUPolicy e FIFOPolicy

Region ( fqn de um nó )– maxNodes, minNodes– timeToLiveSeconds– maxAgeSeconds

wakeUpIntervalSeconds

Page 21: JBoss Cache

Configuração JBoss CacheCache Loaders

Modo de operação– passivation= true/false– preload=(fqn do nó)– shared=true/false

Para cada cache Loaders– class– location (onde está o repositório)– async=true/false– purgeOnStartup=true/false– ignoreModifications=true/false

Page 22: JBoss Cache

JBoss CacheDúvidas/Perguntas

Helves H. Domingues

MAC 5863 - Sistemas de Middleware Avançados

Prof. Francisco Reverbel