我有3个直流电,每个直流电有3个节点,复制因子是3。
让我们说DC为: x-3, y-3, -3 因此共有9个复制因子。在任何给定时间点达到法定人数5应该已经结束。
x是我的本地数据中心,假设x完全关闭,因此基本上3个节点都关闭了。
根据定额一致性定义,如果y和z都达到3 + 3 = 6,则应达到定额。
我与cassandra的连接设置是:
DCAwareRoundRobinPolicy dcAwareRoundRobinPolicy = DCAwareRoundRobinPolicy
.builder()
.withLocalDc("x")
.withUsedHostsPerRemoteDc(3)
.build();
Cluster cluster = Cluster.builder()
.withSocketOptions(getOptions()).addContactPoints(getCassandraHost())
.withCredentials("casssandra","cassandra")
.withQueryOptions(new QueryOptions().setConsistencyLevel(ConsistencyLevel.QUORUM))
.withLoadBalancingPolicy(new TokenAwarePolicy(dcAwareRoundRobinPolicy))
.build();
我没有主机可用异常,但提到了x的主机。它从不尝试连接到远程主机以实现仲裁一致性。
我缺少什么设置?
我不想使用.allowRemoteDCsForLocalConsistencyLevel(),因为我从Local_quorum退回到Quorum,所以如果我使用.allowRemoteDCsForLocalConsistencyLevel(),我的local_quorum将自动退回到远程DC。