在datastax驱动程序3.x中,我们有DCAwareRoundRobin策略,它尝试连接到远程节点--如果本地数据中心中的节点-- datastax 4.x --我们没有该策略,仅限于本地--但是,在datastax文档中,它被提到如下:
Cross-datacenter failover is enabled with the following configuration option:
datastax-java-driver.advanced.load-balancing-policy.dc-failover {
max-nodes-per-remote-dc = 2
}然后,驱动程序将尝试打开到远程datacenter.But中节点的连接,在驱动程序中,我们只指定一个要连接的数据中心,如下所示:
CqlSession session = CqlSession.builder()
.addContactPoint(new InetSocketAddress("1.2.3.4", 9042))
.addContactPoint(new InetSocketAddress("5.6.7.8", 9042))
.withLocalDatacenter("datacenter1")
.build();如何处理与远程数据中心的连接?请帮助..
发布于 2022-07-19 10:29:05
快速的答案是,您不是通过编程完成的--在启用advanced.load-balancing-policy.dc-failover之后,Java驱动程序就会为您做这件事。
接触点只是初始主机驱动程序“联系人”,以发现集群拓扑。在收集了有关集群的元数据之后,它就知道了远程DC中的节点。
由于您已经配置了max-nodes-per-remote-dc = 2,驱动程序将从每个远程DC添加2个节点到查询计划的末尾。首先列出本地DC中的节点,然后再列出远程节点。如果驱动程序无法与本地DC中的节点联系,那么它将开始联系查询计划中的远程节点,每次只与一个节点联系,直到所有节点都没有了联系。
但我必须重申我在your other question,中说过的话,我们不建议启用DC-故障转移。对于任何遇到这个问题的人来说,你已经被警告过了。干杯!
https://stackoverflow.com/questions/72710237
复制相似问题