【发布时间】:2018-10-29 16:48:22
【问题描述】:
我在 DCAwareRoundRobinPolicy 与 RoundRobinPolicy 之间感到困惑
根据文档,DCAwareRoundRobinPolicy 首先从本地 DC 联系节点,然后从远程 DC 联系节点。
如果我没有设置 withUsedHostsPerRemoteDc & allowRemoteDCsForLocalConsistencyLevel。 在回退的情况下,所有 Java 客户端应用程序是否仍将转到远程 DC??
我目前正在使用以下代码:
DCAwareRoundRobinPolicy.builder().withLocalDc(cassandraConfig.getLocalDC())
.withUsedHostsPerRemoteDc(cassandraConfig.getUsedHostsPerRemoteDc())
.allowRemoteDCsForLocalConsistencyLevel();
我在当前生产集群中添加新 DC 时遇到问题。由于上面的代码,我可以看到远程 DC 上也开始了读/写,我只是在加起来。尽管新的 DC 没有为它们设置任何复制因子。我仍然可以看到这种流量。因为重建新节点需要几个小时才能完成,所以我不能让所有应用程序都到达新节点。 最后,我需要停用新节点以暂时停止这种行为。
删除 withUsedHostsPerRemoteDc 和 allowRemoteDCsForLocalConsistencyLevel 后一切看起来都不错。
然而,几乎在所有情况下都不建议这样做,因为这会 可能会破坏一致性保证
如果上面是真的那么DCAwareRoundRobinPolicy有什么用,为什么RoundRobinPolicy不好???
【问题讨论】:
标签: cassandra datastax-java-driver