Cassandra Architecture et facteur de réplication
⚡ Résumé intelligent
Cassandra L'architecture répartit les données entre les nœuds homologues sans point de défaillance unique, en utilisant le protocole de communication par ondes de choc pour la coordination et la réplication pour la durabilité. Cette page décrit chaque composant, les stratégies de réplication, les niveaux de cohérence et les chemins internes d'écriture et de lecture.

Cassandra est conçu pour gérer Big Data. CassandraLa principale fonctionnalité de est de stocker des données sur plusieurs nœuds sans point de défaillance unique.
La raison de ce genre de CassandraL'architecture de 's était telle qu'une panne matérielle pouvait survenir à tout moment. N'importe quel nœud pouvait être en panne. En cas de panne, les données stockées dans un autre nœud pouvaient être utilisées. Par conséquent, Cassandra est conçu avec son architecture distribuée.
Cassandra stocke les données sur différents nœuds avec une architecture de mode distribuée peer to peer.
Tous les nœuds échangent des informations entre eux en utilisant Protocole de potins. Les potins sont un protocole dans Cassandra par lequel les nœuds peuvent communiquer entre eux.
Composants de Cassandra Architecture
Il y a les composants suivants dans le Cassandra Archistructure :

Le diagramme ci-dessus imbrique les composants : les nœuds se trouvent à l’intérieur d’un centre de données, les centres de données se trouvent à l’intérieur d’un cluster, et le journal de transactions, la memtable et la SSTable résident à l’intérieur de chaque nœud individuel.
Nœud
Le nœud est l'endroit où les données sont stockées. C'est l'élément de base de Cassandra.
Data Center
Un ensemble de nœuds est appelé centre de données. De nombreux nœuds sont classés comme centre de données.
Cluster
Le cluster est un ensemble de nombreux centres de données.
Journal de validation
Chaque opération d'écriture est écrite dans le journal de validation. Le journal de validation est utilisé pour la récupération après incident.
Table mémoire
Une fois les données écrites dans le journal de validation, les données sont écrites dans la table Mem. Les données sont écrites temporairement dans la table Mem.
SSTable
Lorsque la table mémoire atteint un certain seuil, les données sont écrites dans un fichier disque SSTable. Les SSTables étant immuables, une mise à jour crée une nouvelle version au lieu de modifier l'ancienne. Un processus d'arrière-plan appelé compaction fusionne ensuite ces versions et supprime les lignes obsolètes.
Réplication des données dans Cassandra
Comme un problème matériel peut survenir ou que la liaison peut être interrompue à tout moment pendant le traitement des données, une solution est nécessaire pour fournir une sauvegarde lorsque le problème survient. Ainsi, les données sont répliquées pour garantir l’absence de point de défaillance unique.
Cassandra place des répliques de données sur différents nœuds en fonction de ces deux facteurs.
- L'endroit où placer la prochaine réplique est déterminé par le Stratégie de réplication.
- Bien que le nombre total de répliques placées sur différents nœuds soit déterminé par le Facteur de réplication.
Un facteur de réplication signifie qu'il n'y a qu'une seule copie des données, tandis que trois facteurs de réplication signifient qu'il existe trois copies des données sur trois nœuds différents.
Pour garantir qu'il n'y a pas de point de défaillance unique, le facteur de réplication doit être de trois.
Il existe deux types de stratégies de réplication dans Cassandra.
Stratégie simple dans Cassandra
SimpleStratégie est utilisé lorsque vous n’avez qu’un seul centre de données. SimpleStrategy place la première réplique sur le nœud sélectionné par le partitionneur. Après cela, les répliques restantes sont placées dans le sens des aiguilles d’une montre dans l’anneau Node.
Voici la représentation picturale de SimpleStrategy :

RéseauTopologieStratégie dans Cassandra
RéseauTopologieStratégie est utilisé lorsque vous disposez de plus de deux centres de données. Dans NetworkTopologyStrategy, les réplicas sont définis séparément pour chaque centre de données. NetworkTopologyStrategy place les réplicas dans le sens des aiguilles d'une montre dans l'anneau jusqu'à atteindre le premier nœud d'un autre rack. Cette stratégie tente de placer les répliques sur différents racks dans le même centre de données.
Cela est dû à la raison pour laquelle une panne ou un problème peut parfois survenir dans le rack. Les répliques sur d’autres nœuds peuvent alors fournir des données.
Voici la représentation picturale de la stratégie de topologie du réseau :

Le facteur de réplication détermine le nombre de copies existantes. Le nombre de ces copies qui doivent répondre à une requête donnée est un paramètre distinct, décrit ci-après.
Niveaux de cohérence dans Cassandra
Le niveau de cohérence est défini par requête et non par cluster, ce qui rend Cassandra Ce paramètre est configurable. Il indique le nombre de répliques qui doivent accuser réception d'une écriture ou répondre à une lecture avant que le coordinateur ne réponde au client. Un niveau bas permet une réponse plus rapide ; un niveau élevé garantit des données plus à jour.
| Niveau | COMPORTEMENT | Utilisation typique |
|---|---|---|
| ONE | Une réplique doit répondre. | Enregistrement à haut débit où une lecture obsolète occasionnelle est acceptable. |
| QUORUM | Une majorité de toutes les répliques doit répondre, calculée comme (RF / 2) + 1. | Le choix polyvalent pour un équilibre optimal entre consistance et disponibilité. |
| QUORUM LOCAL | La majorité des répliques au sein du centre de données local doivent répondre. | Les clusters multi-centres de données, car ils évitent la latence interrégionale. |
| TOUTES | Chaque réplique doit répondre. | Rare. Une seule panne de nœud suffit à faire échouer complètement la requête. |
| à N'IMPORTE QUELLE RÉUNION sur la liste. (écriture seulement) | Un transfert suggéré est considéré comme un succès même si aucune réplique n'est joignable. | Disponibilité d'écriture maximale là où la durabilité peut être assouplie. |
La cohérence forte est garantie lorsque la somme des niveaux de lecture et d'écriture dépasse le facteur de réplication. Avec un facteur de réplication de trois, l'écriture et la lecture au niveau de quorum satisfont cette règle, car deux plus deux sont supérieurs à trois. En revanche, l'écriture et la lecture au niveau de un ne la satisfont pas, et une lecture peut donc renvoyer une valeur antérieure.
Lorsqu'une réplique est inaccessible, le coordinateur stocke une allusion et le rejoue une fois que le nœud est revenu, ce qui est le fonctionnement du niveau ANY et d'une grande partie de Cassandrale fonctionnement de son comportement d'auto-guérison.
Écrire Operation dans Cassandra
Le coordinateur envoie une demande d'écriture aux réplicas. Si toutes les répliques sont opérationnelles, elles recevront une demande d'écriture quel que soit leur niveau de cohérence.
Niveau de cohérence détermine combien de nœuds répondront avec l'accusé de réception du succès.
Le nœud répondra avec un accusé de réception de succès si les données sont écrites avec succès dans le journal de validation et memTable.
Par exemple, dans un seul centre de données avec un facteur de réplication égal à trois, trois réplicas recevront une demande d'écriture. Si le niveau de cohérence est un, une seule réplique répondra avec un accusé de réception de réussite et les deux autres resteront inactives.
Supposons que si les deux répliques restantes perdent des données en raison de pannes de nœuds ou d'un autre problème, Cassandra rendra la ligne cohérente grâce au mécanisme de réparation intégré dans Cassandra.
Ici, il est expliqué comment le processus d'écriture se déroule dans Cassandra,
- Lorsque la demande d'écriture parvient au nœud, il se connecte tout d'abord dans le journal de validation.
- Ensuite Cassandra écrit les données dans la table mémoire. Les données écrites dans la table mémoire à chaque demande d'écriture sont également écrites séparément dans le journal de validation. Mem-table est une donnée stockée temporairement dans la mémoire tandis que le journal Commit enregistre les enregistrements de transaction à des fins de sauvegarde.
- Lorsque la table mem est pleine, les données sont vidées vers le fichier de données SSTable.

Étant donné que les SSTables ne sont jamais modifiées directement, une suppression ne supprime pas immédiatement la ligne. À la place, un marqueur appelé pierre tombale La ligne est écrite, puis disparaît seulement lorsque la compaction s'exécute après la période de grâce. C'est pourquoi les charges de travail importantes liées à la suppression ralentissent les lectures jusqu'à ce que la compaction soit terminée.
Lire Operation dans Cassandra
Il existe trois types de demandes de lecture qu'un coordinateur envoie aux réplicas.
- Demande directe
- Demande de résumé
- Lire la demande de réparation
Le coordinateur envoie une demande directe à l'une des répliques. Après cela, le coordinateur envoie la demande de résumé au nombre de réplicas spécifié par le niveau de cohérence et vérifie si les données renvoyées sont des données mises à jour.
Après cela, le coordinateur envoie une demande de résumé à toutes les répliques restantes. Si un nœud donne une valeur obsolète, une demande de réparation en lecture en arrière-plan mettra à jour ces données. Ce processus est appelé mécanisme de réparation en lecture.
Dans la réplique qui reçoit la requête directe, l'ordre de recherche est conçu pour éviter autant que possible les accès au disque.
- Le memtable est vérifiée en premier, car les écritures les plus récentes n'ont pas encore été purgées.
- Le cache de lignesSi cette option est activée, elle peut répondre à la requête complète sans intervention supplémentaire.
- A filtre de floraison Cette fonction est consultée pour chaque SSTable. Elle indique si elle est absente ou possiblement présente, ce qui permet d'ignorer la plupart des SSTables sans les lire.
- Le index de partition et son résumé localise le décalage d'octet exact dans toute SSTable qui survit au contrôle du filtre de Bloom.
- Les fragments correspondants provenant de plusieurs SSTables sont fusionnés, l'horodatage le plus récent étant retenu pour chaque colonne.
Le filtre de Bloom est l'étape qui permet de maintenir des vitesses de lecture rapides malgré l'augmentation du volume de données, car il élimine presque toutes les SSTables avant toute recherche sur disque. L'application de ces mécanismes sur plusieurs machines est abordée dans la section suivante : Cassandra grappe tutoriel.
