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?
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.
les nœuds de germination remplissent deux fonctions.
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?
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 ).