" LOCAL_ONE"阅读卡桑德拉的一致性

时间:2018-01-08 10:55:46

标签: cassandra cassandra-3.0

https://docs.datastax.com/en/cassandra/3.0/cassandra/dml/dmlConfigConsistency.html如链接中所述,读取一致性级别' LOCAL_ONE'表示返回本地数据中心中最近的副本的响应。但是,我不明白哪个是本地数据中心?它是协调节点所属的那个吗?

2 个答案:

答案 0 :(得分:3)

如果您构建cassandra会话,则可以定义负载平衡策略。如果您未明确配置策略,则会获得默认值,即可识别数据中心的令牌感知策略:

new TokenAwarePolicy(DCAwareRoundRobinPolicy.builder().build());

默认为这样:

Cluster cluster = Cluster.builder()
        .addContactPoint("127.0.0.1")
        .withLoadBalancingPolicy(
                DCAwareRoundRobinPolicy.builder()
                        .withLocalDc("myLocalDC")
                        .withUsedHostsPerRemoteDc(2)
                        .allowRemoteDCsForLocalConsistencyLevel()
                        .build()
        ).build();

您应该将.withLocalDc()设置为本地(最近的)数据中心,否则驱动程序将从第一个联系点选择数据中心。

(见:http://docs.datastax.com/en/developer/java-driver/3.1/manual/load_balancing

答案 1 :(得分:0)

是的,它是节点所属的直流电。

一致性级别为LOCAL_ONE的写入必须由本地数据中心的至少一个副本节点发送并成功确认。如果写入一致性级别为LOCAL_ONE或LOCAL_QUORUM,则只有与协调器节点位于同一数据中心的节点必须响应客户端请求才能使请求成功。

阅读本文以获取更多信息。 Multiple datacenter write requests

对于一致性级别为LOCAL_ONE的读取,返回来自最近的副本的响应(由告警确定),但仅当副本位于本地数据中心时。联系与协调器节点在同一数据中心中的给定行的最接近的副本以完成读取请求。在后台,可能会根据表的read_repair_chance设置为其他副本启动读修复。

阅读本文以获取更多信息:A two datacenter cluster with a consistency level of LOCAL_ONE