Réplication

Cette page décrit la façon dont les données sont répliquées dans Spanner, les différents types d'instances dupliquées Spanner et leurs rôles respectifs dans les opérations de lecture et d'écriture, ainsi que les avantages de la réplication.

Présentation

Spanner réplique automatiquement au niveau octet. Comme décrit dans la section Déroulement des opérations de lecture et d'écriture Spanner, il exploite cette fonctionnalité dans le système de fichiers sous-jacent sur lequel il repose. Spanner écrit les modifications apportées aux bases de données dans des fichiers stockés au sein de ce système de fichiers, qui se charge de répliquer ces fichiers ainsi que de les récupérer en cas de défaillance d'une machine ou d'un disque.

Bien que le système de fichiers distribué sous-jacent sur lequel Spanner repose fournisse déjà une réplication au niveau octet, Spanner se charge également de répliquer les données afin d'offrir des avantages supplémentaires en matière de disponibilité et de localité géographique des données. De manière générale, toutes les données de Spanner sont organisées en lignes. Spanner crée plusieurs copies, ou instances dupliquées, de ces lignes, puis les stocke dans différentes zones géographiques. Spanner utilise un schéma de réplication synchrone basé sur Paxos dans lequel des instances dupliquées dotées de la capacité de voter doivent émettre un vote sur chaque requête d'écriture avant que l'écriture ne soit validée. Cette propriété de réplication globalement synchrone vous permet de lire les données les plus récentes de toute instance dupliquée en lecture/écriture ou en lecture seule de Spanner.

Spanner crée des instances dupliquées de chaque partition de base de données. Une division contient une plage de lignes contiguës, où les lignes sont classées par clé primaire. Toutes les données d'une partition sont stockées physiquement ensemble dans l'instance dupliquée, et Spanner diffuse chaque instance dupliquée depuis une zone de défaillance indépendante. Pour en savoir plus, consultez la présentation des schémas.

Le stockage et la réplication d'un ensemble de partitions sont assurés via Paxos. Au sein de chaque jeu d'instances dupliquées Paxos, une instance dupliquée est élue pour agir en tant qu'instance dupliquée principale. Les instances dupliquées principales gèrent les écritures, tandis que les instances dupliquées en lecture/écriture ou en lecture seule peuvent répondre à une requête de lecture sans communiquer avec l'instance dupliquée principale. Si une lecture forte est demandée, le leader est généralement consulté pour s'assurer que l'instance dupliquée en lecture seule a reçu toutes les mutations récentes. Pour surveiller le taux de modification et la quantité de données répliquées à partir de votre réplica principal vers les réplicas interrégionaux dans la configuration de votre instance, consultez Surveiller la réplication des données.

Avantages de la réplication Spanner

Voici les avantages de la réplication Spanner:

  • Disponibilité des données : l'existence d'un plus grand nombre de copies de vos données garantit une disponibilité accrue de celles-ci vis-à-vis des clients qui ont besoin de les lire. De plus, Spanner reste en mesure de diffuser des écritures même si certaines instances dupliquées ne sont pas disponibles, car il suffit d'une majorité des instances dupliquées ayant la capacité de voter pour valider une écriture.

  • Localité géographique: la possibilité offerte par Spanner de placer des données dans différentes régions et différents continents garantit une plus grande proximité géographique des données (et par conséquent un accès plus rapide) pour les utilisateurs et les services qui en ont besoin.

  • Expérience de base de données unifiée: Spanner peut offrir une expérience de base de données unifiée grâce à sa réplication synchrone et à sa cohérence forte à l'échelle mondiale.

  • Développement d'applications facilité: comme Spanner est conforme aux principes ACID et offre une cohérence forte à l'échelle mondiale, les développeurs qui travaillent avec Spanner n'ont pas besoin d'ajouter de logique supplémentaire dans leurs applications pour gérer la cohérence à terme. Cela accélère et facilite le développement des applications ainsi que leur maintenance ultérieure.

Types d'instances dupliquées

Spanner propose trois types d'instances dupliquées: les instances dupliquées en lecture/écriture, les instances dupliquées en lecture seule et les instances dupliquées témoins. Les régions et les topologies de réplication qui constituent les configurations d'instance de base sont fixes:

Vous pouvez créer des configurations d'instance personnalisées et ajouter des instances dupliquées en lecture seule pour les configurations d'instance régionales et multirégionales.

Le tableau suivant récapitule les types de réplicas Spanner et leurs propriétés:

Type d'instance dupliquée Peut voter Peut devenir l'instance dupliquée principale Peut diffuser des lectures Vous pouvez configurer manuellement le réplica
Lecture/écriture Oui oui oui non
Lecture seule Non non oui oui*
Témoin Oui non non non

* Pour en savoir plus, découvrez comment créer une instance avec une configuration d'instance personnalisée.

Instances répliquées en lecture/écriture

Les instances dupliquées en lecture/écriture prennent en charge les lectures et les écritures. Ces instances dupliquées :

  • conservent une copie complète de vos données ;
  • diffusent des opérations de lecture ;
  • peuvent participer aux votes de validation d'écriture ;
  • peuvent participer à l'élection de l'instance dupliquée principale ;
  • sont éligibles au rôle d'instance dupliquée principale ;
  • sont le seul type de réplication utilisé dans les instances régionales ;

Instances répliquées en lecture seule

Les instances dupliquées en lecture seule ne prennent en charge que les lectures, mais pas les écritures. Ces instances dupliquées ne votent pas pour élire les instances dupliquées principales ni pour valider les écritures. Elles vous permettent donc de dimensionner votre capacité de lecture sans augmenter le quorum nécessaire pour les écritures. Les instances dupliquées en lecture seule :

  • conservent une copie complète de vos données, qui sont répliquées à partir de l'instance dupliquée en lecture/écriture principale ;
  • ne participent pas aux votes de validation des écritures ; il s'ensuit que l'emplacement des instances dupliquées en lecture seule n'a aucune incidence sur la latence d'écriture ;
  • ne sont pas éligibles au rôle d'instance dupliquée principale.
  • diffusent des opérations de lecture ;
  • Peut être mis à l'échelle de manière asymétrique. Pour en savoir plus, consultez la section Autoscaling asymétrique en lecture seule.
  • S'il s'agit de l'instance dupliquée la plus proche de votre application, l'instance dupliquée en lecture seule peut généralement diffuser des lectures non actualisées sans effectuer d'aller-retour jusqu'à la région de l'instance dupliquée principale, en supposant un intervalle d'obsolescence d'au moins 15 secondes. Vous pouvez également utiliser des lectures dirigées pour acheminer les transactions en lecture seule et les lectures uniques vers un type de réplication spécifique ou une région dans une configuration d'instance multirégionale. Pour en savoir plus, consultez Lectures dirigées.

    Les lectures fortes peuvent nécessiter un aller-retour auprès de l'instance dupliquée principale. L'aller-retour permet seulement de négocier l'horodatage, pas d'expédier les données réelles depuis l'instance principale. La négociation de l'horodatage est une opération du processeur optimisée au niveau de l'instance principale, et généralement, les données sont déjà en route. Cette communication est gérée automatiquement par le système.

    Pour en savoir plus sur les lectures obsolètes et persistantes, consultez la section In reads (Dans les lectures).

Instances répliquées en lecture seule facultatives

Vous pouvez créer une configuration d'instance régionale ou multirégionale personnalisée et ajouter des instances dupliquées en lecture seule facultatives pour faire évoluer les lectures et prendre en charge les lectures obsolètes à faible latence. Vous pouvez ajouter les zones listées sous Région facultative en tant qu'instance répliquée en lecture seule facultative. Si l'emplacement de l'instance répliquée en lecture seule que vous avez choisi ne s'affiche pas, vous pouvez demander une nouvelle région d'instance répliquée en lecture seule facultative.

Toutes les instances répliquées en lecture seule facultatives sont soumises à des coûts de capacité de calcul, de stockage et de réplication. De plus, l'ajout d'instances répliquées en lecture seule à une configuration d'instance personnalisée ne modifie pas les contrats de niveau de service Spanner de la configuration de l'instance. Si vous choisissez d'ajouter une instance dupliquée en lecture seule sur un continent différent de celui de la région principale, nous vous recommandons d'ajouter au moins deux instances dupliquées en lecture seule. Cela permet de maintenir une faible latence de lecture si l'un des réplicas en lecture seule devient indisponible.

Il est recommandé de tester d'abord les charges de travail de performances dans des instances hors production dans la configuration d'instance personnalisée. Pour obtenir des données sur la latence interrégionale médiane, consultez le tableau de bord d'analyse comparative de la latence et du débit interrégionaux. Par exemple, si vous créez une configuration d'instance personnalisée avec la configuration de base multirégionale eur6 et un réplica en lecture seule facultatif dans us-east1, la latence de lecture élevée attendue pour un client dans us-east1 est d'environ 100 millisecondes en raison du temps de trajet aller-retour vers la région leader dans europe-west4. Les lectures obsolètes avec une obsolescence suffisante n'entraînent pas de trajet aller-retour et sont donc beaucoup plus rapides. Vous pouvez également utiliser les insights sur les verrouillages et les insights sur les transactions pour identifier les transactions qui entraînent des latences élevées.

Pour savoir comment ajouter des réplicas en lecture seule facultatifs, consultez la section Créer une configuration d'instance personnalisée.

Instances répliquées témoins

Les instances dupliquées témoins ne prennent pas en charge les lectures, mais participent aux votes de validation d'écriture. Ces instances dupliquées permettent d'obtenir plus facilement les quorums d'écriture, sans mobiliser les ressources de stockage et de calcul dont des instances dupliquées en lecture/écriture auraient besoin pour stocker une copie complète des données et diffuser les lectures. Les instances dupliquées témoins :

  • sont utilisées dans les instances birégionales et multirégionales ;
  • ne conservent pas une copie complète des données ;
  • ne diffusent pas de lectures ;
  • participent aux votes de validation d'écriture ;
  • participent à l'élection de l'instance dupliquée principale, mais ne sont pas éligibles à ce rôle.

Rôle des instances dupliquées dans les opérations d'écriture et de lecture

Cette section décrit le rôle des instances dupliquées dans les opérations d'écriture et de lecture de Spanner, ce qui permet de comprendre pourquoi Spanner utilise des instances dupliquées témoins dans les configurations birégionales et multirégionales.

Dans les opérations d'écriture

Les requêtes d'écriture des clients sont toujours traitées en premier lieu par l'instance dupliquée principale, même s'il existe une instance dupliquée non principale plus proche du client, ou si l'instance dupliquée principale est géographiquement distante du client. Si vous utilisez une configuration d'instance birégionale ou multirégionale et que votre application cliente se trouve dans une région non principale, Spanner utilise le routage optimisé vers la région responsable pour acheminer dynamiquement les transactions en lecture-écriture afin de réduire la latence dans votre base de données. Pour en savoir plus, consultez Routage avec connaissance du leader.

L'instance dupliquée principale enregistre l'écriture entrante et la transmet, en parallèle, aux autres instances dupliquées ayant la capacité de voter sur cette écriture. Chaque instance dupliquée éligible effectue son écriture, puis répond à l'instance dupliquée principale en indiquant si elle vote pour ou contre la validation de l'écriture. L'écriture est validée lorsque la majorité des instances dupliquées ayant la capacité de voter (ou quorum d'écriture) acceptent de valider l'écriture. En arrière-plan, toutes les instances dupliquées restantes (non témoins) enregistrent l'écriture. Si une instance dupliquée en lecture/écriture ou en lecture seule accuse un retard dans l'enregistrement des écritures, elle peut se procurer les données manquantes auprès d'une autre instance dupliquée afin de disposer d'une copie complète et à jour des données.

Dans les opérations de lecture

Les requêtes de lecture des clients peuvent être exécutées sur l'instance dupliquée principale ou nécessiter une communication avec celle-ci, selon le mode de simultanéité spécifié dans la requête de lecture.

  • Les lectures qui font partie d'une transaction en lecture/écriture sont diffusées à partir de l'instance dupliquée principale, car c'est cette dernière qui conserve les verrous nécessaires pour appliquer la sérialisabilité.

  • Les méthodes de lecture unique (effectuée en dehors du contexte d'une transaction) et les lectures effectuées dans le cadre d'une transaction en lecture seule peuvent nécessiter une communication avec l'instance dupliquée principale, selon le mode de simultanéité spécifié pour la lecture. Pour en savoir plus sur les modes de simultanéité, consultez la section Types de lectures.

    • Les requêtes de lecture forte peuvent être présentées à n'importe quelle instance dupliquée en lecture/écriture ou en lecture seule. Si la requête est transmise à une instance dupliquée non principale, cette dernière doit communiquer avec l'instance dupliquée principale pour effectuer la lecture.

    • Les requêtes de lecture non actualisée sont présentées à la plus proche des instances dupliquées en lecture seule ou en lecture/écriture disponibles et actualisées par rapport à l'horodatage de la requête. Il peut s'agir de l'instance dupliquée principale si celle-ci est l'instance dupliquée la plus proche du client qui a émis la requête de lecture.

Surveiller la réplication des données

Vous pouvez surveiller le taux de modification et la quantité de données répliquées à partir de votre réplica principal vers les réplicas interrégionaux dans la configuration de votre instance. Le taux de variation est exprimé en octets par seconde, et la quantité de données est exprimée en octets. Pour ce faire, utilisez la métrique de surveillance Octets répliqués entre régions (instance/cross_region_replicated_bytes_count).

Pour afficher cette métrique dans la console Google Cloud, procédez comme suit:

  1. Dans Google Cloud Console, accédez à Monitoring.

    Accéder à Monitoring

  2. Dans le menu de navigation, sélectionnez Explorateur de métriques.

  3. Dans le champ Métrique, cliquez sur le menu déroulant Sélectionner une métrique.

  4. Dans le champ Filtrer par nom de ressource ou de métrique, sélectionnez Instance Cloud Spanner > Instance > Octets répliqués entre régions, puis cliquez sur Appliquer.

    Cette métrique n'est disponible sous Métriques actives que si une activité de réplication interrégionale est effectuée dans votre instance. Dans le cas contraire, il s'affiche sous Métriques inactives. Par défaut, l'UI filtre et n'affiche que les métriques actives. Décochez la case Active pour afficher les métriques actives et inactives.

    Le graphique indique le taux de variation (en octets par seconde) des données répliquées dans toutes les instances Spanner au cours de la période spécifiée.

  5. Facultatif: Pour afficher la quantité de données (en octets) répliquées au lieu du taux de modification:

    1. Dans le champ Agrégation, cliquez sur le menu déroulant Sum (Somme), puis sélectionnez Configure aligner (Configurer l'aligneur).
    2. Dans le champ Fonction d'alignement, cliquez sur le menu déroulant Taux, puis sélectionnez Delta.
    3. Sélectionnez Tableau ou Les deux comme type de tableau au lieu de "Graphique".

      Le tableau indique la quantité de données (en octets) répliquées au cours de la période spécifiée.

  6. Facultatif: Pour afficher l'utilisation d'une instance ou d'un attribut spécifique:

    1. Utilisez le champ Filtre pour ajouter des filtres, tels qu'un ID d'instance, un ID de base de données, une région source, une région de destination ou une balise.
    2. Cliquez sur Ajouter un filtre pour ajouter plusieurs filtres.

Pour obtenir la liste complète des métriques Google Cloud , consultez la page MétriquesGoogle Cloud .

Étape suivante