我有多个数据中心,有许多节点,我需要先让客户端连接到本地数据中心(最近的数据中心),如果本地数据中心(最近的数据中心)被关闭,让它连接到远程数据中心。
我已从每个数据中心添加了两个联系点。
客户如何识别最近的数据中心?
我在客户端使用java驱动3.0.0。
答案 0 :(得分:1)
From doc DCAwareRoundRobinPolicy
:
此策略以循环方式查询本地数据中心的节点;如果所有本地主机都出现故障,它还可以尝试在远程数据中心中配置可配置数量的主机。
调用withLocalDc
以指定本地数据中心的名称。您也可以将其保留,驱动程序将使用初始化时到达的第一个联系点的数据中心。但是,请记住,驱动程序会对接触点的初始列表进行洗牌,因此假设所有联系点都在本地数据中心内。通常,明确提供数据中心名称是一种更安全的选择。
Cluster cluster = Cluster.builder()
.addContactPoint("127.0.0.1")
.withLoadBalancingPolicy(
DCAwareRoundRobinPolicy.builder()
.withLocalDc("myLocalDC")
.withUsedHostsPerRemoteDc(2)
.allowRemoteDCsForLocalConsistencyLevel()
.build()
).build();