web-dev-qa-db-fra.com

Cassandra nœuds de départ et clients se connectant aux nœuds

Je suis un peu confus au sujet de Cassandra nœuds de départ et comment les clients sont censés se connecter au cluster. Je n'arrive pas à trouver ce bit d'information dans la documentation.

Les clients contiennent-ils uniquement une liste du nœud d'origine et chaque nœud délègue un nouvel hôte auquel le client peut se connecter? Les nœuds de départ sont-ils uniquement destinés à la découverte de nœud à nœud, plutôt qu'un nœud spécial pour les clients?

Chaque client doit-il utiliser un petit échantillon de nœuds aléatoires dans le DC pour se connecter?

Ou, chaque client doit-il utiliser tous les nœuds du contrôleur de domaine?

29
gak

Répondre à ma propre question:

Graines

De la FAQ :

Les graines sont utilisées lors du démarrage pour découvrir le cluster.

Aussi à partir de la documentation DataStax sur "Gossip":

La désignation du nœud d'origine n'a d'autre but que d'amorcer le processus de ragots pour les nouveaux nœuds rejoignant le cluster. Seed ne sont pas un point de défaillance unique, et ils n'ont aucun autre objectif spécial dans les opérations de cluster au-delà du démarrage des nœuds.

De ces détails, il semble qu'une graine n'a rien de spécial pour les clients.

Clients

De la documentation DataStax sur les demandes des clients:

Tous les nœuds de Cassandra sont des pairs. Une demande de lecture ou d'écriture client peut aller vers n'importe quel nœud du cluster. Lorsqu'un client se connecte à un nœud et émet une demande de lecture ou d'écriture, ce nœud sert de le coordinateur de cette opération client particulière.

Le travail du coordinateur consiste à agir en tant que proxy entre l'application cliente et les nœuds (ou répliques) propriétaires des données demandées. Le coordinateur détermine les nœuds de l'anneau qui doivent recevoir la demande en fonction du partitionneur configuré en cluster et de la stratégie de placement des réplicas.

Je suppose que le pool de nœuds auquel un client se connecte ne peut être qu'une poignée de nœuds (aléatoires?) Dans le DC pour permettre les pannes potentielles.

41
gak

les nœuds de germination remplissent deux fonctions.

  1. ils servent de lieu à de nouveaux nœuds pour s'annoncer à un cluster. donc, sans au moins un nœud source actif, aucun nouveau nœud ne peut rejoindre le cluster car ils ne savent pas comment contacter les nœuds non-semences pour obtenir le état du cluster.
  2. les nœuds de graines agissent comme des points chauds de potins. comme les nœuds bavardent plus souvent avec des graines que des non-graines, les graines ont tendance à avoir des informations plus récentes, et donc l'ensemble du cluster a des informations plus récentes. c'est la raison que vous devriez pas faire toutes les graines des nœuds . de même, c'est aussi pourquoi tous les nœuds d'un centre de données donné doivent avoir la même liste de nœuds de départ dans leur fichier cassandra.yaml. En règle générale, 3 nœuds de départ par centre de données sont idéaux.

les points de contact client cassandra fournissent simplement la topologie de cluster au client, après quoi le client peut se connecter à n'importe quel nœud du cluster. en tant que tels, ils sont similaires aux nœuds de départ et il est logique de utilisez les mêmes nœuds pour les graines et les contacts clients. Cependant, vous pouvez configurer en toute sécurité autant de points de contact client cassandra que vous le souhaitez . la seule autre considération est que le premier nœud qu'un client contact définit son affinité de centre de données, vous pouvez donc souhaiter commander vos points de contact pour préférer un centre de données donné.

pour plus de détails sur les points de contact, voir cette question: Cassandra Java: combien de points de contact est raisonnable?

19
james turner

Votre réponse est juste. La seule chose que j'ajouterais, c'est qu'il est recommandé d'utiliser la même liste de graines (c'est-à-dire dans votre cassandra.yaml) à travers le cluster, comme une sorte de "meilleures pratiques". Aide à propager le trafic de potins à Nice, à des taux réguliers, car les graines sont traitées (très minimalement) différemment par le code de potins (voir http://wiki.Apache.org/cassandra/ArchitectureGossip ).

8
the paul