为什么 Datastax 的 JAVA 驱动程序需要访问集群中的所有服务器,即使在多 DC 设置中也是如此
Why does Datastax's JAVA driver needs access to all the servers in the cluster even in multi DC setup
Datastax 的 JAVA 驱动程序需要访问集群中的所有服务器,即使在多 DC 设置中也是如此。当我们想要本地化查询时,这似乎是一个问题。有办法吗??
这取决于您使用的 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 不是必需的,但最好让驱动程序选择拥有您 storing/querying 的数据的协调器来处理请求。
Datastax 的 JAVA 驱动程序需要访问集群中的所有服务器,即使在多 DC 设置中也是如此。当我们想要本地化查询时,这似乎是一个问题。有办法吗??
这取决于您使用的 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 不是必需的,但最好让驱动程序选择拥有您 storing/querying 的数据的协调器来处理请求。