Web Caching with
Consistent Hashing
Problemas com a Web
Redes congestionadas
 Servidores atolados

Web Caching
Utilizar conteúdo de um servidor
intermediário ao invés de utilizar o
conteúdo do servidor original
 Implementações Tradicionais

Cache centralizado
 Cache centralizado cooperativo
 Cache hierárquico
 Diretório

Hashing





Mapeia endereços diretamente para
máquinas cache
Não há necessidade de dados duplicados
Não há necessidade de servidores
centralizados
Não há necessidade de comunicação
entre as máquinas cache
Porém a utilização de uma função hash
padrão não suporta servidores dinâmicos
Consistent Hashing





Utilização de uma função (f) hash normal
[0,M]
Divide-se o valor obtido pela função pelo
seu valor máximo (M) [0,1]
É formado o círculo unitário
Cada cache é associado a um ponto no
círculo unitário
Cada endereço é associado ao cache que
esteja localizado no círculo unitário mais
próximo dele caminhando no sentido
horário
Consistent Hashing
Consistent Hashing
Pode ser implementado utilizando
uma árvore binária
 Tempo médio de busca para n
caches é O(log(n))
 Lógica de busca fica no browser


Ou no DNS, que acabou sendo a
solução escolhida
Propriedades




Para m máquinas cache e c clientes (com
cada com a visão de metade das máquina
cache)
Balanço: Em qualquer visão, os
endereços estão distribuídos
uniformemente sobre as máquinas caches
Carga: Em todas as visões, nenhuma
máquina tem mais do que O(log(c)) vezes
em média o número de endereços
Espalhamento: Nenhum endereço é
armazenado em mais do que O(log(c))
caches
Consistent Hashing

Resultados para 26804 endereços
diferentes:
Caches
# médio de Desvio
endereços
padrão
por cache
Desvio
padrão
como % da
média
3
8934
246
2.5
5
5360
173
3.2
8
3350
112
3.4
10
2680
68
2.6
Implementação
Apesar de parecer bastente simples
implementar Consistent Hashing, os
browsers atuais não provêm bons
mecanismos de extensão
 Solução híbrida utilizando JavaScript
+ DNS (Cache Resolver)

Implementação

Parte JavaScript:


Realiza um hash padrão sobre o
endereço mapeando-o para um
intervalo de 1000 nomes de caches
virtuais
Parte DNS:

Mapeia uma cache virtual para um
endereço IP físico utilizando Consistent
Hashing
Implementação
Foi utilizado BIND 8.0 sem
modificações
 Em conjunto com BIND, um
processo chamado dnshelper
monitora os caches e envia sinais
para o BIND notificando-o sobre
novos endereços mapeados

Consistent × Central
Consistent × Cooperative
Consistent × Cooperative
Extensões

Localidade



Balanceamento de Carga Avançado



Mecanismo para clientes utilizarem caches
geograficamente mais próximos
Utiliza o serviço DNS em duas camadas
Identifica as Hot Pages
Utiliza DNS para referenciar Hot Pages para
vários caches diferentes
Tolerância a Falhas

A implementação de Consistent Hashing já é
bastante tolerante a falhas
Conclusão



Caching é uma solução para os problemas
de tráfego enfrentados pela Web
Consistent Hashing é uma alternativa
simples e eficiente para implementar
caching
O uso eficiente de caching e consistent
hashing pode aumentar
significativamente a eficiência da Web
Como vender isso?
Venda caching para os servidores,
não para os clientes
 www.akamai.com

Download

Web Cacing with Consistent Hashing