web-dev-qa-db-fra.com

Quelles sont les différences entre un nœud, un cluster et un centre de données dans une base de données cassandra nosql?

J'essaie de dupliquer des données dans une base de données cassandra nosql pour un projet d'école utilisant le centre d'exploitation datastax. Il y a trois mots-clés: cluster, noeud et centre de données, et à partir de quoi J'ai bien compris, les données d'un nœud peuvent être dupliquées dans un autre nœud, qui existe dans un autre cluster, et tous les nœuds contenant les mêmes données (dupliquées) constituent un centre de données.

Si ce n'est pas le cas, quelle est la différence?

34
enjazweb

La hiérarchie des éléments dans Cassandra est:

  • Grappe
    • Centre (s) de données
      • Rack (s)
        • Les serveurs)
          • Node (plus précisément, un vnode)

Un cluster est une collection de centres de données.

Un centre de données est une collection de racks.

Un rack est une collection de serveurs.

Un serveur contient 256 nœuds virtuels (ou vnodes) par défaut.

Un vnode est la couche de stockage de données au sein d'un serveur.

Remarque: Un serveur est le logiciel Cassandra. Un serveur est installé sur une machine, une machine étant un serveur physique, une instance EC2 ou similaire.

Maintenant, pour répondre spécifiquement à vos questions.

Une unité de données individuelle est appelée une partition. Et oui, les partitions sont répliquées sur plusieurs nœuds. Chaque copie de la partition est appelée réplique.

Dans un cluster multi-centres de données, la réplication s'effectue par centre de données. Par exemple, si vous avez un centre de données à San Francisco nommé dc-sf et un autre à New York nommé dc-ny, vous pouvez contrôler le nombre de réplicas par centre de données.

Par exemple, vous pouvez définir dc-sf pour avoir 3 réplicas et dc-ny pour avoir 2 réplicas.

Ces chiffres s'appellent le facteur de réplication. Vous diriez précisément que dc-sf a un facteur de réplication de 3 et que dc-ny a un facteur de réplication de 2. En termes simples, dc-sf aurait 3 copies des données réparties sur trois nœuds virtuels, alors que dc-sf aurait 2 copies des données réparties sur deux vnodes.

Bien que chaque serveur dispose de 256 nœuds virtuels par défaut, Cassandra est suffisamment intelligent pour choisir des nœuds virtuels existant sur différents serveurs physiques.

Résumer:

  • Les données sont répliquées sur plusieurs nœuds virtuels (chaque serveur contient 256 nœuds virtuels par défaut).
  • Chaque copie des données s'appelle une réplique.
  • L'unité de données s'appelle une partition
  • La réplication est contrôlée par centre de données
68
Akbar Ahmed

Un nœud est une seule machine qui exécute Cassandra. Un ensemble de nœuds contenant des données similaires est regroupé dans ce que l’on appelle un "anneau" ou un cluster.

Parfois, si vous avez beaucoup de données ou si vous les utilisez dans différentes zones géographiques, il est logique de regrouper les nœuds de votre cluster dans différents centres de données. Un bon exemple de ceci est un site Web de commerce électronique, qui peut avoir de nombreux clients fréquents sur les côtes est et ouest. Ainsi, vos clients de la côte Est se connectent à votre côte Est DC (pour des performances plus rapides), mais ont finalement accès au même jeu de données (les deux contrôleurs se trouvent dans le même cluster) que la côte Ouest. les clients.

Plus d'informations à ce sujet peuvent être trouvées ici: À propos d'Apache Cassandra - Comment fonctionne-t-il Cassandra??

Et tous les nœuds contenant les mêmes données (dupliquées) composent un centre de données. Est-ce correct?

Fermer, mais pas nécessairement. Le niveau de duplication de données dont vous disposez est déterminé par votre facteur de réplication, défini espace par espace clé. Par exemple, supposons que je possède 3 nœuds dans mon seul contrôleur de domaine, tous stockant 600 Go de données de produit. Ma définition d'espace clavier products pourrait ressembler à ceci:

CREATE KEYSPACE products
WITH replication = {'class': 'NetworkTopologyStrategy', 'MyDC': '3'};

Cela garantira que mes données de produit sont répliquées de manière égale sur les 3 nœuds. La taille de mon jeu de données total est de 600 Go, dupliquée sur les 3 nœuds.

Mais disons que nous lançons une nouvelle gamme de produits assez importante et j'estime que nous aurons 300 Go de données supplémentaires à venir, ce qui pourrait augmenter considérablement la capacité de nos disques durs. Si nous ne pouvons pas nous permettre de mettre à niveau tous nos disques durs maintenant, je peux modifier le facteur de réplication comme suit:

CREATE KEYSPACE products
WITH replication = {'class': 'NetworkTopologyStrategy', 'MyDC': '2'};

Cela créera 2 copies de toutes nos données et les stockera dans notre cluster actuel de 3 nœuds. La taille de notre ensemble de données est maintenant de 900 Go, mais comme il n’existe que deux copies (chaque nœud est essentiellement responsable de 2/3 des données), notre taille sur disque reste de 600 Go. L'inconvénient ici est que (en supposant que je lise et écris à un niveau de cohérence de ONE), je ne peux me permettre que de subir une perte d'un nœud. Considérant qu'avec 3 nœuds et un RF de 3 (lecture et écriture à nouveau de manière cohérente ONE), je pourrais perdre 2 nœuds et continuer à répondre aux demandes.

Modifier 20181128

Lorsque je fais une demande réseau, est-ce que je fais cela contre le serveur? ou le noeud? Ou je fais une demande sur le serveur puis-je l'acheminer et lire à partir du nœud ou autre chose?

Donc explication rapide: serveur == noeud

En ce qui concerne les requêtes sur les nœuds de votre cluster, ce comportement est en réalité dicté par le pilote côté application. En fait, le pilote conserve une copie de la topologie réseau actuelle, car il lit les potins du cluster de la même manière que les nœuds.

Du côté de l'application, vous pouvez définir une politique d'équilibrage de charge. Plus précisément, la classe TokenAwareLoadBalancingPolicy examinera la clé de partition de chaque demande, déterminera le ou les nœuds qui contiennent les données et enverra la demande directement à cet emplacement.

Pour les autres stratégies d'équilibrage de charge ou pour les requêtes dans lesquelles une clé de partition unique ne peut pas être déterminée, la demande sera envoyée à un seul nœud. Ce nœud agira comme un "coordinateur". Ce nœud choisi gérera l'acheminement des demandes vers les nœuds qui en sont responsables, ainsi que la compilation/le renvoi de tout jeu de résultats.

25
Aaron

Nœud:

Une machine qui stocke une partie de votre base de données. Cela peut inclure des données répliquées à partir d'un autre noeud ainsi que ses propres données. Les données dont il est responsable sont déterminées par ses plages de jetons et la stratégie de réplication de l'espace de clés contenant les données.

Centre de données:

Un groupement logique de nœuds pouvant être séparés d'autres nœuds. Un cas d'utilisation courant est AWS-EAST vs AWS-WEST. La réplication NetworkTopologyStrategy permet de spécifier le nombre de réplicas de l’espace-clé complet dans un centre de données donné. C’est ainsi que les utilisateurs de Cassandra) obtiennent une réplication cross-dc. En outre, ils sont des stratégies de niveau de cohérence qui exigent uniquement un accusé de réception niquement dans le centre de données du coordinateur (LOCAL_*)

Grappe

La somme totale de toutes les machines de votre base de données, y compris tous les centres de données. Il n'y a pas de réplication entre clusters.

11
RussS