Tous les produits
Search
Centre de documentation

Tair (Redis® OSS-Compatible):Séparation lecture/écriture

Dernière mise à jour :Aug 08, 2026

Pour les charges de travail à forte intensité de lectures, Tair (Redis OSS-compatible) vous permet d'activer ou de désactiver dynamiquement la séparation lecture/écriture. Cette fonctionnalité offre une solution hautement disponible et performante pour l'accès centralisé aux données fréquemment sollicitées et pour les lectures à forte concurrence. Dans une instance avec séparation lecture/écriture, un composant proxy développé par l'équipe Tair d'Alibaba Cloud identifie et achemine automatiquement les requêtes de lecture et d'écriture, tout en gérant les basculements. Cela simplifie l'intégration : inutile de modifier le code de votre application pour gérer le routage des requêtes ou les basculements.

Séparation lecture/écriture dans une architecture standard

Une instance avec séparation lecture/écriture utilisant une architecture standard se compose d'un nœud principal, d'un ou plusieurs réplicas en lecture, de serveurs proxy et d'un système de haute disponibilité. Les figures suivantes illustrent ces architectures.

Figure 1. Cloud-native

image

Figure 2. Classique (obsolète)

image

Composant

Cloud-native

Classique (obsolète)

Nœud principal

Gère les requêtes d'écriture et partage la charge de lecture avec les réplicas en lecture.

Réplicas en lecture

Gèrent les requêtes de lecture. Les réplicas en lecture présentent les caractéristiques suivantes :

  • Tous les réplicas en lecture assurent la reprise après sinistre et peuvent servir de nœuds de réplication pour la sauvegarde des données.

  • Les réplicas en lecture synchronisent les données depuis le nœud principal via une topologie de réplication en étoile. Cette topologie offre une latence des données nettement inférieure à celle de la topologie de réplication en chaîne de l'édition classique.

  • Vous pouvez personnaliser le nombre de réplicas en lecture. Une instance peut comporter de 1 à 4 réplicas en lecture par shard dans une architecture en cluster, et de 1 à 9 réplicas en lecture dans une architecture standard.

Gèrent les requêtes de lecture. Les réplicas en lecture présentent les caractéristiques suivantes :

  • Les réplicas en lecture utilisent une topologie de réplication en chaîne. Plus la chaîne contient de réplicas en lecture, plus la latence des données est élevée sur les réplicas situés à l'extrémité de la chaîne.

  • Vous pouvez configurer 1, 3 ou 5 réplicas en lecture.

Nœud de réplication

Tout réplica en lecture peut servir de nœud de réplication. En cas de défaillance du nœud principal, le système de haute disponibilité promeut le réplica en lecture disposant des données les plus complètes au rang de nouveau nœud principal. Après le basculement, un nouveau réplica en lecture est immédiatement ajouté à l'instance.

Aucun nœud de réplication dédié n'étant requis, les instances avec séparation lecture/écriture cloud-native offrent les mêmes performances à un coût réduit.

Un nœud de secours à froid destiné à la sauvegarde des données. Il ne traite aucun trafic. En cas de défaillance du nœud principal, les requêtes sont basculées vers ce nœud.

Serveur proxy

Lorsqu'un client se connecte, le serveur proxy identifie automatiquement le type de requête et distribue le trafic vers différents nœuds de données selon un poids défini. Tous les nœuds ont un poids égal et celui-ci n'est pas personnalisable. Par exemple, les requêtes d'écriture sont transférées vers le nœud principal, tandis que les requêtes de lecture sont envoyées au nœud principal et aux réplicas en lecture.

Remarque
  • Les clients ne peuvent se connecter qu'à un serveur proxy. Les connexions directes aux nœuds individuels ne sont pas prises en charge.

  • Le serveur proxy répartit équitablement les requêtes de lecture entre le nœud principal et les réplicas en lecture. Vous ne pouvez pas personnaliser cette répartition. Par exemple, pour une instance dotée de trois réplicas en lecture, le nœud principal et chacun des trois réplicas traitent 25 % des requêtes de lecture.

Système de haute disponibilité

  • Surveille automatiquement l'état de santé de chaque nœud. Si un nœud devient indisponible, le système de haute disponibilité initie un basculement ou reconstruit un réplica en lecture, puis met à jour les informations de routage et de poids en conséquence.

  • Logique de basculement pour la sélection du nœud principal : l'intégrité des données est prioritaire. Le système de haute disponibilité promeut le réplica en lecture disposant des données les plus complètes au rang de nouveau nœud principal.

Remarques concernant les instances avec séparation lecture/écriture sur deux zones

Cloud-native (recommandé)

Classique (obsolète)

Les zones primaire et secondaire fournissent toutes deux des services. La configuration minimale est la suivante :

  • Zone primaire : un nœud principal et un réplica en lecture.

  • Zone secondaire : un réplica en lecture.

Les zones primaire et secondaire disposent de points de terminaison distincts. Ces deux points de terminaison prennent en charge les opérations de lecture et d'écriture. Les requêtes de lecture provenant de la zone primaire sont acheminées uniquement vers le nœud principal ou les réplicas en lecture situés dans cette même zone. Les requêtes de lecture issues de la zone secondaire sont dirigées exclusivement vers les réplicas en lecture de cette zone. Cette architecture permet un accès basé sur la proximité géographique. Toutes les requêtes d'écriture sont routées vers le nœud principal de la zone primaire. La figure suivante illustre cette architecture.

image
Remarque

Nous vous recommandons de configurer au moins deux nœuds dans les zones primaire et secondaire :

  • Zone primaire : un nœud principal et un réplica en lecture.

  • Zone secondaire : deux réplicas en lecture.

La zone secondaire contient uniquement un nœud de réplication de secours à froid destiné à la sauvegarde des données ; elle ne traite aucun trafic. En cas de défaillance du nœud principal, les requêtes sont basculées vers le nœud de réplication.

Fonctionnalités

  • Dynamique et facile à utiliser

    Vous pouvez activer la séparation lecture/écriture pour une instance utilisant une architecture standard. Le serveur proxy identifie intelligemment et transmet les requêtes de lecture et d'écriture des clients. Une fois cette fonctionnalité activée, utilisez n'importe quel client compatible Redis pour vous connecter à l'instance avec séparation lecture/écriture afin d'améliorer les performances de lecture, sans modifier votre application. Les instances avec séparation lecture/écriture activée sont compatibles avec les commandes du protocole Redis, mais certaines restrictions s'appliquent en raison du proxy. Pour plus d'informations, consultez la rubrique Restrictions de commande pour les instances avec séparation lecture/écriture.

  • Haute disponibilité

    • Un système de haute disponibilité propriétaire d'Alibaba Cloud surveille automatiquement l'état de santé de tous les nœuds de données afin de garantir la disponibilité de l'instance. Si un nœud principal devient indisponible, le système sélectionne automatiquement un nouveau nœud principal et reconstruit la topologie de réplication. En cas de défaillance d'un réplica en lecture, le système de haute disponibilité détecte automatiquement l'incident, lance un nouveau nœud pour finaliser la synchronisation des données et retire le nœud défaillant.

    • Les serveurs proxy surveillent en temps réel l'état de service de chaque réplica en lecture. Si un réplica en lecture devient indisponible, le proxy réduit automatiquement son poids de service. Si un réplica en lecture échoue plus d'un nombre spécifié de fois consécutives, le proxy suspend le service vers le nœud indisponible. Il continue de surveiller le nœud et reprend le service une fois que celui-ci est rétabli.

  • Hautes performances

    Ajoutez des réplicas en lecture pour augmenter linéairement les performances globales d'une instance avec séparation lecture/écriture. Des optimisations au niveau du code source du processus de réplication Redis maximisent la stabilité du système lors de la réplication linéaire et exploitent pleinement les ressources physiques de chaque réplica en lecture.

Cas d'utilisation

Cette fonctionnalité est idéale pour les scénarios présentant un nombre élevé de requêtes de lecture par seconde (QPS). Si votre application est fortement orientée vers les lectures, une instance utilisant une architecture standard risque de ne pas répondre à vos exigences en matière de QPS. Dans ce cas, déployez plusieurs réplicas en lecture pour surmonter le goulot d'étranglement des performances d'un nœud unique. Après activation de la séparation lecture/écriture, le QPS de lecture d'une instance peut être multiplié par neuf.

Remarque

En raison du mécanisme de réplication asynchrone de Redis, une latence de réplication des données peut survenir lors de volumes d'écriture élevés. Si vous utilisez cette architecture, votre application doit pouvoir tolérer un certain degré d'obsolescence des données.

Séparation lecture/écriture dans une architecture en cluster

Dans une architecture en cluster, vous ne pouvez activer la séparation lecture/écriture que pour les instances cloud-native exécutées en mode proxy. La figure suivante présente un exemple d'architecture.

image

Description des composants

Composant

Description

Serveur proxy

Une fois qu'un client est connecté à un serveur proxy, celui-ci identifie automatiquement les requêtes du client et les transfère vers les shards de données appropriés ainsi que vers leurs nœuds de lecture/écriture correspondants. Par exemple, les requêtes d'écriture sont envoyées au nœud principal, tandis que les requêtes de lecture sont réparties en charge entre le nœud principal et les réplicas en lecture.

Shard de données

Chaque shard de données se compose d'un nœud principal et d'un maximum de quatre réplicas en lecture.

  • Nœud principal : gère les requêtes d'écriture et partage la charge de lecture avec les réplicas en lecture. Le nœud principal est toujours déployé dans la zone primaire.

  • Réplica en lecture : gère les requêtes de lecture. Les réplicas en lecture synchronisent les données depuis le nœud principal via une topologie de réplication en étoile. Vous pouvez disposer de 1 à 4 réplicas en lecture, et ce nombre peut être ajusté dynamiquement. Vous pouvez également déployer des réplicas en lecture dans la zone secondaire pour assurer la reprise après sinistre.

Service de haute disponibilité

  • Surveille automatiquement l'état de santé de chaque nœud. Si un nœud devient indisponible, le système de haute disponibilité initie un basculement ou reconstruit un réplica en lecture, puis met à jour les informations de routage et de poids en conséquence.

  • Logique de basculement pour la sélection du nœud principal : l'intégrité des données est prioritaire. Le système de haute disponibilité promeut le réplica en lecture disposant des données les plus complètes au rang de nouveau nœud principal.

Remarque
  • Si l'instance est déployée dans une seule zone de disponibilité, tous les nœuds sont situés dans la zone primaire et l'instance ne fournit qu'un point de terminaison pour cette zone.

  • Si l'instance est déployée dans une configuration à deux zones, des points de terminaison distincts sont fournis pour les zones primaire et secondaire. Ces deux points de terminaison prennent en charge les opérations de lecture et d'écriture. Les requêtes de lecture provenant de la zone primaire sont acheminées vers le nœud principal ou les réplicas en lecture situés dans cette même zone. Les requêtes de lecture issues de la zone secondaire sont dirigées exclusivement vers les réplicas en lecture de cette zone afin de garantir un accès basé sur la proximité géographique. Toutes les requêtes d'écriture sont routées vers le nœud principal de la zone primaire. Si tous les réplicas en lecture de la zone secondaire deviennent indisponibles, le système achemine les requêtes de lecture de cette zone vers le nœud principal pour assurer la continuité des activités.

Recommandations et remarques d'utilisation

  • En cas de défaillance d'un réplica en lecture, les requêtes sont transférées vers d'autres nœuds. Si tous les réplicas en lecture deviennent indisponibles, toutes les requêtes de lecture sont envoyées au nœud principal. La défaillance des réplicas en lecture augmente la charge sur le nœud principal, ce qui peut allonger son temps de réponse. Par conséquent, nous vous recommandons d'utiliser plusieurs réplicas en lecture pour les charges de travail à forte intensité de lectures.

  • Si un réplica en lecture tombe en panne, le système de haute disponibilité suspend le service vers le nœud défaillant et lance un nouveau réplica en lecture. Ce processus implique l'allocation de ressources, la création d'instance, la synchronisation des données et le chargement du service. Le temps requis dépend de la charge de travail et du volume de données. Tair (Redis OSS-compatible) ne garantit aucun objectif de temps de récupération pour les réplicas en lecture.

  • Un déploiement avec séparation lecture/écriture sur deux zones nécessite que la zone primaire dispose d'au moins un nœud principal et d'un réplica en lecture. Avant d'activer la séparation lecture/écriture pour une instance d'architecture standard à deux zones comprenant un nœud principal dans la zone primaire et un nœud de réplication dans la zone secondaire, ajoutez un nœud de réplication à la zone primaire afin qu'elle contienne deux nœuds. Vous pourrez ensuite activer la séparation lecture/écriture.

  • Certains scénarios, tels qu'un basculement de haute disponibilité du nœud principal, déclenchent une synchronisation complète des données sur un réplica en lecture. Pendant une synchronisation complète, le réplica en lecture est indisponible et renvoie le message -LOADING Redis is loading the dataset in memory\r\n.

  • Certaines commandes de lecture suivent des règles de transfert spécifiques dans l'architecture de séparation lecture/écriture. Par exemple, la commande SCAN est transférée au nœud principal pour exécution, tandis que le proxy répartit uniformément les commandes HSCAN, SSCAN et ZSCAN entre le nœud principal et les réplicas en lecture, selon un calcul modulo basé sur les slots. Pour l'ensemble complet des règles de transfert, consultez la rubrique Règles de routage du proxy.

Prérequis

Avant de commencer, assurez-vous que :

  • L'instance est déployée en mode cloud-native

  • L'instance est une instance Redis Open-Source Edition ou Tair (Enterprise Edition) optimisée pour la DRAM ou pour la mémoire persistante

  • L'instance dispose d'au moins 1 Go de mémoire

  • L'instance est une instance haute disponibilité

Procédure

FAQ

  • Q : L'activation de la séparation lecture/écriture pour une instance d'architecture standard augmente-t-elle sa bande passante globale ?

    R : Oui. Après activation de la séparation lecture/écriture, la bande passante totale théorique de l'instance correspond à la bande passante de la spécification de l'instance multipliée par le nombre total de nœuds (par exemple, 96 Mo/s × 3 nœuds = 288 Mo/s). Les nœuds proxy ajoutés transfèrent la plupart des requêtes de lecture vers les réplicas en lecture, ce qui réduit la pression sur la bande passante du nœud principal. Toutefois, la bande passante réelle est affectée par des facteurs tels que les requêtes métier et les clients. La bande passante effective est soumise aux résultats des tests de charge.

  • Q : Après avoir activé la séparation lecture/écriture pour une instance d'architecture standard, puis-je modifier son architecture pour passer à une architecture en cluster ?

    R : Oui. Vous devez d'abord désactiver la séparation lecture/écriture puis modifier l'architecture de l'instance.

  • Q : Comment vérifier si la séparation lecture/écriture est activée ?

    R : Accédez à la page Node Management de l'instance pour vérifier si l'option read/write splitting est activée.

  • Q : Pourquoi les requêtes de lecture ne sont-elles pas acheminées vers mes réplicas en lecture ?

    R : Dans une architecture de séparation lecture/écriture sur deux zones, les zones primaire et secondaire disposent de points de terminaison distincts. Les requêtes de lecture sont acheminées uniquement vers le nœud principal ou les réplicas en lecture situés dans la même zone. Si vous utilisez uniquement le point de terminaison de la zone primaire, aucune requête de lecture n'est dirigée vers les réplicas en lecture de la zone secondaire. Pour permettre un accès basé sur la proximité géographique et l'équilibrage de charge, différenciez explicitement les points de terminaison des zones primaire et secondaire dans le code de votre application et acheminez les requêtes destinées à la zone secondaire vers son point de terminaison spécifique.