Cette page a été traduite par l'API Cloud Translation.
Switch to English

Réplication

Cette page décrit la façon dont les données sont répliquées dans Cloud Spanner, les différents types d'instances dupliquées pris en charge par Cloud 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 de la réplication dans Cloud Spanner

Cloud Spanner bénéficie automatiquement d'une réplication au niveau octet via le système de fichiers distribué sous-jacent sur lequel il repose (comme indiqué dans la section Déroulement des opérations de lecture et d'écriture Cloud Spanner). Cloud 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 à Cloud Spanner fournisse déjà une réplication au niveau octet, Cloud 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 présentes dans Cloud Spanner sont organisées en lignes. Cloud Spanner crée plusieurs copies ou "instances dupliquées" de ces lignes et les stocke dans différentes zones géographiques. Cloud 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 (décrites en détail ci-dessous) doivent émettre un vote sur chaque requête d'écriture avant que l'écriture ne soit validée. Cette fonctionnalité de réplication globalement synchrone vous donne la possibilité de lire les données les plus récentes de toute instance dupliquée en lecture/écriture ou en lecture seule de Cloud Spanner.

Cloud Spanner crée des instances dupliquées de chaque partition de base de données, pour lier les concepts ci-dessus à la terminologie et aux concepts présentés dans la section Schéma et modèle de données. Une division contient une plage de lignes contigu,s, où elles sont classées par clé primaire. Toutes les données d'une partition sont stockées physiquement ensemble dans l'instance dupliquée, et Cloud Spanner diffuse chaque instance dupliquée depuis une zone de défaillance indépendante.

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 sont responsables du traitement des écritures, alors que toute instance dupliquée en lecture/écriture ou en lecture seule peut diffuser une requête de lecture sans communiquer avec l'instance dupliquée principale (toutefois, si une lecture forte est demandée, l'instance dupliquée principale est généralement consultée afin de garantir que l'instance dupliquée en lecture seule a reçu toutes les modifications récentes). Les rôles respectifs des instances dupliquées principales ou non principales sont décrits ci-dessous.

Avantages de la réplication Cloud Spanner

Comme indiqué précédemment, le mécanisme de réplication de Cloud Spanner offre plusieurs avantages :

  • 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, Cloud 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 Cloud 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 : du fait de la réplication synchrone et de la cohérence forte à l'échelle mondiale, Cloud Spanner se comporte de la même manière à n'importe quelle échelle, offrant ainsi une expérience de base de données unifiée.

  • Développement d'applications facilité : les transactions ACID de Cloud Spanner garantissent une cohérence forte à l'échelle mondiale qui dispense les développeurs d'intégrer de la logique supplémentaire dans les applications pour gérer la cohérence à terme, ce qui accélère et facilite le développement des applications aussi bien que leur maintenance ultérieure.

Types d'instances dupliquées

Cloud 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 instances régionales exploitent exclusivement des instances dupliquées en lecture/écriture, tandis que les configurations d'instances multirégionales conjuguent les trois types d'instances dupliquées. (Pour une présentation détaillée des raisons expliquant cette différence, consultez la section Pourquoi des instances dupliquées en lecture seule et des instances dupliquées témoins ? )

Le tableau ci-dessous récapitule les types d'instances dupliquées Cloud Spanner et leurs propriétés, qui font l'objet d'une description plus détaillée dans les sections qui suivent.

Type d'instance dupliquée Peut voter Peut devenir l'instance dupliquée principale Peut diffuser des lectures
Lecture/écriture Oui Oui Oui
Lecture seule Non Non Oui
Témoin Oui Non Non

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 utilisé dans les instances régionales.

Lecture seule

Les instances dupliquées en lecture seule ne prennent en charge que les lectures (et non 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 :

  • ne sont utilisées que dans des instances multirégionales ;
  • conservent une copie complète de vos données, qui sont répliquées à partir des instances dupliquées en lecture/écriture ;
  • diffusent des opérations de lecture ;
  • 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 ;
  • ont généralement la possibilité de diffuser des lectures non actualisées sans effectuer d'aller-retour jusqu'à la région de l'instance dupliquée principale par défaut, en supposant un intervalle d'obsolescence d'au moins 15 secondes. 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. (lectures périmées et lectures fortes décrites ci-dessous) ;
  • ne sont pas éligibles au rôle d'instance dupliquée principale.

Témoin

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 :

  • ne sont utilisées que dans des instances 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 Cloud Spanner, ce qui permet de comprendre pourquoi Cloud Spanner utilise des instances dupliquées en lecture seule et des instances dupliquées témoins dans les configurations multirégionales.

Dans les opérations d'écriture

Les requêtes d'écriture des clients sont toujours présentées en premier lieu à 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.

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.