Comment memcache est-il distribué?

14

J'ai memcache en cours d'exécution sur 5 serveurs Web qui sont tous sur la liste des hôtes en php et dont la charge est équilibrée à l'avant. Donc, puisque memcached est censé être distribué, le client php décidera sur quel nœud écrire les paires clé / valeur et conservera un enregistrement pour une récupération ultérieure à partir de ce même nœud, n'est-ce pas?

Ou le code client php n'est-il pas assez intelligent pour le faire et écrit-il plutôt les données sur tous les serveurs puis en prend-il au hasard un dans le pool pour le lire?

Mais si c'est le cas; écrire dans toutes les instances de la liste / pool d'hôtes; alors à quoi sert un outil comme http://repcached.sourceforge.net/ qui réplique les données pour la redondance.

La raison pour laquelle je pose la question est parce que tous les serveurs à charge équilibrée l'exécutent et s'il écrit en effet sur tous les serveurs du pool, il semble que cela vainc le but de sa distribution et je devrais donc simplement forcer php à se retirer de l'hôte dans la liste d'hôtes qui est localhost.

Mike
la source

Réponses:

16

La bibliothèque Memecache est responsable de l'envoi de la demande au bon serveur. La bibliothèque utilise la liste que vous fournissez pour envoyer des demandes à différents serveurs et memcache ne fait pas de réplication.

Reportez-vous à l' article du journal Linux . Il explique plus en détail le fonctionnement de memcache.

Sameer
la source
Excellent article juste ce dont j'avais besoin, merci Sameer. J'ai également trouvé celui-ci qui était extrêmement utile: code.google.com/p/memcached/wiki/NewConfiguringClient
Mike
Notez que memcache partitionne les données sur plusieurs ordinateurs en fonction de la clé, cela signifie qu'il peut être bon de répartir le travail uniformément sur l'espace clé afin qu'une machine ne soit pas touchée avec tout le trafic, si tout est pour une seule clé.
Lee Penkman