Partition
Une partition est une tranche de l'espace de clés d'un store. Les clés sont hachées dans des partitions, chaque partition est détenue par un nœud à la fois, et les partitions portent des noms de code-word stables afin que vous puissiez les suivre à travers le cluster.
Ce qu'est une partition
Une partition est l'unité de propriété et de réplication au sein d'un store. L'espace de clés du store est divisé en partitions ; chaque clé appartient à exactement une partition, et chaque partition est détenue par exactement un nœud à la fois — son primaire — plus zéro ou plusieurs réplicas sur d'autres nœuds. Diviser l'espace de clés de cette façon est ce qui permet à un store de passer au-delà de ce qu'un seul nœud peut détenir et servir.
D'une clé à une partition
Le routage d'une clé vers une partition est déterministe, de sorte que chaque client calcule le même itinéraire sans se coordonner. Il se déroule en deux étapes.
- Clé vers segment. Chaque clé est hachée dans l'un d'un nombre fixe de segments (slots de hachage). Une clé donnée atterrit toujours dans le même segment.
- Segment vers partition. Les segments sont regroupés en partitions. Une partition possède un ensemble contigu de segments.
Ce sont les segments, et non les clés individuelles, qui sont mappés aux partitions. C'est pourquoi le rééquilibrage déplace des segments entre partitions et nœuds plutôt que de rehacher les clés — les clés voyagent avec leur segment, intactes.
Nombre de partitions
Vous ne définissez généralement pas un nombre absolu de partitions. Vous définissez le nombre de partitions par nœud, qui vaut 1 par défaut, et le total est dérivé comme partitions par nœud × nœuds actifs. Le total est recalculé à chaque changement d'appartenance (membership), de sorte qu'il suit la forme du cluster plutôt que de se figer au moment de la création.
- La topologie de production conserve la valeur par défaut d'une partition par nœud.
- Les tests locaux augmentent le nombre de partitions par nœud — par exemple,
4— afin que vous puissiez observer un comportement conscient des partitions, tel que le routage par segment et le rééquilibrage lors du scale-out, sur une seule machine.
Noms de code-word
Chaque partition est identifiée par un code-word stable — Amber, Onyx, Jade, Opal, Topaz, et ainsi de suite — plutôt que par un simple numéro. Le mot est dérivé du numéro de série stable et monotone de la partition, de sorte que la même partition conserve le même mot dans chaque processus et à travers les redémarrages et les changements de propriété. La liste de mots est délibérément non géographique (gemmes, métaux, arbres, oiseaux, météo, étoiles et similaires) et sans collision à l'intérieur d'un cycle de 500 mots.
L'intérêt est opérationnel : dans la console et dans les diagnostics, vous pouvez suivre Amber à mesure qu'il se déplace d'un nœud à un autre lors d'un basculement ou d'un rééquilibrage, au lieu de corréler des index de partition anonymes entre les instantanés.
La partition face aux termes que les lecteurs confondent avec elle
Une partition est une tranche logique de données, ce qui la distingue du processus qui la détient et d'une copie redondante de celle-ci.
- Une partition n'est pas un nœud. Un nœud est un processus ; une partition est une donnée que le nœud détient. Un nœud peut détenir plusieurs partitions.
- Une partition n'est pas un réplica. Un réplica est une copie d'une partition sur un autre nœud. La partition est la chose ; ses réplicas en sont des copies supplémentaires.
- Une partition n'est pas un store. Un store est l'espace de clés entier ; une partition en est une tranche.
La vue Nodes de la console montre quelles partitions chaque nœud détient — celles qu'il possède en tant que primaire et celles qu'il conserve en tant que réplica — par code-word.