Obrigado por visitar a devmedia.com.br!

Precisamos de você para divulgar nossos vídeos e cursos gratuitos para a comunidade.

Se você gosta da devmedia.com.br por favor dê-nos o seu clique para o Google+ e ajude outros desenvolvedores ao redor do mundo.



Obrigado por seu apoio!
Equipe DevMedia

sair sem compartilhar (x)
DevMedia - asp.net, Java, Delphi, SQL e web Design, tudo em um só lugar!
Bem vindo a DevMedia!
LOGIN:     SENHA:

  #Este é um post fechado

Este post está disponível para assinantes da Java Magazine DIGITAL ou para quem possui Créditos DevMedia. Clique aqui para saber mais sobre como abrir este post!



Artigo Java Magazine 73 - Introdução ao Terracotta

Um poderoso middleware open source para clustering Primeiros passos com o middleware capaz de armazenar seus objetos da rede de forma transparente, permitindo técnicas de alto desempenho e escalabilidade






BRK##: 42 - 42

Introdução ao Terracotta

Um poderoso middleware open source para clustering

Primeiros passos com o middleware capaz de armazenar seus objetos da rede de forma transparente, permitindo técnicas de alto desempenho e escalabilidade

Osvaldo Pinali Doederlein

 

De que trata o artigo:

Uma introdução ao Terracotta ES, um middleware open source para Java que sincroniza objetos de vários processos de forma eficiente e automática e sem exigir nenhuma alteração no seu código.

Para que serve:

Muitas aplicações de missão crítica precisam ser implantadas em cluster, fazer caching agressivo de dados persistentes, conteúdo gerado dinamicamente entre outras informações; ou simplesmente, sincronizar dados de forma imediata e eficiente com outros processos. A maneira mais fácil de satisfazer a estas necessidades é usando um middleware que coloca parte do heap da JVM “na rede”, permitindo que vários processos compartilhem os mesmos objetos. O Terracotta implementa esta idéia de forma transparente e com alto desempenho.

Em que situação o tema é útil:

Aplicações em cluster (Java EE ou não); aplicações que usam um SGBD e necessitam de um cache de segundo nível para melhorar o desempenho; aplicações web que geram muito conteúdo dinâmico, entre muitas outras.

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

Na Introdução de “Programando com Pools” (Edição 57), comecei dizendo: “A programação às vezes parece ser um campo tomado por uma enorme e confusa variedade de técnicas. (...) Fazendo um esforço de síntese, veremos que existe um número relativamente pequeno de fundamentos que embasam toda a programação.” Pooling é uma dessas técnicas fundamentais; podemos citar outra técnica igualmente fundamental e relacionada, o caching. São idéias parecidas, mas não iguais:

·      Um pool é uma coleção de objetos cuja criação é custosa, sendo mais eficiente um protocolo de aquisição / liberação permitindo reciclagem dos mesmos objetos em momentos distintos;

·      Um cache é uma coleção de objetos que replicam informações cuja consulta é custosa (como registros de um BD, objetos de outro processo, ou resultados de algum cálculo complexo).

É comum que o mesmo sistema implemente pools e caches: por exemplo, uma ferramenta de persistência OO como o Hibernate ou JPA pode conter pools de conexões com o SGBD, e um cache de entidades persistentes, entre outros.

A maior diferença entre um pool e um cache reside na maneira como os objetos são gerenciados. Num cache, os objetos são diferenciados, sendo identificados por IDs; já num pool, os objetos são “anônimos”, considerados iguais para os propósitos dos seus clientes, bastando pegar qualquer objeto que esteja disponível. Mas ambos são muito parecidos estruturalmente: são coleções que podem ser preenchidas e consultadas, suportando acesso concorrente, estratégias de gerenciamento de recursos (ex.: limitar o número de objetos contidos para evitar a exaustão de recursos externos ou da memória), e outras características comuns.

Uma terceira técnica igualmente fundamental é a distribuição: na minha definição particular, é a capacidade de tratar vários computadores como se fossem um só. Ou, alternativamente, fazer com que uma aplicação utilize ersos recursos – como CPUs, armazenamento, middlewares como SGBDs, e outras aplicações – de forma transparente em relação à sua disposição numa rede. A distribuição é um fator especialmente crítico em sistemas de grande porte (onde espalhamos a aplicação por várias máquinas que funcionam simultaneamente para idir a carga de trabalho), ou em sistemas de “missão crítica”, com baixa tolerância a falhas (onde replicamos a aplicação em máquinas que funcionam alternadamente, para que falhas isoladas não causem indisponibilidade).

Juntando tudo – como nós desenvolvedores não nascemos para ter uma vida fácil – é fatal que algum dia, tenhamos que juntar todas essas técnicas numa coisa só. Sim, um dia você terá que trabalhar com um pool distribuído, ou um cache distribuído. Quase todo desenvolvedor veterano já se deparou com sistemas que se beneficiariam de tais combinações (embora possa ter percebido o fato ou não). É possível criar soluções ad-hoc para estas necessidades; eu mesmo já fiz isso mais vezes do que gostaria de confessar. Mas é muito mais fácil adotar uma ferramenta que resolva o problema de forma simples e robusta. Neste artigo examinaremos esta ferramenta, o Terracotta.

 

Antes de seguir a leitura deste artigo, veja a apresentação elaborada por Osvaldo e entenda a importância do Terracotta; sem dúvida uma ferramenta importante e recomendada para todo desenvolvedor.

O problema

Vamos dar um exemplo simples, “mundo real”. Sua aplicação de vendas online tem uma tabela PRODUTO, que contém alguns milhares de registros, um para cada tipo de produto sendo vendido. Essa tabela é extremamente acessada, pois está envolvida no carrinho de compras, faturamento, controle de estoque, etc. – quase todas as entidades e operações importantes da aplicação. É óbvio que o acesso à tabela de produtos irá consumir uma quantidade significativa de recursos, com consultas envolvendo esta tabela várias vezes por segundo.

A solução

A resposta óbvia para este problema é: vamos fazer cache da tabela PRODUTOS. Ao inicializar a aplicação, carregamos esta tabela inteira para a memória, colocando-a em uma ou mais estruturas de dados que refletem as seleções mais comuns da tabela. Por exemplo, podemos ter um



ATENÇÃO! A exibição deste artigo foi interrompida.


  #Este é um post fechado

Este post está disponível para assinantes da Java Magazine DIGITAL ou para quem possui Créditos DevMedia. Clique aqui para saber mais sobre como abrir este post!







    0 COMENTÁRIO

[Fechar]

Este post é fechado - você precisa ter acesso ao post para incluir um comentário.


Nenhum comentário foi postado - seja o primeiro a comentar!



Autor
Osvaldo Pinali Doederlein

é Mestre em Engenharia de Software Orientado a Objetos e Arquiteto de Tecnologia da Visionnaire Informática, trabalhando em projetos de software e prospecção tecnológica.


Space do autor
Estatísticas
Favorito:
Comentários:
Feedback:
Utilidade:
0   0
[Fechar]

Você precisa estar logado para dar um feedback.

Clique aqui para efetuar o login
[Fechar]
Este post está disponível para assinantes da Java Magazine DIGITAL ou para quem possui Créditos DevMedia.

  Conheça os planos de créditos DevMedia e visualize esse post agora mesmo!

Plano conveniência – Neste plano este post custa R$ 4,90 (Compre agora)
Esse plano permite que você compre somente um post, pagando por ele seu preço sem desconto.

Plano ocasional: Aqui este post custa: R$ 1,96 (assinante) ou R$ 2,45 (não-assinante)
Este plano é ideal para quem tem interesse em mais de um post. Você compra um mínimo de R$ 50,00 em créditos e ganha, em média, 50% de desconto no preço do post. Compre Créditos agora!

Assinatura de Créditos (Plano econômico) – Aqui este post custa R$ 1,47
Este plano é ideal para quem tem interesse em muitos posts. Com esse plano você compra R$ 180,00 em créditos e ganha, em média, 80% de desconto no preço do post. Assine este plano agora!

> Saiba mais sobre o Sistema de Créditos DevMedia
web-03
DevMedia  |  Anuncie  |  Fale conosco
Hospedagem web por Porta 80 Web Hosting
2012 - Todos os Direitos Reservados a web-03