Pilote Java Cassandra: combien de points de contact est-il raisonnable?
En Java-je me connecter à Cussandra cluster comme ceci:
Cluster cluster = Cluster.builder().addContactPoints("host-001","host-002").build();
Ai-je besoin de spécifier tous les hôtes du cluster? Que faire Si j'ai un cluster de 1000 nœuds? Dois-je choisir au hasard quelques-uns? Combien d', et dois-je vraiment le faire au hasard?
source d'informationauteur henry
Vous devez vous connecter pour publier un commentaire.
Je dirais que la configuration de votre client à utiliser la même liste de nœuds comme la liste des graines de nœuds que vous avez configuré Cassandra pour utilisation vous donnera les meilleurs résultats.
Comme vous le savez Cassandra nœuds utiliser les semences des nœuds à trouver les uns les autres et de découvrir la topologie de l'anneau. Le pilote doit utiliser seulement l'un des nœuds fournis dans la liste pour établir la de la connexion de contrôlecelui utilisé pour découvrir la topologie de cluster, mais de fournir le client avec les graines de nœuds augmenter le risque pour le client de continuer à fonctionner en cas de défaillances de nœuds.
Mon approche est d'ajouter autant de nœuds que je peux -- La raison en est simple: les graines sont nécessaires uniquement pour le groupe de démarrage, mais une fois que le cluster est en place et en cours d'exécution graines sont juste des nœuds communs -- en utilisant uniquement des graines, ce qui peut entraîner l'impossibilité de se connecter à un travail cluster -- je me donne les meilleures chances de se connecter au cluster de garder un plus que raisonnable de nœuds -- c'est assez d'un nœud de travail pour obtenir le courant de la configuration du cluster.
La Documentation de DataStax
De ce que je comprends, vous devez juste ajouter un point de contact unique et le pilote de découvrir le reste. Espérons que cela aide. Personnellement, j'utilise hector, vous devriez regarder dans.
J'ai lu un article intéressant à propos de Netflix et de leurs Cassandra installation.
Ils mentionnent le fait qu'ils ont utilisé leur Gorille système afin de prendre en baisse de 33% de leur cluster Cassandra et de voir que leurs systèmes étaient encore au travail comme prévu.
Ils ont quelque 2 000 Cassandra nœuds et a pris 33%. Cela signifie que 1 de 3 nœuds sont partis. (Environ 660 nœuds pour Netflix)
Si vous êtes vraiment malchanceux, toutes les connexions que vous avez spécifié font partie de la 660 nœuds... Aïe.
Les Chances sont, cependant, que si vous utilisez juste assez de nœuds et de ne jamais s'attendre à un événement spectaculaire où plus de 33% de votre réseau tombe en panne, alors vous devriez être en mesure d'utiliser un assez petit nombre, comme de 6 nœuds, car avec un tel numéro, vous devez toujours atteint au moins 4 qui sont...
Aujourd'hui, il devrait certainement être choisis de façon stratégique, si possible. C'est, si vous choisissez 6 noeuds tous dans le même rack, quand vous avez 6 programmes différents supports, vous avez probablement choisi le mal. Au lieu de cela, vous voulez probablement pour spécifier le noeud 1 par rack. (C'est une fois que vous cultivez beaucoup, bien sûr.)
Notez que si vous avez un Facteur de Réplication de 5 et 33% de votre Cassandra nœuds aller vers le bas, vous êtes en difficulté de toute façon. Dans cette situation, le nombre de nœuds ne peuvent pas accéder à la base de données dans un COLLÈGE. Notez que Netflix pourparlers à ce sujet. Leur facteur de réplication est à seulement 3! (c'est à dire
1/3 = 0.33
et1/5 = 0.2
.)Enfin, je ne sais pas le pilote Java, j'utilise le C++. Lorsqu'il échoue, je me suis dit. Donc ce que je peux faire est d'essayer avec un autre ensemble d'adresses ip si nécessaire, jusqu'à ce qu'il fonctionne... Mon système a une connexion qui reste en place entre le client accède, c'est donc un processus d'une fois et je peux relayer le fait que ce serveur est connecté à Cassandra et peut donc accepter les connexions des clients. Si vous vous reconnectez à Cassandra chaque fois qu'un client vous envoie une requête, il peut être judicieux de ne pas envoyer de nombreux IPs.