Si vous comptez sur des sentinelles pour atteindre une haute disponibilité de Redis et si vous souhaitez prendre en charge une concurrence élevée tout en hébergeant des quantités massives de données, vous avez besoin d'un cluster Redis. Le cluster Redis est une solution de stockage de données distribuée fournie par Redis. Le cluster partage des données via le partage de données et fournit des fonctions de réplication et de basculement.
Un cluster Redis se compose de plusieurs nœuds, et plusieurs nœuds sont connectés via la commande cluster meet. Le processus de négociation de nœud :
Le nœud A reçoit la commande cluster meet du client
A envoie un message de rencontre à B en fonction de l'adresse IP et du numéro de port reçus
Le nœud B reçoit le message de rencontre et renvoie pong
A sait que B a reçu le message de rencontre, renvoie un message ping et la poignée de main est réussie
Enfin, le nœud A diffusera les informations du nœud B aux autres nœuds du cluster via le protocole Gossip, et les autres nœuds serreront également la main de B
redis est enregistré sous forme de partitionnement de cluster Données, l'ensemble de la base de données du cluster est divisé en 16 384 emplacements. Chaque nœud du cluster peut traiter 0 à 16 384 emplacements. Lorsque les 16 384 emplacements de la base de données sont traités par les nœuds, le cluster est en ligne. disponible, tous les traitements géreront le statut hors ligne. Les emplacements peuvent être attribués aux nœuds correspondants pour traitement via la commande cluster addlots.
slot est un tableau de bits, la longueur du tableau est de 16384/8 = 2048, et chaque bit du tableau est représenté par 1 à traiter par le nœud, et 0 signifie non traité. Comme le montre la figure, il est représenté par 1. signifie que le nœud A traite les emplacements 0-7.
Lorsque le client envoie une commande au nœud, s'il s'avère que l'emplacement appartient au nœud actuel, le nœud exécutera la commande. Sinon, une commande MOVED sera renvoyée au client pour guider le client vers le nœud. nœud correct. (Le processus MOVED est automatique)
Si vous ajoutez ou supprimez des nœuds, il est également très pratique de réattribuer des emplacements. Redis fournit des outils pour aider à réaliser la migration des emplacements. L'ensemble du processus est entièrement en ligne et n'a pas besoin d'arrêter le service.
Si le nœud A envoie un message ping au nœud B et que le nœud B ne répond pas au pong dans le délai spécifié, alors le nœud A marquera le nœud B comme pfail et suspecté d'être hors ligne, et en même temps, envoyer l'état de B sous la forme d'un message. Envoyé à d'autres nœuds. Si plus de la moitié des nœuds marquent B comme pfail, B sera marqué comme échec hors ligne. À ce moment, un basculement se produira et un nœud esclave avec plus de réplication. Les données seront sélectionnées en premier pour devenir le nœud maître et prendront en charge l'emplacement du nœud hors ligne. L'ensemble du processus est très similaire à celui de Sentinel et est basé sur le protocole Raft pour l'élection.
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!