防止Cassandra节点过度使用

时间:2017-09-05 15:39:46

标签: cassandra datastax-java-driver database nosql

在Java中,我创建了一个Cassandra集群构建器,我提供了多个Cassandra节点的列表,如下所示:

Cluster cluster = Cluster.builder().addContactPoint(host1, host2, host3, host4).build();

但据我所知,连接器只连接到可用列表中的第一个主机,该主机成为我与Cassandra集群的连接点。

现在,我的问题是,如果我的Java应用程序从/向Cassandra读取/写入大量数据,那么我的Java应用程序是否会压倒它所连接的节点?

有没有办法配置我的连接,以便它使用Cassandra的多个节点进行读/写?通常的做法是什么?

1 个答案:

答案 0 :(得分:1)

它使用联系点查找群集中的其余节点,然后创建一个到所有主机的连接池,并在它们之间平衡请求。除非您使用白名单负载平衡策略或自定义策略,否则它不会仅连接到您提供的主机。

如果您担心压倒性的节点使用RoundRobinLoadBalancingPolicy(DC知道多个DC),它会在所有节点之间均匀分配。如果你有数据的热点并使用TokenAware政策,你可能会有不一致,但你不应该担心它。