如何确保您的cassandra客户端只知道本地数据中心节点?

时间:2018-04-06 09:07:03

标签: cassandra cassandra-3.0

我有多个数据中心,有许多节点,我需要先让客户端连接到本地数据中心(最近的数据中心),如果本地数据中心(最近的数据中心)被关闭,让它连接到远程数据中心。

我已从每个数据中心添加了两个联系点。

客户如何识别最近的数据中心?

我在客户端使用java驱动3.0.0。

1 个答案:

答案 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();