Se voce quiser enviar apenas uma notificacao de cache expirado, forcando assim cada maquina a recarregar o cache, o OSCache - http://www.opensymphony.com/oscache/ - da conta facil do recado. Caso voce queira transferir alguma estrutura de dados entre os nos, use o JBossCache - http://www.jboss.org/products/jbosscache .
Ambos sao muito faceis de serem usados.
Quando alguma alteracao (insert / update / delete ) for feita, vc dispara o evento - ou envia o objeto novo - para o resto das maquinas. Note que com o OSCache, cada maquina precisa recarregar os dados, enquanto com o jboss cache, apenas uma maquina (a que efetuou a alteracao) se encarrega de replicar os dados para as outras.
Rafael
mister_m
Ainda vale a pena dizer que a implementação do JBoss pode apresentar grandes problemas de performance dependendo do caso. Vale a pena fazer um teste, pois o uso de OSCache + uma extensão caseira de propagação pode ser bem melhor sob certas circunstâncias.
Rafael_Steil
Qual caso, por exemplo? De “extensao caseira”, ha alguma disponivel publicamente que vc recomende?
Rafael
mister_m
Muitos servidores, muitos objetos sendo invalidados por segundo e uma conexão não tão estável entre eles.
Se fosse pública, não era caseira As que eu vi até hoje de mais interessantes faziam um esquema de notificações em lote ou de priorização de notificações.
louds
Voce precisa de um cache distribuido coerente, opcionalmente com suporte a transações distribuidas.
Hehehe, brincando. Não tem como falar de caching distribuido sem saber os requisitos transacionais de consistencia dos dados que vão ser usados.
Rafael_Steil
Entendo. Agora, vc diz isso referindo-se a um possivel “problema de arquitetura” do jboss-cache?
vai saber se algum postou num blog… :mrgreen:
O pessoal do oscache em si nao parecia - pelo menos a pouco tempo atras - interessado em suportar no core esse tipo de funcionalidade, e no fundo, nao me parece ser algo simples de implementar, de maneira que funcione corretamente (aka, sem ter os problemas do jboss-cache listados por vc )
Rafael
mister_m
Levando em conta que o negócio é intrinsicamente ligado a performance, sim
Você está certo e eles também
saoj
Obrigado pelas dicas pessoal.
A minha aplicação por enquanto ainda vai ficar bem folgada rodando numa máquina web só, logo acho que começar usando um cache distribuído é overkill.
Mas eu queria deixar a arquitetura flexível para escalar depois.
Valeu pessoal !
Rafael_Steil
Bom, entao meta uma interface e seja feliz
Rafael
louds
Se o cache é local apenas, basta você coordenar o update dele com o gerenciamento de transações e locking do banco.
mister_m
Acredito que até o EHCache deva resolver seu problema com um pé nas costas então, saoj.