• Nenhum resultado encontrado

3 Arquitecturas para Sistemas de Caching

3.4 Active caching

A técnica conhecida como active caching, referida em [Cao et al. 1999] e, posteriormente, em [Loukopoulos et al. 2005], apresenta-se como uma solução ao problema de criação de caching de informação dinâmica em proxies Web. Se, por um lado, a realização de caching de páginas HTML estáticas é uma prática corrente, por outro, a tentativa de realizar caching de queries OLAP (e respectivos resultados) em proxies Web não o é. Isto deve-se ao facto destas proxies não estarem preparadas para manter informação dinâmica e, sobretudo, por não possuírem os mecanismos necessários para a tratar. Esta nova abordagem ao problema de caching de queries OLAP em ambientes proxy, permite resolver este tipo de problemas à custa da associação de applets a cada url. Uma applet é um pequeno pedaço de código, escrito numa linguagem que garanta a independência de plataforma, possivelmente em JAVA. Estas applets têm como objectivo a realização de tarefas tais como, para uma determinada query, determinar qual a acção a realizar pelo servidor proxy, quer esta seja devolver ao utilizador uma nova página fornecida pela applet, quer seja devolver ao utilizador uma página já existente em cache. Com este tipo de variedade de soluções é até possível que a applet possa realizar operações sobre informações mantidas em cache, por exemplo, agregações de dados e construção de páginas Web a serem devolvidas ao utilizador.

Quando um proxy é contactado por um utilizador, este tem autonomia para decidir não invocar a applet associada ao url requisitado, embora seja forçado a reencaminhar o pedido do utilizador directamente para o servidor central. Isto acontece assim, pois a única restrição que é imposta à applet é o facto de esta não poder devolver ao utilizador informação mantida em cache sem invocar a applet associada. Caso este “contrato” não fosse cumprido, poderia acontecer que o utilizador estivesse a consultar informação que, apesar de ter sido mantida em cache, já não se encontrar actualizada (ou até mesmo correcta).

Com este tipo de abordagem é possível retirar uma grande quantidade de carga computacional do servidor, pois, embora alguns dos pedidos sejam ainda direccionados para este, a grande maioria é já tratada pelas applets de forma independente do nodo central. Desta forma, a utilização de applets nos servidores proxy, distribui a carga computacional por todos estes, aumentando assim a disponibilidade e fiabilidade de todo o sistema.

Em [Cao et al. 1999] foi definida uma interface à qual deverão obedecer todas as applets, bem como um protocolo de actuação das proxies envolvidas neste sistema. De entre as normas regentes do protocolo destacam-se as seguintes:

 Caso um documento presente na cache seja requisitado pelo utilizador, o proxy optará por invocar a applet associada a este pedido ou, em alternativa, reencaminhar o pedido directamente para o servidor central.

 Se, por algum motivo, a execução da applet falhar, o pedido será directamente reencaminhado para o servidor central.

 Aquando do sucesso da execução de uma applet, o proxy deverá, em todos os casos, tomar a acção resultante desta execução.

No que diz respeito à interface a ser implementada pelas applets, a interface ActiveCacheInterface apenas define um método, de implementação obrigatória a todas as applets, com a seguinte assinatura:

public abstract int FromCache(String User_HTTP_Request, String

Client_IP_Address, String Client_Name, int Cache_File, int New_File) e os valores de retorno possíveis (e consequentes acções) são:

 1, o conteúdo de New_File deverá ser devolvido ao utilizador como resposta ao seu pedido http.

 0, o pedido poderá ser respondido com a informação mantida em Cache_File.

Existe ainda uma classe cujos métodos deverão ser invocados pela applet para que esta veja os seus pedidos realizados: a classe ActiveProxy. Nesta classe são disponibilizadas funcionalidades como o acesso aos ficheiros, a interrogação das caches, a gestão de questões relacionadas com concorrência, bem como o reencaminhamento de pedidos para os servidores centrais. Em [Cao et al. 1999] são apresentados alguns exemplos de applets que realizam tarefas como a gestão de permissões em processos de login, a gestão de anúncios dinâmicos em páginas Web (qual deverá ser apresentado, frequências de apresentação, etc), a gestão de informações específicas para cada utilizador, etc.

Estas primeiras applets a serem construídas têm como objectivo, não só testar a viabilidade deste paradigma de caching mas também aumentar o conhecimento relativo a este, permitindo uma rápida evolução e implementação de novas funcionalidades. Existe ainda uma outra classificação, com duas possibilidades, para este tipo de applets – negociadas e não-negociadas. As applets não negociadas são aquelas que provêm de servidores não certificados e têm como principal objectivo diminuir a carga de rede na entrada do servidor. As applets negociadas, por seu lado, provêm de servidores certificados e pretendem aumentar a disponibilidade e fiabilidade dos serviços prestados pela globalidade do sistema.

Em [Loukopoulos et al. 2005], em detrimento de uma explicação exaustiva da forma de implementação deste tipo de sistemas, os autores cingem-se à análise das motivações e consequências dessa implementação. Uma importante característica da utilização de active caching é o facto de esta técnica diminuir a latência de rede correspondente à transmissão de pedidos entre a Web proxy e o servidor Web, sendo as páginas construídas na proxy, que fica em termos de custo de transmissão, mais próxima do utilizador final. Desta forma, e apesar de se reconhecer que, trabalhando sob carga normal, o servidor Web é mais rápido a construir uma página do que um servidor proxy convencional, a construção da página no último permite reduzir consideravelmente a largura de banda gasta em trocas de mensagens entre estes dois pontos da rede. Os modelos de custo considerados têm em conta factores como a latência da rede, os custos relativos ao não encontrar uma determinada informação na cache (frequentemente referidos como miss penalty), as métricas de benefício associadas a uma determinada vista, etc.

No documento Manutenção de Caches para sistemas OLAP (páginas 47-50)

Documentos relacionados