0

我已经开始研究我正在使用的项目Cassandra database

我们的生产 DBA 已经设置好two cluster,每个集群都有12 nodes.

我将使用Pelops client从 Cassandra 数据库中读取数据。现在我正在考虑使用创建集群时应该添加多少个节点来创建Cluster类的最佳方法是什么?Pelops clientPelops

pelops client我的理解是使用all创建集群,24 nodes因为我将有两个集群,每个集群有 12 个节点?这是正确的做法吗?

如果不是,那么我们如何决定在使用 Pelops 客户端创建集群时应该添加哪些节点(来自每个集群)?

String[] nodes = what nodes I should use from two clusters? And how many nodes I should add?; 

int port = cfg.getInt("cassandra.port"); 

boolean dynamicND = true; // dynamic node discovery 

Config casconf = new Config(port, true, 0); 

Cluster cluster = new Cluster(nodes, casconf, dynamicND); 

Pelops.addPool(Const.CASSANDRA_POOL, cluster, Const.CASSANDRA_KS);

谁能帮我解决这个问题?

任何帮助将不胜感激。

4

1 回答 1

0

我将尝试更好地解释另一篇文章中的评论。我的建议是给 pelops 只是每个集群的种子。假设每个集群有 2 个种子,我将使用这 4 个节点来创建我的池。

您正在使用 Pelops——来自 Dominic Williams(Pelops 创建者)文档:

要创建池,您需要指定名称、已知联系节点列表(该库可以自动检测集群中的其他节点,但请参阅末尾的注释)、节点正在侦听的网络端口以及控制池中连接数等内容的策略。-- 所以没有必要传递整个节点列表。

来自 Cassandra 文档:

Cassandra 节点使用一种称为 Gossip 的机制交换彼此的信息,但要让球滚动,新启动的节点需要至少知道另一个节点,这称为种子。习惯上选择少量相对稳定的节点作为你的种子,但这里并没有一成不变的规则

我从 3 年开始使用 Pelops 进行生产(从 Cassandra 0.6 现在 1.0.6 开始),并且只使用种子作为节点列表的方法......效果很好!

几个提示:

1:如果您担心连接和环的健康状况,您可以编写一个使用 EACH_QUORUM CL 进行“随机查询”的类来检查连接——以及一个使用 Nodetool java 类来检查环的健康状况的类

2:如果您在 cassandra 中执行删除,请记住 nodetool 修复的重要性(http://wiki.apache.org/cassandra/Operations#Repairing_missing_or_inconsistent_data

问候, 卡罗

于 2013-04-12T07:51:55.203 回答