Cassandra Java驱动程序:多少个接触点是合理的?

2022-09-02 12:09:14

在Java中,我连接到Cussandra集群,如下所示:

Cluster cluster = Cluster.builder().addContactPoints("host-001","host-002").build();

我是否需要在其中指定群集的所有主机?如果我有一个包含 1000 个节点的群集,该怎么办?我会随机选择几个吗?有多少,我真的是随机做的吗?


答案 1

我想说的是,将客户端配置为使用与您配置Cassandra要使用的种子节点列表相同的节点列表将为您提供最佳结果。

如您所知,Cassandra节点使用种子节点来查找彼此并发现环的拓扑。驱动程序将仅使用列表中提供的节点之一来建立控制连接,即用于发现群集拓扑的节点,但向客户端提供种子节点将增加客户端在节点发生故障时继续运行的机会。


答案 2

我的方法是添加尽可能多的节点 - 原因很简单:种子仅对于集群启动是必需的,但是一旦集群启动并且正在运行的种子只是公共节点 - 仅使用种子可能会导致无法在工作集群中连接 - 所以我给自己最好的机会连接到集群,保持超过合理的节点数量 - 一个工作节点就足够了获取当前群集配置。


推荐