L'architecture de Cassandra expliquée : un didacticiel complet
Publié: 2021-03-10Depuis sa création sur Facebook, Cassandra est devenue l'un des projets Apache les plus populaires. Il s'agit d'une base de données open source, hautement performante et distribuée largement utilisée, qui facilite la vie des ingénieurs en logiciel, des scientifiques des données et des développeurs Web.
Les utilisateurs de cette solution de base de données robuste incluent IBM, Facebook, Reddit, eBay et Twitter.
Cependant, pour vous familiariser avec Cassandra, vous devez connaître son architecture et l'architecture Apache Cassandra peut être un peu difficile à comprendre.
C'est pourquoi nous avons créé le guide d'introduction suivant sur l'architecture Cassandra. Il vous familiarisera avec tous les concepts nécessaires de l'architecture Cassandra :
Table des matières
Bases de l'architecture de Cassandre
L'architecture Apache Cassandra n'a pas de nœud maître ou esclave. Au lieu de cela, il a une architecture en forme d'anneau où les nœuds sont répartis logiquement dans un anneau. L'architecture permet aux données d'être distribuées automatiquement sur tous les nœuds. Comme HDFS, les données de Cassandra sont répliquées sur les nœuds pour la redondance et sont stockées en mémoire. Il utilise les valeurs de hachage des clés pour répartir les données entre les nœuds du cluster.
L'architecture Cassandra permet au système de fonctionner indépendamment d'un seul point de défaillance. Cela signifie que si un cluster a une centaine de nœuds et que l'un d'eux tombe en panne, le cluster sera toujours en cours d'exécution. D'autre part, avec Hadoop, la défaillance d'un namenode ferait échouer l'ensemble du système.
L'architecture Cassandra offre une grande évolutivité, de sorte qu'un cluster peut même avoir des milliers de nœuds. De plus, vous pouvez ajouter un nouveau nœud à un cluster sans interrompre ses opérations.
Outre les fonctionnalités dont nous avons discuté ci-dessus, l'architecture Apache Cassandra prend également en charge plusieurs centres de données et permet la réplication des données entre les centres de données.
Topologie et conception
L'architecture Cassandra est basée sur une architecture système distribuée. La version la plus simple de Cassandra peut fonctionner sur une seule machine et fonctionner correctement avec les tests de base. Une instance de Cassandra est appelée un nœud.
Cassandra offre une évolutivité horizontale où vous pouvez ajouter plusieurs nœuds en tant que composant d'un cluster. Il fonctionne avec une architecture peer to peer où chaque nœud est connecté à tous les autres nœuds. Chaque nœud Cassandra effectue toutes les opérations de base de données et traite les demandes des clients sans nœud maître.
Cette architecture distribuée peer-to-peer garantit qu'un seul point de défaillance n'entraîne pas la défaillance de l'ensemble du système. Les clusters de Cassandra peuvent communiquer entre eux pour de nombreuses fonctions. Les concepts suivants sont essentiels pour une telle communication :
Potins
Gossip est un protocole Cassandra que ses nœuds utilisent pour la communication peer-to-peer. Il informe un nœud des états des autres nœuds. Chaque seconde, un nœud effectue des potins avec jusqu'à trois autres nœuds et chaque message de potins suit des formats et des numéros de version spécifiques pour maintenir l'efficacité de la communication.
Des graines
Chaque nœud de Cassandra configure une liste de graines qui est une liste d'autres nœuds. Un nœud de départ n'a d'autre but que d'amorcer un nœud lorsqu'il rejoint un cluster pour la première fois. Après le démarrage, un nœud ne nécessite pas de graine au redémarrage. Il est préférable d'utiliser deux ou trois nœuds de départ par centre de données Cassandra et de conserver une liste de départs uniforme.
Structure de la base de données
Dans Cassandra, les données sont stockées dans des tables où chaque table est organisée en lignes et en colonnes. De plus, les tables de Cassandra sont regroupées dans des espaces clés tels que les tables sur les données client peuvent toutes être regroupées dans un espace clé tandis que les tables sur les transactions commerciales peuvent être stockées dans un autre.
Chaque table a une clé primaire qui est divisée en colonnes de clustering et en clé de partition. Notez que les colonnes de clustering sont facultatives. Cassandra utilise la clé de partition pour indexer les données. Toutes les lignes avec une clé de partition commune constituent une partition de données, l'unité de base pour le partitionnement des données.
Partitionnement à Cassandra
Dans Cassandra, un partitionneur convertit les clés de partition en jetons. Il existe plusieurs options de partitionnement présentes dans Cassandra où Murmur3Partitioner est la valeur par défaut. Chaque jeton se voit attribuer une valeur entière comprise entre -2^63 et +2^63-1, et le nom de cette plage est la plage de jetons.
Chaque Cassandra possède une partie de cette gamme et elle possède principalement des données liées à la gamme. Nous utilisons un jeton pour localiser précisément les données parmi les nœuds.
Vous pouvez comprendre le système de propriété avec ce concept : si un cluster n'a qu'un seul nœud, ce nœud possède la plage complète de jetons. Avec l'ajout de plus de nœuds, la propriété de la plage de jetons serait divisée en conséquence.
Nœuds virtuels
Cassandra simplifie les défis de calcul et d'attribution de jetons en utilisant des nœuds virtuels, également appelés Vnodes.
Il divise un cluster en plusieurs nœuds virtuels pour attribuer des jetons et chaque nœud physique obtient une quantité égale de Vnodes. Le nombre par défaut de Vnodes appartenant à un nœud est 256. Vous pouvez définir le même en utilisant la propriété num_tokens. Lorsque vous ajoutez un nouveau nœud à un cluster, l'algorithme d'allocation de jetons alloue les jetons requis à l'aide des Vnodes.
Réplication
Cassandra réplique les données présentes dans chaque espace de clés avec un facteur de réplication. Une réplique principale des données reste avec le nœud propriétaire du jeton tandis que les autres sont placées par Cassandra sur des nœuds particuliers via sa stratégie de placement de répliques. Notez que toutes les répliques ont la même importance pour la plupart des opérations de base de données.
Deux paramètres affectent le placement des répliques dans Cassandra, qui sont le mouchard et la stratégie de réplication. Snitch détermine le centre de données et le rack auquel appartient un nœud. Ils sont chargés d'informer Cassandra de la topologie pour garder les choses efficaces.
La stratégie de réplication est définie au niveau de l'espace de clés et il en existe deux : NetworkTopologyStrategy et stratégie simple. Le premier est un rack et un centre de données, tandis que le second ne l'est pas.
Théorème CAP
Chaque système distribué fonctionne sur la base du théorème CAP. Selon ce théorème, tout système distribué peut correctement fournir deux des trois propriétés, la cohérence, la disponibilité et la tolérance aux partitions.
Dans Cassandra, vous pouvez choisir entre disponibilité et cohérence. Cela signifie que les données peuvent être soit hautement cohérentes avec une disponibilité moindre, soit hautement disponibles avec une faible cohérence.
Le concept de demande d'un nombre spécifique d'accusés de réception est appelé cohérence ajustable et vous pouvez l'appliquer au niveau de la requête individuelle.
Processus d'écriture
Dans ce processus, les données sont écrites dans un journal de commentaires sur un disque, puis envoyées à un nœud responsable en fonction de la valeur de hachage.
Après cela, les nœuds écrivent des données dans une table en mémoire appelée memtable à partir de laquelle les données sont écrites dans une "sstable" en mémoire. Ensuite, il est mis à jour avec la table réelle.
Si le nœud responsable est en panne pour une raison quelconque, les données sont écrites sur un autre nœud.
En savoir plus sur l'architecture Cassandra
Comprendre l'architecture Apache Cassandra vous aiderait à comprendre le fonctionnement de cette solution. À présent, vous savez également pourquoi Cassandra se démarque dans la compétition et pourquoi elle est si populaire.
Si vous souhaitez en savoir plus sur les bases de données, vous pouvez consulter les ressources suivantes :
SQL pour la science des données : pourquoi SQL, liste des avantages et commandes
20 questions et réponses d'entrevue SQL les plus courantes [Pour les débutants]
Cours en ligne gratuit SQL avec certificat [2021]
D'autre part, si vous recherchez une expérience d'apprentissage personnalisée, nous vous recommandons de suivre un cours de science des données. Chez upGrad, nous proposons un diplôme PG en science des données et une maîtrise ès sciences en science des données . Ces cours vous apprendront toutes les compétences nécessaires pour devenir un professionnel de la science des données.
Conclusion
Si vous souhaitez en savoir plus sur le programme Big Data, consultez notre programme PG Diploma in Software Development Specialization in Big Data qui est conçu pour les professionnels en activité et fournit plus de 7 études de cas et projets, couvre 14 langages et outils de programmation, des mains pratiques- sur les ateliers, plus de 400 heures d'apprentissage rigoureux et d'aide au placement avec les meilleures entreprises.
Consultez nos autres cours de génie logiciel sur upGrad.