Réplication

Cette page décrit comment les données sont répliquées dans Spanner, les différents les types d'instances répliquées Spanner et leurs rôles dans les accès en lecture et en écriture, et les avantages de la réplication.

Présentation

Spanner se réplique automatiquement au niveau de l'octet. Tel que décrit dans le cours Cycle de vie des lectures et écritures Spanner, il tire parti de cette dans le système de fichiers sous-jacent sur lequel il repose. Spanner écrit les mutations de base de données dans les fichiers de ce système de fichiers, et le système de fichiers se charge de répliquer et de récupérer les fichiers lorsqu’un d'une machine ou d'un disque.

Même si le système de fichiers distribué sous-jacent utilisé par Spanner fournit déjà une réplication au niveau de l'octet, Spanner réplique les données pour offrir les avantages supplémentaires qu'elles procurent en termes de disponibilité des données et leur localité géographique. De manière générale, toutes les données dans Spanner organisées en lignes. Spanner crée plusieurs copies, ou des "instances répliquées", puis stocke ces instances répliquées dans des régions dans différentes zones géographiques. Spanner utilise un schéma de réplication synchrone basé sur Paxos, où les instances répliquées votant émettent un vote sur chaque requête d'écriture. avant la validation de l'écriture. Cette propriété de réplication synchrone globale vous permet de lire les données les plus récentes Instance répliquée Spanner en lecture/écriture ou en lecture seule.

Spanner crée des instances répliquées de chaque fraction de base de données. Une division contient une plage de lignes contiguës, où les lignes sont triées par clé primaire. Toutes les données d'un fractionnement sont physiquement stockées ensemble dans l'instance répliquée. Spanner diffuse chaque instance répliquée en cas de défaillance indépendante dans la zone. Pour en savoir plus, consultez la page À propos 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 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).

Avantages de la réplication Spanner

Les avantages de la réplication Spanner sont les suivants:

  • 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 peut continuent de diffuser les écritures même si certaines instances répliquées sont indisponibles, seule une majorité des instances répliquées votantes est requise pour valider une écriture.

  • Localité géographique: possibilité de placer des données à travers différents des régions et des continents avec Spanner, géographiquement proches des utilisateurs et des services, et donc d'y accéder plus rapidement qui en ont besoin.

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

  • Développement d'applications simplifié: Spanner étant conforme à la norme ACID et offre une cohérence forte à l'échelle mondiale, les développeurs travaillant avec Spanner n'ont pas besoin d'ajouter de logique pour gérer la cohérence à terme, ce qui rend l'application et la maintenance qui en découlent.

Types d'instances dupliquées

Spanner propose trois types d'instances répliquées: les instances répliquées en lecture/écriture, instances répliquées en lecture seule et instances dupliquées témoins. Régions et réplication Les topologies de base constituent des configurations d'instance de base sont fixes. Configurations d'instances régionales de base n'utilisent que des instances répliquées en lecture/écriture. Configurations d'instances birégionales de base utiliser des instances répliquées en lecture/écriture et des instances dupliquées témoins, tandis que Configurations d'instances multirégionales de base utiliser une combinaison des trois types d'instances répliquées. Vous pouvez créer des modèles d'instances répliquées et d'ajouter des instances répliquées en lecture seule supplémentaires des configurations d'instances régionales et multirégionales.

Le tableau suivant récapitule les types d'instances répliquées et d'instance Spanner leurs propriétés :

Type d'instance dupliquée Peut voter Peut devenir l'instance dupliquée principale Peut diffuser des lectures Peut configurer l'instance répliquée manuellement
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 configuration d'instance.

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

Instances dupliquées en lecture seule

Les instances répliquées en lecture seule n'acceptent que les lectures, mais pas les écritures. Ces instances répliquées voter pour les dirigeants ou pour commettre des écritures, ce qui vous permet d'adapter votre lecture sans augmenter la taille du quorum nécessaire pour les écritures. Les instances dupliquées en lecture seule :

  • conserver une copie complète de vos données, qui est répliquée en lecture/écriture ; répliquées.
  • diffusent des opérations de lecture ;
  • Ne participez pas au vote pour valider les écritures. il s'ensuit que l'emplacement des instances dupliquées en lecture seule n'a aucune incidence sur la latence d'écriture ;
  • S'il s'agit de l'instance répliquée la plus proche de votre application, l'instance répliquée en lecture seule peut fournissent généralement des lectures non actualisées sans nécessiter d'aller-retour aux valeurs par défaut. dans la région principale, en supposant que l'obsolescence est d'au moins 15 secondes. Vous pouvez également d'utiliser les lectures dirigées pour acheminer les transactions en lecture seule et les lectures uniques dans une configuration d'instance multirégionale. Pour en savoir plus, consultez la section Lectures dirigées.

    Les lectures fortes peuvent nécessiter un aller-retour vers l'instance répliquée principale. L'aller-retour sert uniquement à négocier le code temporel, et non à expédier les données réelles du responsable. La négociation du code temporel est une opération optimale pour le CPU au niveau de la variante optimale, et, en général, 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 les lectures fortes, consultez le Dans la section des lectures.

  • ne sont pas éligibles au rôle d'instance dupliquée principale.

Vous pouvez créer une configuration d'instance personnalisée régionale ou multirégionale et ajouter des instances répliquées en lecture seule facultatives pour assurer le scaling des lectures et prendre en charge les données obsolètes à faible latence en lecture seule. Vous pouvez ajouter des lieux répertoriés sous Région facultative en tant qu'instance répliquée facultative en lecture seule. Si vous ne voyez pas l'élément en lecture seule emplacement de l'instance répliquée, vous pouvez demander une nouvelle région facultative d'instance répliquée en lecture seule. Remarque que vous ne pouvez pas modifier la topologie de réplication de l'instance de base de configuration, qui sont corrigés.

Toutes les instances répliquées facultatives en lecture seule sont soumises à la capacité de calcul et au stockage de réduction des coûts. De plus, l'ajout d'instances répliquées en lecture seule à une instance configuration d'instance ne modifie pas les Contrats de niveau de service Spanner de la configuration de l'instance. Si vous choisissez d'ajouter une instance répliquée en lecture seule à une situé dans un autre continent que la région principale, nous vous recommandons en ajoutant au moins deux instances répliquées en lecture seule. Cela permet de maintenir une faible latence de lecture au cas où l'une des instances répliquées en lecture seule devient indisponible.

Lorsque vous ajoutez une ou plusieurs instances répliquées en lecture seule, l'instance répliquée principale reçoit davantage de de réplication, ce qui peut affecter les performances. Nous vous recommandons de tester charges de travail hautes performances dans les instances hors production de l'instance personnalisée configuration. Reportez-vous au document Latence et débit interrégionaux tableau de bord d'analyse comparative pour la médiane de latence interrégionale. Par exemple, si vous créez une instance personnalisée avec la configuration de base multirégionale eur6 et une configuration instance répliquée en lecture seule dans us-east1, la latence de lecture élevée attendue pour une client dans us-east1 est d'environ 100 millisecondes en raison du délai aller-retour vers dans la région principale de europe-west4. Les lectures obsolètes avec suffisamment d'obsolescence qui entraînent l'aller-retour et sont donc beaucoup plus rapides. Vous pouvez également utiliser la colonne Latence par type de transaction afficher les données de latence pour les transactions de type lecture-écriture et lecture seule.

Pour obtenir des instructions, consultez Créer une configuration d'instance personnalisée.

Instances répliquées témoins

Les instances répliquées témoins ne prennent pas en charge les lectures, mais participent au vote pour valider les opérations 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 conservez pas une copie complète des données.
  • Ne diffusez pas les 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 répliquées dans les opérations d'écriture et de lecture

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

Dans les opérations d'écriture

Les requêtes d'écriture des clients sont toujours traitées en premier au niveau de l'instance répliquée principale, même si une instance répliquée non principale est plus proche du client, ou si l'instance principale répliquée est géographiquement éloignée du client. Si vous utilisez un emplacement multirégional configuration d'instance et que votre application cliente se trouve dans une instance non principale Cloud Spanner utilise le routage basé sur les leaders pour acheminer les requêtes en lecture/écriture de manière dynamique pour réduire la latence de votre base de données. Pour plus consultez la section Routage basé sur les prospects.

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.