JBoss Cache

Post on 31-Jan-2016

67 views 0 download

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

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 Replicação, transação Utiliza JGroups

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

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.

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

Organização dos dados

b c

a

d

e f

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

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)

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");

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

POJOCache Interceptadores

POJO Cache

Objeto

CacheInterceptor

1 2

3

45

6

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);

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();

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");}

Cenários CacheLoadersRepositório compartilhado

Replicação

Repositório

CacheLoader CacheLoader

Cenários CacheLoadersRepositório único

Replicação

Repositório

CacheLoader

Cenários CacheLoadersRepositórios isolados

Replicação

Repositório

CacheLoader

Repositório

CacheLoader

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

Configuração JBoss Cache Transação

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

NodeLockingScheme– OPTIMISTIC– PESSIMISTIC (default)

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

buddyReplicationEnabled– TRUE/FALSE

buddyLocatorProperties– numBuddies = 5– ignoreColocatedBuddies = true

buddyPoolName

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

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

JBoss CacheDúvidas/Perguntas

Helves H. Domingues

MAC 5863 - Sistemas de Middleware Avançados

Prof. Francisco Reverbel