防止 Cassandra 节点不堪重负
Preventing Cassandra Node from Being Overwhelemed
在 Java 中,我创建了一个 Cassandra 集群构建器,我提供了一个包含多个 Cassandra 节点的列表,如下所示:
Cluster cluster = Cluster.builder().addContactPoint(host1, host2, host3, host4).build();
但据我了解,连接器仅连接到列表中可用的第一台主机,并且该主机成为我与 Cassandra 集群的连接点。
现在,我的问题是,如果我的 Java 应用程序 reads/writes 大量数据 from/to Cassandra,那么我的 Java 应用程序不会淹没它所在的节点吗?连接到?
有没有办法配置我的连接,使其 reads/writes 使用 Cassandra 的多个节点?通常的做法是什么?
它使用联系点找到集群中的其余节点,然后创建到所有主机的连接池并在它们之间平衡请求。除非您使用白名单负载平衡策略或自定义策略,否则它不仅会连接到您提供的主机。
如果您担心节点过多,请使用 RoundRobinLoadBalancingPolicy(如果有多个 DC,则 DC 知道)它会将它平均分配给所有节点。如果您有数据热点并使用 TokenAware 策略,您可能会遇到不均匀的数据,但您不必担心。
在 Java 中,我创建了一个 Cassandra 集群构建器,我提供了一个包含多个 Cassandra 节点的列表,如下所示:
Cluster cluster = Cluster.builder().addContactPoint(host1, host2, host3, host4).build();
但据我了解,连接器仅连接到列表中可用的第一台主机,并且该主机成为我与 Cassandra 集群的连接点。
现在,我的问题是,如果我的 Java 应用程序 reads/writes 大量数据 from/to Cassandra,那么我的 Java 应用程序不会淹没它所在的节点吗?连接到?
有没有办法配置我的连接,使其 reads/writes 使用 Cassandra 的多个节点?通常的做法是什么?
它使用联系点找到集群中的其余节点,然后创建到所有主机的连接池并在它们之间平衡请求。除非您使用白名单负载平衡策略或自定义策略,否则它不仅会连接到您提供的主机。
如果您担心节点过多,请使用 RoundRobinLoadBalancingPolicy(如果有多个 DC,则 DC 知道)它会将它平均分配给所有节点。如果您有数据热点并使用 TokenAware 策略,您可能会遇到不均匀的数据,但您不必担心。