memcached

19
Memcached cache de objetos de alta performance Guilherme Chapiewski http://gc.blog.br <[email protected]>

Upload: guilherme-chapiewski

Post on 30-Jun-2015

2.160 views

Category:

Technology


1 download

TRANSCRIPT

Page 1: Memcached

Memcachedcache de objetos de alta

performance

Guilherme Chapiewskihttp://gc.blog.br

<[email protected]>

Page 2: Memcached

O que é cache?

Page 3: Memcached

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

Page 4: Memcached

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

Page 5: Memcached

Porque devemos usar

cache?

Page 6: Memcached

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).

Page 7: Memcached

O que é Memcached?

Page 8: 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!

Page 9: Memcached

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.

Page 10: Memcached

Como funciona?

Page 11: Memcached

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.

Page 12: Memcached

Como funciona o Memcached:

Page 13: 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.

Page 14: Memcached

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.

Page 15: Memcached

Exemplo:

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

Page 16: Memcached

Exemplo:

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

Page 17: Memcached

Exemplo:

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

Page 18: Memcached

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).

Page 19: Memcached

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