memcached

Post on 30-Jun-2015

2.160 Views

Category:

Technology

1 Downloads

Preview:

Click to see full reader

TRANSCRIPT

Memcachedcache de objetos de alta

performance

Guilherme Chapiewskihttp://gc.blog.br

<guilherme.chapiewski@gmail.com>

O que é cache?

O que é cache?

“Em ciência da computação, cache é uma coleção de dados previamente computados, armazenados em algum local de acesso mais rápido que o local original, utilizado em casos aonde o dado original exige muito esforço computacional para ser obtido ou gerado.”

http://en.wikipedia.org/wiki/Cache

O que é cache?

“Em outras palavras, cache é um armazenamento temporário onde dados frequentemente acessados podem ser acessados com alta velocidade. Uma vez que o dado é armazenado no cache, acessos futuros à mesma informação podem ser feitos acessando a cópia cacheada ao invés de re-computar o dado original, fazendo com que o tempo médio de acesso seja menor.”

http://en.wikipedia.org/wiki/Cache

Porque devemos usar

cache?

Porque devemos usar cache?

Poupar recursos computacionais (especialmente os compartilhados).

Melhorar o tempo de resposta para os usuários da aplicação.

Aumentar a capacidade da aplicação (atender mais usuários).

O que é Memcached?

O que é o Memcached?

Sistema de cache de objetos em memória concebido para aumentar a velocidade de aplicações dinâmicas aliviando a carga do banco de dados.

Desenvolvido pela Danga Interactive para aumentar a velocidade do LiveJournal.com, um site com 20 milhões+ de visualizações de páginas dinâmicas por dia!

Quais vantagens trouxe para o LiveJournal.com?

Reduziu drasticamente a utilização de banco de dados.

Melhorou significativamente o tempo de resposta da aplicação para o usuário.

Aumentou a velocidade de resposta do banco de dados nos casos de acesso à informações não cacheadas devido a baixa utilização do mesmo.

Como funciona?

Como funciona o Memcached:

Fica fora da JVM - é um daemon escutando em alguma porta esperando por conexões.

Funciona como se fosse um grande hash table, armazenando pares de chave=valor. Através de uma chave é possível armazenar ou obter um valor qualquer.

A aplicação usa um cliente que se conecta ao Memcached para armazenar e obter os dados.

Do ponto de vista da aplicação o funcionamento é idêntico a outras engines de cache como JBossCache, EhCache ou OSCache.

Como funciona o Memcached:

Configuração do ambiente:

Configura-se a quantidade de instâncias de Memcached desejadas.

O cliente é configurado com o endereço de todas as instâncias de Memcached, ou seja, em todos os applications servers todos os clientes terão a mesma configuração.

É o cliente que decide qual servidor de Memcached atenderá cada requisição baseado num hash gerado a partir da chave utilizada para o cache de um determinado valor.

Exemplo:

Passo 1: a aplicaçao solicita as chaves foo, bar e baz utilizando o cliente do Memcached, que calcula o hash das chaves determinando qual servidor atenderá a requisição.

Exemplo:

Passo 2: o cliente do Memcached faz paralelamente resuisições à todos os servidores relevantes.

Exemplo:

Passo 3: o Memcached envia respostas ao cliente que fez a requisição.

Exemplo:

Passo 4: o cliente do Memcached retorna os dados para a aplicação, encapsulando toda a complexidade da infraestrutura.

Alguns pontos: Somente o primeiro acesso à uma chave gera cache. Os

acessos seguintes são “cache hit”. Mesmo que o segundo acesso seja feito por outro

application server, todos eles sempre irão no mesmo Memcached para uma determinada chave.

Todo cache expira depois de um determinado tempo (configurado pelo usuário no momento da criação da entrada no cache).

Se a memória do Memcached acabar, os itens mais antigos vão sendo removidos para dar espaço aos novos (LRU).

Para saber mais:

O que é cache: http://en.wikipedia.org/wiki/Cache

Site do Memcached: http://www.danga.com/memcached/

Memcached FAQ: http://www.socialtext.net/memcached/index.cgi?faq

Artigo sobre cache distribuído com Memcached: http://www.linuxjournal.com/article/7451

top related