Redis psync

Redis psync

Introduction à la réplication Redis

Redis est construit avec diverses fonctionnalités pour assurer la haute disponibilité de ses instances. Outre les fonctionnalités avancées de haute disponibilité comme le clustering et la sentinelle, la réplication Master-Replica est disponible pour configurer et utiliser un effort minimal. Une instance de maître (leader) peut avoir plusieurs instances de suiveur où chaque suiveur est une copie exacte de l'instance de leader. Chaque fois qu'une réplique est déconnectée de son instance de leader, il réchauffe à nouveau la connexion et cloner automatiquement le maître.

Comme vous pouvez le voir dans l'illustration donnée, lorsque le maître et les répliques sont bien connectés, le maître envoie toutes les commandes d'écriture et les actions qui modifient l'ensemble de données maître par les répliques de manière asynchrone. Ce processus est une faible latence et optimisée sur les performances.

De plus, en cas de pause maître-replice, les répliques se reconnecteront et essaieront d'acquérir uniquement les commandes manquées en raison de la déconnexion. Il est appelé synchronisation partielle. Dans certains cas, une synchronisation partielle n'est pas possible. Par conséquent, une resynchronisation complète se produit lorsque l'instance maître génère un instantané de ses données, la pousse aux répliques et envoie toutes les commandes qui affectent les modifications de l'ensemble de données.

La commande psync / sync

Lorsque les répliques se connectent à un maître, ils utilisent la commande pSync pour communiquer avec l'instance maîtresse. Dans ce processus partiel de synchronisation, la réplique donnée envoie l'ID de réplication maître et compenser les valeurs au serveur maître. À la fin de réception, ces deux informations sont utilisées pour transmettre les modifications incrémentielles de l'ensemble de données du maître à l'instance réplique.

En bref, l'ID de réplication maître et le décalage représentent une version exacte de l'ensemble de données maître. Chaque nœud maître se voit attribuer une chaîne pseudo-aléatoire unique qui est appelée ID de réplication. De plus, le maître conserve une valeur de décalage qui est incrémentée pour chaque morceau de données produites pour être poussées aux répliques.

Comme le montre l'illustration précédente, depuis que l'ensemble de données maître a été modifié en raison des écritures du client, la valeur de décalage de réplication est passée de 12324 à 15693. Par conséquent, la réplique appelle la commande pSync avec la valeur de décalage mise à jour.

Syntaxe
La commande pSync a la syntaxe suivante:

Psync Master_replication_id Master_replication_offset

Master_replication_id: Ceci est la chaîne pseudo-aléatoire générée qui représente un ensemble de données donné.

Master_replication_offset: La valeur de décalage qui est incrémentée par chaque morceau d'octet généré pour envoyer aux répliques.

Cette commande renvoie un élément de données et écrit du maître à une instance de réplique. En bref, la commande pSync démarre un flux de réplication de l'instance de leader à l'instance de réplique qui transfère l'ensemble de données et les demandes d'écriture du client modifiées par rapport au décalage précédent.

Cas d'utilisation - Synchronisation des répliques avec maître

Commençons par quelques instances Redis Server dans différents ports comme 6379 et 6380. Vous pouvez utiliser la commande suivante:

redis-server --port 6379
Redis-server --port 6380

Ensuite, nous convertissons une instance redis en une réplique en utilisant la commande réplique. Avant cela, nous devons nous connecter à cette instance avec le redis-CLI comme indiqué dans ce qui suit:

redis-Cli -p 6380

Maintenant, la connexion est établie à l'instance Redis Server opéalise dans le port 6380. Faisons cette instance une réplique de l'autre instance redis qui s'exécute au port 6379.

Maintenant, nous pouvons tester si cette instance est devenue une réplique en émettant la commande suivante:

Comme vous pouvez le voir, le rôle est affiché comme esclave pour cette instance. Exécutons la même commande par rapport à l'autre instance et inspectons:

C'est un nœud maître comme indiqué dans la fenêtre de sortie précédente.

Inspectons de près comment la synchronisation se produit entre les instances maître et esclave. À des fins de démonstration, la commande Sync est utilisée. Il se comporte de la même manière que la commande pSync, sauf que la synchronisation partielle n'est pas autorisée.

Émet la commande de synchronisation de la réplique.

Maintenant, nous émettons une commande d'écriture à l'instance maître via la CLI.

Comme prévu, la commande d'écriture est transférée à la réplique immédiatement suivie de pings. La commande pSync fonctionne de la même manière que la commande sync mais avec une synchronisation partielle activée.

Conclusion

En résumé, Redis est livré avec différentes fonctionnalités qui permettent une haute disponibilité. Le modèle maître-replice est l'une des techniques prises en charge par Redis pour s'assurer qu'au moins une instance du serveur Redis est disponible à un moment donné. Chaque réplique est synchronisée avec son maître et émet la commande pSync pour créer un flux de réplication qui transmet l'ensemble de données modifié et écrit les demandes du maître. Comme mentionné, la commande pSync se comporte de la même manière que l'ancienne commande de synchronisation mais avec une synchronisation partielle activée.