在Cassandra中,如何仅连接到全国范围内的群集中的附近数据中心?

时间:2015-06-26 03:09:31

标签: cassandra

假设我有一个拥有3个数据中心的Cassandra集群,1个在北京,1个在长沙,1个在深圳,现在我希望我在长沙运行的客户端应用程序只与长沙的C *节点通信,我该怎么办? 目前,使用以下代码,我的客户端应用程序正在与3个城市中所有数据中心的所有节点进行通信,因此整体性能会受到城市间延迟的影响。

import com.datastax.driver.core.{Session, Cluster}

val cluster: Cluster = Cluster.builder().addContactPoints("10.10.11.71")
    .withRetryPolicy(DowngradingConsistencyRetryPolicy.INSTANCE)
    .withReconnectionPolicy(new ConstantReconnectionPolicy(100L))
    .withLoadBalancingPolicy(new RoundRobinPolicy)
    .build()
val session: Session = cluster.connect()

1 个答案:

答案 0 :(得分:3)

问题出在负载均衡策略中。 Round Robin具有您在问题中描述的行为。您应该使用DC Aware Round Robin Policy。这将使用最近的数据中心,但使用所有节点。也可以使用whitelist of nodes