Distribuição de Dados com Infinispan na Java Magazine 95
Autor: Wagner Santos | Publicado: 2011-10-13T00:45:00-03:00

Este mês, foi publicado na revista Java Magazine 95, um artigo meu sobre JBoss Infinispan.
Uma das maneiras mais fáceis de melhorar a performance de uma aplicação é trazer os dados para mais perto dela e manter um formato que seja simples para ela consumir.

A maioria das aplicações escritas em Java, consomem dados que geralmente são armazenados em bancos de dados relacionais, como Oracle, MySQL, entre outros. Isto significa que para a aplicação consumir estes dados, precisa converter as informações que estão armazenadas em tabelas em objetos.
Por conta da natureza tabular destes dados, o processo de conversão de dados para objeto em memória pode ser muito custoso, e nem sempre é fácil. Para remediar estes problemas, ferramentas ORM como Hibernate e EclipseLink utilizam mecanismos de cache para armazenar os objetos internamente. Entretanto, quando a aplicação cresce e é necessário escalá-la para múltiplos servidores, e neste momento, começam a surgir vários problemas de sincronização de dados.
Para ajudar a resolver este problema, podemos utilizar uma plataforma de Data Grid. Dentro desta categoria, existem diversos frameworks e soluções, entre eles: Hazelcast, GigaSpaces, Oracle Coherence, Joafip, GridGain, ExtremeScale e JBoss Infinispan. .
Utilizei o JBoss Infinispan recentemente, em um projeto de grande porte, de uma nova URA inteligente, para uma grande empresa de Telecom da Itália. O sistema, foi distribuído em dois sites diferentes, com clusters com diversas máquinas.
A partir daí, surgiu a idéia de fazer este artigo. Neste artigo abordo além da computação em grid com ênfase na plataforma de datagrid Infinispan, abordo e a importância de seu uso em um ambiente corporativo, que tem necessidades mais específicas do que simplesmente criar um cache de dados.
Apresento os diferentes modos para criar um cache e seus conceitos, como Replicação, Invalidação, Distribuição, L1 Caching e Cache Local, assim como os benefícios de cada uma destas abordagens. E ao final, como transformar o Infinispan em uma solução NoSQL, utilizando Cache Stores com o Módulo REST.
Para concluir, apresento os módulos disponíveis para o desenvolvedor tirar ainda mais proveito desta poderosa plataforma, onde exploro como configurar um Módulo REST para acesso aos objetos no Grid via protocolo HTTP.

Sobre o Infinispan

Infinispan é uma plataforma para grid de dados open source distribuída pela JBoss. Geralmente, data grids são utilizados para reduzir a latência do banco de dados, prover alta disponibilidade e storage elástico dos dados, como soluções NoSQL. Data Grids podem ser utilizados em conjunto com bancos de dados tradicionais ou como cache distribuído, para acesso rápido aos dados.
Ao escolher o Infinispan no lugar de um simples cache, temos as seguintes vantagens:

Cluster: Podemos distribuir nosso cache em cluster com apenas algumas configurações;
Eviction: Mecanismo automático de eviction 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 persistir o estado dos objetos em um banco de dados ou em um arquivo no disco;
Suporte a JTA e compatibilidade com XA: Gerenciamento de transação com qualquer aplicação compatível com JTA;
Gerenciamento: É possível gerenciar e monitorar os objetos de uma instância do grid de dados através de componentes JMX ou utilizar um console gráfico com RHQ.

Caso se interesse por soluções desta natureza, entre em contato conosco!