Archive for junho \05\UTC 2010

Web caching para uma Internet mais rápida

5 de junho de 2010

Rodrigo Filipe Silva Carramate


Web caching nada mais é do que um processo pelo qual se armazena localmente conteúdo disponível na internet, a fim de minimizar o tráfego de rede e sua latência [1]. Apesar de parecer um conceito simples e de fácil compreensão, temos no web caching uma grande ajuda em dois fatores críticos nas redes atuais: a largura de banda [2] e a latência.

Devido à queda no custo da Internet de banda larga para o usuário final doméstico e empresarial nos últimos anos, temos muitas vezes a falsa impressão de que largura de banda se tornou algo economicamente acessível. Na verdade isto é um equívoco, uma vez que esse tipo de usuário paga, na verdade, por uma concessão que, segundo o SLA [3] (em português “Acordo do nível de serviço”), lhe garante apenas 10% do que contrata nominalmente. Temos porém exemplos em que a situação é bastante diferente, como no caso de pequenos provedores, em que há necessidade de um SLA que garanta algo próximo dos 100% da banda; nestes casos temos preços bastante elevados para o total de banda contratado. Desta forma, quanto menor for a demanda de banda nessas redes, menor será o custo com contratação de banda.

Outro grande problema que frequentemente encontramos é a baixa latência. Este costuma ser mais notado quando utilizamos algum serviço de streaming [4] diretamente da Internet, seja ao realizar uma video-conferência ou ao assistir a algum vídeo diretamente da Internet. Geralmente o sintoma mais comum em uma rede com baixa latência são travamentos frequentes durante a execução dessas tarefas.

Infelizmente, o web caching é limitado apenas ao caso da execução de conteúdo arquivado, porém, nesse contexto o web caching se torna um excelente aliado: ao manter em servidores locais o conteúdo da Internet mais acessado, evitam-se acessos externos desnecessários, sendo o mesmo conteúdo repassado diretamente pelos servidores ao usuário. Assim, além de o usuário receber a informação muito mais rapidamente, permitindo uma navegação muito mais proveitosa, há uma economia considerável de recursos, já que a necessidade de banda diminui consideravelmente.

Além de beneficiar a velocidade do acesso dos usuários da sua rede à Internet, o web caching ainda tem outro grande atrativo: o Squid [5], que é o software de web caching mais utilizado mundialmente tem seu código aberto, o que significa que todos podem estudá-lo e o melhorar. Além disso, felizmente alguns dos programadores do Squid têm permitido que seus usuários o possam usar gratuitamente.

Devemos entender também que há vários tipos de caching, entre eles o caching feito na própria máquina e aquele feito na rede local. O primeiro é mais comumente feito pelo próprio navegador, possibilitando que se volte de maneira praticamente instantânea a páginas visitadas recentemente. O segundo, foco deste artigo, objetiva criar um cache compartilhado entre os usuários de uma mesma rede, de tal modo que se um usuário acessar uma determinada página, o servidor grava todo seu conteúdo automaticamente e distribui a cópia a cada uma das próximas tentativas de acesso.

A aquisição de uma página por um navegador sem uso de web caching se dá pelo contato direto entre o cliente e o servidor que hospeda a página, havendo transferência direta dos dados. Quando se utiliza o web caching, o navegador faz a requisição da mesma forma, porém quem recebe e interpreta o pedido é o servidor de web cache. Este procura pela página em seu cache e, caso a possua, avalia sua idade e a compara com a sua data de validade estipulada pelo criador da página ou segundo um conjunto de regras estipuladas pelo próprio servidor de web cache. Caso a página ainda seja válida, a envia ao cliente; caso contrário, redireciona o cliente à página original e cria em seu cache uma cópia da mesma.

Um problema que pode ocorrer é dado pelo chamado balanço de carga: para dividir o trabalho entre servidores distintos, um mesmo conteúdo é reescrito em URLs semelhantes, mas não iguais. Por exemplo, em [6] é dado o exemplo de uma mesma imagem armazenada em 3 diferentes servidores do Orkut:

http://img1.orkut.com/imagem1.jpg (1)
http://img2.orkut.com/imagem1.jpg (2)
http://img3.orkut.com/imagem1.jpg (3)

Como o Squid trabalha através de URLs, ele entenderia que são 3 arquivos diferentes, o que causaria muito mais transferências do que necessário. Sendo assim, há softwares como o InComum [7], que podem ser programados para dar ao Squid a habilidade de reconhecer essa similaridade.

O processamento da URL para detectar a uniformidade pode ser bastante complexo, uma vez que a URL pode conter muito mais informações do que aquela do nome do servidor e do arquivo. Podem haver, por exemplo, informações para controle da sessão.

Conclusão

A arquitetura complexa e gigantesca de sistemas como o da Wikimedia[8], fundação que atende os projetos Wikipedia, Wikidictionary, entre outros, só é realizável devido à existência de formas para minimizar o tráfego interno e externo, através do Squid.

A imagem mostra um grupo muito grande de servidores formando um cluster, no qual há vários servidores squid.

Servidores da Wikimedia

Arquitetura de servidores da Wikimedia

Referências

[1] It’s the Latency, Stupid
http://www.stuartcheshire.org/rants/Latency.html
Visitado em 31/05/2010

[2] Largura de banda
http://pt.wikipedia.org/wiki/Largura_de_banda_%28telecomunica%C3%A7%C3%B5es%29
Visitado em 31/05/2010

[3] Acordo de nível de serviço
http://pt.wikipedia.org/wiki/Acordo_de_N%C3%ADvel_de_Servi%C3%A7o
Visitado em 31/05/2010

[4] Streaming Definition
http://www.techterms.com/definition/streaming
Visitado em 31/05/2010

[5] Squid: Optimising Web Delivery
http://www.squid-cache.org/
Visitado em 31/05/2010

[6] Cache efetivo de vídeos do Youtube com Squid
http://www.lucianopinheiro.net/portal/?q=node/130
Visitado em 31/05/2010

[7] inComum
http://sourceforge.net/projects/incomum/
Visitado em 31/05/2010

[8] Wikimedia servers
http://meta.wikimedia.org/wiki/Wikimedia_servers
Visitado em 31/05/2010

Saiba mais

Abordagens mais aprofundadas sobre web caching

[9] Web caching
http://www.ccda.biz/web/about/ac123/ac147/ac174/ac199/about_cisco_ipj_archive_article09186a00800c8903.html
Visitado em 31/05/2010

[10] Introdução ao Cache de Web
http://www.rnp.br/newsgen/0003/cache.html
Visitado em 31/05/2010

[11] Making the Most of Your Internet Connection
http://www.web-cache.com/
Visitado em 31/05/2010

Relação entre web caching e QoS

[12] ENHANCING QoS IN WEB CACHING USING DIFFERENTIATED SERVICES
http://www.tmrfindia.org/ijcsa/V3I17.pdf
Visitado em 31/05/2010

Licença Creative Commons
Esta obra foi licenciada com uma Licença Creative Commons – Atribuição – Partilha nos Mesmos Termos 3.0 Não Adaptada.

Anúncios