Maison > Article > base de données > Comment implémenter le clustering dans Redis
1. Réplication maître-esclave
Principe de réplication maître-esclave :
Le serveur esclave se connecte au serveur principal et envoie la commande SYNC
Une fois que le serveur principal a reçu le nom SYNC, il commence à exécuter la commande BGSAVE pour générer le fichier RDB. et utilise le tampon pour enregistrer toutes les commandes d'écriture exécutées par la suite
Une fois le serveur maître BGSAVE exécuté, il envoie des fichiers d'instantanés à tous les serveurs esclaves et continue d'enregistrer les commandes d'écriture exécutées pendant. la période d'envoi ;
Après avoir reçu le fichier d'instantané, le serveur esclave supprime toutes les anciennes données et charge l'instantané reçu
Après le maître ; l'instantané du serveur est envoyé, il commence à envoyer la commande d'écriture dans le tampon au serveur esclave
Le serveur esclave termine le chargement de l'instantané, commence à recevoir les demandes de commande et exécute les commandes d'écriture de. le tampon du serveur maître ; (Initialisation du serveur esclave terminée)
Chaque fois que le serveur maître exécute une commande d'écriture, il enverra la même commande d'écriture au serveur esclave , et le serveur esclave reçoit et exécute la commande d'écriture reçue (Après l'initialisation du serveur esclave Opération )
Avantages et inconvénients de la réplication maître-esclave :
Avantages :
Prend en charge la réplication maître-esclave, l'hôte synchronise automatiquement les données avec l'esclave, et lit et écrit la séparation peut être effectuée
Afin de décharger la pression de l'opération de lecture du maître, le serveur esclave peut Le client fournit des services d'opération en lecture seule, et le service d'écriture doit toujours être complété par le maître
l'esclave peut également accepter les demandes de connexion et de synchronisation d'autres esclaves, ce qui peut efficacement soulager la pression de synchronisation du maître.
Master Server fournit des services aux esclaves de manière non bloquante. Ainsi lors de la synchronisation maître-esclave, les clients peuvent toujours soumettre des requêtes ou des demandes de modification.
Slave Server effectue également la synchronisation des données de manière non bloquante. Lors de la synchronisation, si un client soumet une demande de requête, Redis renvoie les données avant la synchronisation
Inconvénients :
Redis n'a pas de fonctions automatiques de tolérance aux pannes et de récupération. Le temps d'arrêt des machines hôtes et esclaves entraînera l'échec de certaines demandes de lecture et d'écriture frontales. Vous devez attendre que la machine redémarre ou changer manuellement l'adresse IP frontale pour récupérer. .
La machine maître est en panne. Avant le crash, certaines données n'ont pas pu être synchronisées avec la machine esclave à temps. Après le changement d'IP, une incohérence des données sera introduite, ce qui réduit la disponibilité de. le système.
Redis est difficile à prendre en charge l'expansion en ligne. Lorsque la capacité du cluster atteint la limite supérieure, l'expansion en ligne deviendra très compliquée.
2.Mode Sentinelle
Lorsque le serveur maître interrompt le service, un serveur esclave peut être mis à niveau vers le serveur maître pour continuer à fournir des services, mais ce processus nécessite une opération manuelle. À cette fin, Redis 2.8 fournit l'outil sentinelle pour mettre en œuvre des fonctions automatisées de surveillance du système et de récupération des pannes.
Le rôle de la sentinelle est de surveiller l'état de fonctionnement du système Redis. Ses fonctions comprennent les deux suivantes.
(1) Surveillez si le serveur maître et le serveur esclave fonctionnent normalement.
(2) Lorsque le serveur principal tombe en panne, le serveur esclave bascule automatiquement vers le serveur principal.
Comment fonctionne Sentinel :
Chaque processus Sentinel envoie un message au maître dans l'ensemble du cluster une fois par seconde, l'esclave l'envoie. une commande PING du serveur et d'autres processus Sentinel.
Si le temps écoulé depuis la dernière réponse valide à la commande PING dépasse la valeur spécifiée par l'option down-after-milliseconds, l'instance sera marquée par le processus Sentinel subjectivement hors ligne (. SDOWN)
Si un serveur maître est marqué comme subjectivement hors ligne (SDOWN), tous les processus Sentinel qui surveillent le serveur maître doivent commencer par Confirmer une fois par seconde que le serveur maître est bien entré l'état subjectif hors ligne
Lorsqu'il existe un nombre suffisant de processus Sentinel (supérieur ou égal à la valeur spécifiée dans le fichier de configuration) dans le spécifié S'il est confirmé que le serveur Maître est entré dans l'état subjectif hors ligne (SDOWN) dans la plage de temps, le serveur maître sera marqué comme objectivement hors ligne (ODOWN)
Dans des circonstances normales, chaque processus Sentinel enverra des commandes INFO à tous les serveurs maîtres et esclaves du cluster une fois toutes les 10 secondes.
Lorsque le serveur Maître est marqué comme objectivement hors ligne (ODOWN) par le processus Sentinel, le processus Sentinel envoie un message à tous les serveurs esclaves du serveur Maître hors ligne. La commande INFO passera d’une fois toutes les 10 secondes à une fois toutes les secondes.
S'il n'y a pas suffisamment de processus Sentinel pour accepter la mise hors ligne du serveur maître, le statut objectif hors ligne du serveur maître sera supprimé. Si le serveur maître envoie à nouveau la commande PING au processus Sentinel et renvoie une réponse valide, l'état subjectif hors ligne du serveur maître sera supprimé.
Avantages et inconvénients du mode Sentinelle
Avantages :
Sentinelle Le mode est basé sur le mode maître-esclave, et le mode sentinelle présente tous les avantages du mode maître-esclave.
Le maître et l'esclave peuvent être automatiquement commutés, ce qui rend le système plus robuste et utilisable.
Inconvénients :
Redis est difficile à prendre en charge l'expansion en ligne lorsque la capacité du cluster atteint la limite supérieure, en ligne. l’expansion deviendra très compliquée.
3.Redis-ClusterCluster
Le mode sentinelle de Redis peut essentiellement atteindre une haute disponibilité et une séparation en lecture-écriture, mais dans In ce mode, chaque serveur Redis stocke les mêmes données, ce qui est un gaspillage de mémoire, donc le mode cluster est ajouté à Redis 3.0 pour implémenter le stockage distribué de Redis, ce qui signifie que chaque nœud Redis stocke un contenu différent.
Redis-Cluster adopte une structure sans centre. Ses caractéristiques sont les suivantes :
Tous les nœuds redis sont interconnectés entre eux (mécanisme PING-PONG), et avec des protocoles binaires. sont utilisés en interne pour optimiser la vitesse et la bande passante.
La défaillance d'un nœud ne prend effet que lorsque plus de la moitié des nœuds du cluster détectent une défaillance.
Le client est directement connecté au nœud Redis, sans avoir besoin d'une couche proxy intermédiaire. Le client n'a pas besoin de se connecter à tous les nœuds du cluster, il suffit de se connecter à n'importe quel nœud disponible. nœud dans le cluster.
Méthode de travail :
Sur chaque nœud de Redis, il y a deux choses, l'une est l'emplacement, sa plage de valeurs est : 0- 16383. Un autre exemple est le cluster, qui peut être compris comme un plug-in de gestion de cluster. Lorsque notre clé d'accès arrive, redis obtiendra un résultat basé sur l'algorithme crc16, puis calculera le reste du résultat à 16384, de sorte que chaque clé correspondra à un emplacement de hachage numéroté entre 0 et 16383, à travers Cette valeur est utilisée pour trouver le nœud correspondant à l'emplacement correspondant, puis sauter automatiquement directement au nœud correspondant pour les opérations d'accès.
Afin de garantir une haute disponibilité, le cluster redis-cluster introduit le mode maître-esclave. Un nœud maître correspond à un ou plusieurs nœuds esclaves. Lorsque le nœud maître tombe en panne, les nœuds esclaves seront activés. Lorsque d'autres nœuds maîtres envoient une requête ping à un nœud maître A, si la communication entre plus de la moitié des nœuds maîtres et A expire, alors le nœud maître A est considéré comme étant en panne. Si le nœud maître A et son nœud esclave A1 sont en panne, le cluster ne pourra plus fournir de services.
Pour plus d'articles techniques liés à Redis, veuillez visiter la colonne Tutoriel Redis pour apprendre !
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!