即使在多DC设置中,Datastax的JAVA驱动程序也需要访问群集中的所有服务器。当我们想要本地化查询时,这似乎是一个问题。有办法吗?
答案 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,但是让驱动程序选择拥有您正在存储/查询处理请求的数据的协调器是一件好事。