假设我有一个拥有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()
答案 0 :(得分:3)
问题出在负载均衡策略中。 Round Robin具有您在问题中描述的行为。您应该使用DC Aware Round Robin Policy。这将使用最近的数据中心,但使用所有节点。也可以使用whitelist of nodes。