web-dev-qa-db-fra.com

Quel est le serveur memcached

Je suis un débutant dans l'apprentissage de memcached. Le serveur memcached m'a le plus dérouté. Puis-je le voir comme un ordinateur à serveur unique comme un serveur Web? Je suis également confus quant à la relation entre le serveur memcached et le client, sont-ils situés sur des ordinateurs différents?

42
Allen Jee

Je suis d'accord avec la plupart des choses auxquelles @phihag a répondu mais je dois clarifier certaines choses.

Memcached stocke les données selon une clé (phihag l'a appelé un identifiant, à ne pas confondre avec les identifiants de base de données). Les données peuvent être de différentes tailles afin que vous puissiez stocker de petits bits (comme 1 enregistrement extrait de la base de données) ou vous pouvez stocker d'énormes blocs de données (comme des centaines d'enregistrements, ou des pages html finies entières).

Memcached n'est pas généralement utilisé sur la même machine que le serveur d'applications, la raison en est qu'il est conçu pour être utilisé via TCP (il serait accessible via sockets s'il était conçu pour fonctionner sur le même serveur) et il a été conçu comme un serveur de mise en commun.

La partie mise en commun est intéressante - vous pouvez avoir 10 machines exécutant Memcached chacune allouant un maximum de 10 Go de RAM à cet effet. 10 * 10 = 100 Go d'espace RAM.

Lorsque vous écrivez une valeur dans Memcached, un seul (au hasard ou via certains algorithmes) des serveurs la stocke. Lorsque vous essayez de lire une valeur de Memcached, seul le serveur qui l'a stockée vous l'enverra.

Donc en effet vous pouvez mettre toutes les bases de données/memcached/application/fileserver sur la même machine, et généralement vous faites cela pour votre sandbox de développement. Mais vous aussi pouvez mettre chacun sur une machine distincte et toute autre combinaison des deux.

Si vous n'avez besoin que d'un seul serveur Memcached, vous serez probablement d'accord pour l'héberger sur la même machine que le code d'application.

Si vous commencez à utiliser un serveur de cache frontal tel que le vernis ou que vous configurez NginX en tant que serveur de cache frontal, vous devrez configurer certains serveurs Memcached pour stocker les données que ces serveurs de cache frontal mettent en cache.

Si vous distribuez votre base de données sur plusieurs serveurs et des serveurs de fichiers dans un CDN, cela signifie que votre application gère un grand nombre de données dans un court laps de temps, vous aurez donc besoin de beaucoup d'espace RAM qui ne pouvait pas être disponible sur un seul serveur d'applications.

Et comme l'extension d'un pool de mémoire pour un serveur Memcached est aussi simple que l'ajout de l'IP du nouveau serveur à la liste, vous évoluerez horizontalement comme sur de nombreux serveurs (ce qui est la véritable utilisation typique de Memcached).

64
Mihai Stancu

Le serveur memcached est un programme qui gère les données que memcached stocke (à ne pas confondre avec un machine, qui peut également être appelé serveur). En théorie, il peut fonctionner sur n'importe quel ordinateur. Cependant, il est généralement exécuté sur la même machine que l'application principale.

L'application utilise ensuite son client memcached pour parler au serveur memcached et demander le contenu mis en cache. C'est plus rapide que d'interroger des données à partir d'une base de données traditionnelle car

  1. Un serveur memcached mappe simplement les ID aux valeurs et n'a jamais besoin d'analyser une table entière
  2. Le protocole memcached est plus simple. Le serveur n'a pas besoin d'analyser SQL ou plus, et le client n'a pas besoin de le créer.
  3. Étant donné que memcached ne nécessite pas la fiabilité d'une base de données (pensez aux sauvegardes, à l'isolement des pannes, au clustering, à la sécurité, etc.), elle peut être exécutée sur la même machine sur laquelle l'application s'exécute. Bien que vous puissiez exécuter une base de données sur la même machine que celle sur laquelle les applications s'exécutent, cela est mal vu pour les raisons ci-dessus.
28
phihag