如果在Cassandra中关闭本地数据中心,如何实现Quorum一致性?

时间:2018-09-27 19:09:24

标签: java cassandra nosql cassandra-3.0

我有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。

0 个答案:

没有答案