Réplica
Un réplica est une copie d'une partition détenue sur un autre nœud pour la disponibilité. Le facteur de réplication fixe combien de copies existent, et si un primaire est perdu, l'un de ses réplicas est promu pour prendre le relais.
Ce qu'est un réplica
Chaque partition est possédée par un nœud à la fois — son primaire — qui sert les lectures et les écritures de la partition. Un réplica est une copie supplémentaire de cette même partition, conservée sur un nœud différent comme secours à chaud (hot standby). Les écritures arrivent sur le primaire et sont diffusées en continu vers les réplicas, de sorte qu'un réplica reste proche de l'état du primaire et peut prendre le relais si le nœud du primaire échoue.
Les copies d'une même partition sont toujours placées sur des machines différentes, de sorte que perdre une machine ne peut jamais emporter à la fois un primaire et son réplica.
Le facteur de réplication
Le facteur de réplication est le nombre de copies de chaque partition qui existent — le primaire plus ses réplicas. C'est le principal réglage de la disponibilité en cas de perte de nœud, et vous le définissez lorsque vous créez un store ; New-ZrStore l'exige explicitement.
- Facteur de réplication 1 — une copie, aucun réplica. Rapide et compact, mais une perte de nœud signifie une perte de données. Ne l'utilisez que pour les caches que vous pouvez reconstruire.
- Facteur de réplication 2 — un primaire plus un réplica. Survit à la défaillance d'une machine ; c'est la valeur recommandée pour la production.
- Facteur de réplication 3 — un primaire plus deux réplicas. Survit à la défaillance simultanée de deux machines.
Pour la production, le facteur de réplication ne doit pas dépasser le nombre de machines, afin que chaque copie puisse se placer sur une machine différente ; sur une seule machine, cette règle est assouplie avec un avertissement, ce qui est acceptable pour les tests mais n'offre aucune tolérance aux pannes.
Dans la configuration, la valeur par défaut du facteur de réplication est 1 — une seule copie sans réplica. New-ZrStore ne suppose pas de valeur par défaut : vous passez -ReplicationFactor explicitement lorsque vous créez le store.
Primaire par rapport à réplica
La distinction entre un primaire et un réplica porte sur le rôle, et non sur le fait d'être une chose de nature différente — les deux sont des copies de la même partition sur des nœuds différents.
- Le primaire est la copie faisant autorité. Les écritures y vont toujours, et les lectures y vont par défaut.
- Un réplica est une copie de secours. Il reçoit les écritures du primaire et est prêt à être promu. Un store peut activer les lectures sur réplica (désactivées par défaut) afin que les charges de travail à forte intensité de lecture puissent lire depuis les réplicas, au prix de données possiblement un peu plus périmées.
Le moment où le primaire considère une écriture comme durable dépend du mode de réplication du store. En mode Async (le mode par défaut), le primaire acquitte immédiatement et réplique en arrière-plan, de sorte qu'un réplica peut prendre du retard. En mode Sync, le primaire attend l'acquittement du réplica selon la politique de quorum d'écriture avant de rendre la main.
Basculement : ce qui bascule réellement
Lorsque le nœud d'un primaire est perdu, l'un de ses réplicas est promu primaire et les clients se re-routent vers lui après un rafraîchissement de la carte. Le cluster reconstruit ensuite un nouveau réplica sur une machine saine pour rétablir le facteur de réplication configuré. Jusqu'à ce que cette reconstruction s'achève, la partition est sous-répliquée.
C'est le rôle de primaire de la partition qui bascule — passant du nœud perdu à un réplica survivant — pas la partition elle-même ni le nœud. La partition conserve son nom de code stable tout du long, de sorte que vous pouvez la suivre à travers la promotion.
Avec la réplication Async par défaut, un réplica peut traîner derrière son primaire. Si le primaire échoue avant que les écritures en attente soient répliquées, ces écritures sont perdues lors de la promotion. Utilisez la réplication Sync lorsqu'un basculement ne doit pas perdre d'écritures récentes.