Memcached

Origem: Wikipédia, a enciclopédia livre.
Ir para: navegação, pesquisa
Translation Latin Alphabet.svg
Este artigo ou secção está a ser traduzido (desde fevereiro de 2013). Ajude e colabore com a tradução.


Memcached
Desenvolvedor Danga Interactive
Lançamento 22 de Maio de 2003 (2003-05-22)
Versão estável 1.4.15 (3 de setembro de 2012; há 107 semanas e 1 dia[1] )
Escrito em C
Sistema operativo Cross-platform
Gênero(s) distributed memory caching system
Licença BSD License
Página oficial www.memcached.org

Em computação, memcached é um sistema de cache em memória distribuído de propósitos gerais que foi originalmente desenvolvido pela Danga Interactive para o LiveJournal, mas é usado agora para muitos outros sites. É frequentemente usado para acelerar sites dinâmicos database-driven cacheando dados e Objetos na RAM para reduzir o número de vezes que uma fonte de dados externa (como um banco de dados ou uma API) deva ser acessada. O Memcached roda em Unix, Linux, Windows and Mac OS X e é distribuido sobre um permissive free software license.[2]

A API do memcached provê uma hash table gigante distribuida em múltiplas máquinas. Quando a tabela está cheia, inserções subsequentes fazem com que os dados antigos sejam expurgados em least recently used (LRU) order.[3] [4]

História[editar | editar código-fonte]

O memcached foi desenvolvido inicialmente por Brad Fitzpatrick para o site dele LiveJournal, em 22 de Maio de 2003.[5] [6] [7]

Arquitetura[editar | editar código-fonte]

O sistema usa uma arquitetura cliente-servidor. O servidor mantem um array associativo chave-valor; o cliente popula esse array e consulta-o. Chaves podem ter até 250 bytes e os valores podem ter no máximo 1MB (megabyte) de tamanho.

Clientes usam bibliotecas client-side para contactar os servidores que por padrão expõe seus serviços na porta 11211. Cada cliente conhece todos os servidores, esses não se comunicam entre si. Sé um cliente deseja setar ou ler o valor correspondente a uma chave, a biblioteca cliente primeiramente computa o hash da chave para determinar qual servidor usar. Então ele contacta o servidor. O servidor então computa um segundo hash da chave para determinar onde armazenar ou ler o valor correspondente.

O servidor mantém os valores em RAM. Se um servidor fica sem memória livre, ele descarta os valores mais antigos. Portanto, os clientes deve tratar o memcached como um cache transitório. Eles não deve devem contar com que os dados armazenados no memcahed ainda estarão lá quando ele precisarem. MemcacheDB, Couchbase Server, Tarantool e outros bancos de dados proveem armazenamento persistente enquanto mantém a compatibilidade com o protocolo do memcached.

Se todas as bibliotecas client usam o mesmo algoritmo de hash para determinar o servidos, então os clientes pode ler os dados cacheados um dos outros. Isso é obviamente desejável.

Um implementação típica terá varios servidores e muitos clientes. Porém é possivel usar o memcached em um único computador, agindo como cliente e servidor.

Segurança[editar | editar código-fonte]

A maioria das implantações do memcached estão dentro de uma rede confiável onde os clientes podem se conectar livremente a qualquer servidor. Há casos, contudo, em que o memcached é implementado em uma rede não confiável ou quando os administradores gostariam de exercitar controle sobre os clientes que estão conectando.

Uma apresentação na BlackHat USA 2010 revelou que um grande número de grande sites públicos deixaram seus memcached abertos para inspeção, análise, obtenção e modificação de dados.[8]


Ver também[editar | editar código-fonte]

Portal A Wikipédia possui o portal:
Portal A Wikipédia possui o portal:

Referências

Links externos[editar | editar código-fonte]

Distribuições Comerciais com Suporte[editar | editar código-fonte]