Maison  >  Article  >  base de données  >  Jetons un coup d'œil à l'architecture du cluster Redis et à sa comparaison

Jetons un coup d'œil à l'architecture du cluster Redis et à sa comparaison

coldplay.xixi
coldplay.xixiavant
2021-03-12 11:17:052038parcourir

Jetons un coup d'œil à l'architecture du cluster Redis et à sa comparaison

1, Redis3.0

·      Avantages

a. Aucun nœud central

b Les données sont stockées dans emplacement Distribué sur plusieurs instances Redis

c Expansion fluide/ Réduire le nœud

d. Basculement automatique(entre les nœuds via Gossip Le protocole échange des informations d'état,Le mécanisme de vote est terminé Esclave vers Maître Amélioration du rôle)

e Réduit les coûts d'exploitation et de maintenance et améliore la fiabilité du système Évolutivité et haute disponibilité

(recommandé (gratuit) : redis)

· Inconvénients

a Fortement dépendant des Redis-Trib

b.

Manque de surveillance et de gestion

c

Nécessite des dépendances Smart Client. (Maintenance des connexions, Table de routage du cache, MultiOp et Pipeline prend en charge )

d. Le basculement

la détection des nœuds est trop lente, pas aussi bonne que " <. ;🎜> f Les données chaudes et froides ne peuvent pas être distinguées statistiquement Esclave "

Veille à froid, ne peut pas soulager la pression de lecture

Proxy + Redis Cluster

· Avantages

Smart Client :

a

réduit une couche par rapport à. en utilisant un proxy La consommation de la transmission réseau est relativement efficace ;

b

Ne repose pas sur un middleware tiers et sur la mise en œuvre. la méthode et le code sont contrôlés par soi-même. Peut être ajusté à tout moment.

Procuration

 : a

fournit un ensemble de

L'interface HTTP Restful isole le stockage sous-jacent. Totalement transparent pour le client, appels multilingues.

b. La mise à niveau et la maintenance sont relativement simples. Pour maintenir le Redis Cluster, il vous suffit de mettre à niveau en douceur . Procuration.

c. Stockage hiérarchique, le stockage sous-jacent est un stockage hétérogène chaud et froid.

d Contrôle des autorisations, Proxy peut contrôler la liste blanche via la clé secrète et bloquer certaines demandes illégales. filtré. Et vous pouvez également contrôler et filtrer la très grande valeur demandée par l'utilisateur.

e. sécurité, peut bloquer certaines commandes dangereuses, telles que Clés, Enregistrer, Flush All , etc.

f Contrôle de la capacité, limite de capacité basée sur différentes applications de capacité utilisateur.

g. Isolation logique des ressources, basée sur la clé plus le préfixe, pour isoler les ressources.

h. Surveillez les points cachés et surveillez les points cachés et d'autres informations pour différentes interfaces.

· Inconvénients

Client intelligent :

a. L'immaturité du client affecte la stabilité de l'application et augmente la difficulté de développement.

b. MultiOp et Pipeline ont un support limité.

c. Maintenance de la connexion, Smart Paires de clients connectées à chaque nœud du cluster Entretien de Prise .

Proxy :

a La couche proxy a un transfert supplémentaire, et le les performances sont améliorées.

b. L'extension de la capacité / nécessite un fonctionnement et une maintenance élevés, et il est difficile d'obtenir une expansion et une contraction en douceur

3 , Sélection technique

redisLe document officiel contient le passage suivant:

Le support du cluster redis-cli est très basique, il utilise donc toujours le fait que les nœuds du cluster Redis sont capables de rediriger un client vers le bon nœud. Un client sérieux est capable de faire mieux que cela et de mettre en cache la carte entre. hachez les emplacements et les adresses des nœuds, pour utiliser directement la bonne connexion au bon nœud. La carte est actualisée uniquement lorsque quelque chose a changé dans la configuration du cluster, par exemple après un basculement ou après que l'administrateur système a modifié la disposition du cluster en ajoutant ou en supprimant des nœuds.

L'idée générale est que le client officiel actuel du redis cluster a des fonctions simples et s'appuie sur le redis nœud Redirection vers l'instance redis dans le cluster où se trouvent les données. Il existe un besoin pour un client plus complet capable d'assurer la cohérence des fonctions de hachage, failover et de gestion de cluster. Par conséquent, utiliser le client officiel redis cluster n'est pas un choix judicieux. Cet article propose 3 solutions pour votre référence s'il existe. tout autre Partout où cela a du sens, tout le monde est invité à en discuter avec moi.

Schéma 1 UtilisationnginxDéveloppé(OpenRestyMéthode)

Les raisons sont les suivantes:

a . SimpleMaîtreMultipleTravail, chaque Travail suit Redis est également un mode mono-processus mono-thread et est basé sur le mode piloté par les événements Epoll.

b. Nginx adopte une manière asynchrone et non bloquante pour traiter les requêtes, un framework asynchrone efficace.

c Faible utilisation de la mémoire et possède son propre ensemble de méthodes de gestion du pool de mémoire. Rassembler un grand nombre de petites applications de mémoire peut être plus rapide que Malloc. Réduisez la fragmentation de la mémoire et évitez les fuites de mémoire. Réduisez la complexité de la gestion de la mémoire.

d. Afin d'améliorer la vitesse d'accès de Nginx , Nginx Utilise son propre ensemble de pools de connexions.

e La chose la plus importante est de prendre en charge le développement de modules personnalisés.

f. Dans l'industrie, pour Nginx, Redis peut être considérée comme deux grands artefacts. Les performances sont très bonnes.

Schéma 2 codis (basé sur un proxy redis Solution cluster)

Référence

codisDocument officielhttps:/ / github.com/CodisLabs/codis

Codis

est un ensemble complet de solutions de mise en cache, comprenant la haute disponibilité, le partage de données, la surveillance et l'expansion dynamique etc..

utilise

Apps->agent->rediscluster, définitivement La méthode est essentiellement utilisée après l'échelle.

Schéma3 Développer indépendamment redisClient intelligent

Implémente principalement la gestion des

slots Redis, le le basculement, la cohérence fonction de hachage.

4, Redis 3.0ClusterLe cluster

Redis 3.0 adopte le modèle P2P, qui est complètement décentralisé. Redis a divisé toutes les Clés en 16384emplacement, chaque instance Redis est responsable d'une partie du slot. Toutes les informations dans le cluster (nœud, port, slot, etc.), Tous sont mis à jour grâce à un échange régulier de données entre les nœuds.

RedisLe client fait une requête sur n'importe quelle instance Redis Si les données requises ne sont pas dans l'instance. , Guidez le client vers l'instance souhaitée via une commande de redirection.

Redis 3.0Le workflow du cluster est présenté dans la figure ci-dessous.

RedisLes machines du cluster échangent régulièrement des données et le workflow est le suivant :

(1) Redis client dans Redis2Accéder à certaines données sur l'instance

(2) dans Redis2 Cette donnée se retrouve dans dans l'instance de Redis3, qui envoie une redirection vers le Redis Commande client ;

(3) RedisAprès que le client ait reçu la commande de redirection , accédez à l'instance Redis3 pour obtenir les données requises.

La solution cluster de Redis 3.0 présente les deux problèmes suivants :

1)                    L'instance Redis a "stockage de données " et "Redirection d'itinéraire", conception complètement décentralisée. L'avantage est que le déploiement est très simple. Il suffit de déployer Redis directement, contrairement à Codis qui a tellement de composants et de dépendances. Mais le problème est qu'il est difficile de mettre à niveau l'entreprise sans douleur. Si un jourRedis quelque chose de grave arrive au clusterBug, vous ne pouvez restaurer que l'intégralité du cluster Redis.

2) 

a apporté des modifications majeures au protocole et le client Redis correspondant doit également être mis à niveau . Qui peut garantir qu'il n'y a pas de Bogue après la mise à niveau du client Redis ? Et pour les entreprises qui fonctionnent déjà à grande échelle en ligne, la mise à niveau du client Redis dans le code est également une chose très gênante.

5, Redis4.0

(1)Tous les redisles nœuds sont interconnectés les uns aux autres(PING-PONGmécanisme ), utilisant le protocole binaire en interne pour optimiser la vitesse de transmission et la bande passante

(2) Échec du nœud ; Il ne prend effet que lorsque la panne est détectée par plus de la moitié des nœuds du cluster ;

(3)Client et redis sont directement connectés, aucune couche proxy intermédiaire n'est nécessaire. 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 du cluster

(4)redis-clustermappe tout ; nœuds physiques vers [0-16383]slot( slot ) , cluster est responsable du maintien du node<->slot<->value.

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!

Déclaration:
Cet article est reproduit dans:. en cas de violation, veuillez contacter admin@php.cn Supprimer