为什么即使在多DC设置中,Datastax的JAVA驱动程序也需要访问群集中的所有服务器

时间:2015-08-17 11:30:06

标签: cassandra datastax-java-driver

即使在多DC设置中,Datastax的JAVA驱动程序也需要访问群集中的所有服务器。当我们想要本地化查询时,这似乎是一个问题。有办法吗?

1 个答案:

答案 0 :(得分:1)

这取决于您使用的LoadBalancingPolicy。 By default驱动程序使用具有令牌感知功能的DCAwareRoundRobinPolicy并选择连接到远程数据中心中的任何主机,但根据您的联系点选择哪个数据中心是本地的。

您可以configure a DCAwareRoundRobinPolicy明确指定本地数据中心,并且您希望连接到远程DC中的0个主机,即:

Cluster cluster = Cluster.builder().addContactPoint("127.0.0.1")
    .withLoadBalancingPolicy(new TokenAwarePolicy(new DCAwareRoundRobinPolicy("mydc", 0)))
    .build();

请注意,不需要包装TokenAwarePolicy,但是让驱动程序选择拥有您正在存储/查询处理请求的数据的协调器是一件好事。