Memcached: Integrando com Tomcat e Java

O crescimento da audiência em aplicações baseadas em nuvem faz surgir necessidades de otimização e possibilidade de escalar a aplicação distribuindo os acessos por diversos servidores.
Técnicas baseadas em cache local ajudam a diminuir a carga sobre as estruturas de Rede e Banco de dados, além de evitar latência e concorrência ao acesso a Dados.
Mas ainda temos problemas relacionados a sincronização de Sessões HTTP, o que faz com que diversas aplicações sejam obrigadas a implementar Session Stickness na distribuição dos acessos aos servidores, gerando um volume de acessos desigual entre os servidores.
Neste artigo serão demonstradas formas de Implementar o Memcached para gerenciar as sessões no Tomcat, e também como é simples gravar e ler dados do Memcached.

Memcached: O que é e o Que faz?

Como descrito no site do Memcached, ele é um sistema de armazenamento em memória baseado na estrutura de Chave e Valor, ou seja, você grava os dados indexando-os por uma chave única, é desenhado para guardar pequenas quantidades de dados por entrada, podendo ser Strings ou Objetos, podendo esses dados serem resultados de chamadas de Banco de Dados, APIs ou renderização de página. Por possuir natureza genérica, pode ser adaptado a uma infinidade de objetivos, originalmente foi pensado para ser usado em melhoria de performance de páginas web dinâmicas, aliviando a carga dos bancos de dados, uma vez que é possível implementar um repositório de dados em memória usando-o.

Instalação do Memcached(servidor)

No Linux:

yum install memcached

No Windows:

O Memcached foi feito originalmente para Linux, sem ter o Windows como alvo para uso, deste modo o site oficial não oferece suporte para Windows. Pode-se encontrar na internet alguns sites que ajudam a instalar o Memcached no windows, cito como exemplo este site. Outra maneira de ter o Memcached funcionando no windows é baixar seu código fonte diretamente deste link no GitHub e compilá-lo usando o GCC.

Repositório Memcached no github:

git clone git://github.com/memcached/memcached.git

Configurando o controle de sessões usando Memcached

Itens necessários

  • memcached-session-manager-[versão].jar (Versão atual 1.6.5)
  • memcached-session-manager-tc[n]-[versão].jar (Para Tomcat6 n=6 e para Tomcat7 n=7)
  • spymemcached-[versão].jar

Faça o download dos itens acima clicando [Aqui] e [Aqui].

Copie os itens acima para a pasta lib do Tomcat.

Adicione ao context.xml, encontrado na pasta conf do Tomcat

<Manager className="de.javakaffee.web.msm.MemcachedBackupSessionManager"
memcachedNodes="n1:[SERVIDOR]:[PORTA]"
requestUriIgnorePattern=".*.(ico|png|gif|jpg|css|js)" />;

Listagem 1: Configuração do Session Manager do Tomcat usando Memcached

Spycached: Um sabor Java para Integração com Memcached

Dependência Maven

<repository>
<id>spy</id>
<name>Spy Repository</name>
<layout>default</layout>
<url>http://files.couchbase.com/maven2/</url>
</repository>

Listagem 2:  Repositório maven para os arquivos do Spycached

<dependency>
<groupId>spy</groupId>
<artifactId>spymemcached</artifactId>
<version>2.8.1</version>
<scope>provided</scope>
</dependency>

Listagem 3: Dependência maven do Spycached

Como Gravar e Ler dados no Memcached usando Java

public void set(String key, String value)  {

MemcachedClient c = new MemcachedClient(new InetSocketAddress([endereco],[porta]));

c.set(key, [tempo de vida do registro], value.getBytes());

}

Listagem 4 – Gravando dados no Memcached – Implementação Java com Spycached

public String get(String key)  { MemcachedClient c = new MemcachedClient(new InetSocketAddress([endereco],[porta])); byte[] respByte = (byte[]) c.get(key); if (respByte != null) { String retorno = new String(respByte); if (StringUtils.isNotBlank(retorno)) { return retorno; } } }

Listagem 5 – Lendo dados no Memcached – Implementação Java com Spycached

 

Conclusão

Como podemos notar o Memcached é uma ferramenta simples mas que traz consigo grande poder, sua instalação e integração com o Tomcat ou sua integração no nível de código é muito simples de ser feita, seus métodos são fáceis e descomplicados, gravar e ler dados não consome mais do que algumas linhas. Além dos métodos mostrados neste post é possível criar outros códigos conforme a necessidade da aplicação, uma boa leitura para descobrir todo potencial do Memcached é o Javadoc do Spycached, acesse-o clicando aqui.

Referências externas

Memcached – site oficial

Instalação Memcached – Windows

Memcached – GIT

JAR – Memcached session manager

JAR – Spycached

Javadoc – Spycached

Por LUIZ COUTO

Postado em: 12 de dezembro de 2013

Confira outros artigos do nosso blog

REST não é JSON

21 de agosto de 2017

Bruno Sofiato

[Webinar] Profile de aplicações Java com Oracle Mission Control e Flight Recorder

24 de julho de 2017

Danival Calegari

Criando Mocks de serviços REST com SoapUI

27 de junho de 2017

Monise Costa

JavaScript 6: diferença entre var, let e const

09 de maio de 2017

Otávio Felipe do Prado

Deixe seu comentário