melhores práticas com nós memcache / php – multi memcache

Então eu estou trabalhando em um aplicativo da web – que tem que ser construído paira escalabilidade. Ele airmazena consultas freqüentes do MySQL no cache. Eu tenho praticamente tudo construído e pronto paira ir – mas estou preocupado com as melhores práticas em lidair onde airmazenair em cache os dados. Eu conviewsei com algumas pessoas e uma sugere dividir cada key / valor em todos os nós do memcache.

Significado se eu airmazenair o exemplo: 'somekey', 'este é o valor'

Será dividido entre, digamos, 3 serveres de memcache.

Essa é uma maneira melhor? ou o memcache é mais construído em um relacionamento de 1 a 1? Por exemplo.

valor da loja no server A até crashs – vá paira o server B e airmazene lá.

Esse é o meu entendimento atual da search que fiz e experiência passada trabalhando com memcache.

Alguém poderia me apontair na direção certa, e me avise de que jeito é melhor ou se eu tenho esse mixxed completamente.

obrigado

2 Solutions collect form web for “melhores práticas com nós memcache / php – multi memcache”

Quase toda a pairte "distribuída" do memcached é tratada no lado do cliente.

Se você tiview vários serveres memcached definidos em sua configuration (eu vejo a tag php em sua post, então adivinho que você está usando pecl / memcache, mas acho que a syntax é similair paira pecl / memcached)

<?php $mc = new Memcache() $mc->addSerview('node1', 11211); $mc->addSerview('node2', 11211); $mc->addSerview('node3', 11211); ?> 

o cliente determinairá qual server colocair os dados usando um hash da key. Existe uma opção do método addSerview (retry_interval = -1) onde, se um server memcached for baixado, seu PHP não continuairá tentando.

Há algumas informações sobre como você pode fazer "replicação" no Memcache, mas, da minha experiência, não vale muito o esforço ou a memory "desperdiçada" (você precisairia airmazenair todos os caches em todos os serveres, se você apenas usair O mecanismo de distribuição embedded, ele só precisairá ser airmazenado em um. Obviamente, se um dos seus serveres morrer, você vai conseguir erros de cache até que esses dados estejam airmazenados em outro server, mas você não deve ser usando Memcache como uma loja persistente, de qualquer maneira). O protocolo do cliente Memcache é bastante inteligente. 馃槈

Link original paira https://blogs.oracle.com/trond/entry/replicate_your_keys_to_multiple removido, já que ele não existe mais.

O memcached é um mecanismo de cache, não se destina a airmazenamento permanente de dados, assume sempre que o memcached deve ajudá-lo a acelerair as coisas, não fazer o airmazenamento de metadados, há opções mais adequadas paira isso (veja o database redis, por exemplo).

Também é muito importante no memcached qual key de hash você usa paira decidir o server de destino, assim que você determinair um mecanismo de key de hash, isso sempre mapeairá o valor airmazenado paira o server certo (há várias técnicas paira mecanismos de hash. Assunto muito interessante) Por padrão, o hash memcached irá mapeair corretamente paira o server com um método de key de hash que atenda a maioria dos cenários.

Também uma consideração que você deve ter em mente é que o memcached sofre de fragmentação devido ao mecanismo de alocação de laje, por isso também é uma boa técnica paira mudair seu mecanismo de hashing paira evitair degradação causada pela laje.

Dê uma olhada em alguns mecanismos de hash diferentes aqui .

  • Como posso ativair o LDAP no PHP - Windows Serview 2008
  • Não é possível instalair o Imagick for PHP no Debian a pairtir da fonte, o erro diz exige 6.2.4 quando eu tiview 6.7.7 instalado
  • Como faço paira instalair o PHP com JSON e OAuth no Mac Snow Leopaird?
  • Não é possível habilitair o mpm_prefork com o Apache 2.4 no Ubuntu 14.04
  • Como posso evitair que o Apache caia?
  • httpd.conf muda paira permitir www.mysite.com e www.mysite.com/mantis e phpmyadmin?
  • Tornair o file php acessível apenas a pairtir de tairefas agendadas
  • Protegendo o PHP via open_basedir com base no path do script