Cassandra - Consistency Levels

WRITE Consistency Levels:

  1. ALL
    DESC: 必须被写入到集群内所有节点的 commit log和 memtable
    USAGE: 提供任何其他级别的最高一致性和最低可用性。

  2. EACH_QUORUM
    DESC: 一致性强。必须写入到每个DC中的一定数量的节点的 commit log和 memtable。
    USAGE: 用于多个数据中心集群中,以严格保持每个数据中心处于同一级别的一致性。
    例如,如果您希望在数据中心关闭并且在该数据中心上无法达到QUORUM时写入失败,请选择此级别。

  3. QUORUM
    DESC: 写入到所有DC的一定数量的节点的 commit log和 memtable。
    USAGE: 用于单个或多个数据中心集群中,以在整个集群中保持强一致性。 如果您可以容忍某种程度的故障,请使用。

  4. LOCAL_QUORUM
    DESC: 一致性强。必须写入到一定数量的节点在相同DC中,作为协调。避免数据中心之间的通信延迟。
    USAGE: 在具有机架感知副本放置策略(例如NetworkTopologyStrategy)和正确配置的探查功能的多个数据中心群集中使用。
    用于维护本地一致性(在单个数据中心内)。 可以与SimpleStrategy一起使用。

  5. ONE
    DESC: 必须写入到至少一个副本节点的 commit log和 memtable。
    USAGE: 由于一致性要求不严格,因此可以满足大多数用户的需求。

  6. TWO
    DESC: 必须写入到至少两个副本节点的 commit log和 memtable。
    USAGE: 由于一致性要求不严格,因此可以满足大多数用户的需求。

  7. THREE
    DESC: 必须写入到至少三个副本节点的 commit log和 memtable。
    USAGE: 由于一致性要求不严格,因此可以满足大多数用户的需求。

  8. LOCAL_ONE
    DESC: 必须将写入发送到本地数据中心中的至少一个副本节点并由其成功确认。
    USAGE: 在多个数据中心群集中,通常希望一致性级别为ONE,而跨DC流量则不是。 LOCAL_ONE完成此任务。
    出于安全和质量方面的考虑,可以在脱机数据中心中使用此一致性级别,以防止在脱机节点发生故障时自动连接到其他数据中心中的联机节点的情况。

  9. ANY
    DESC: 写操作必须至少写入一个节点。 如果给定分区键的所有副本节点均已关闭,则在写入提示的切换后,写入仍然可以成功。
    如果所有副本节点在写入时均已关闭,则在该分区的副本节点已恢复之前,ANY写入均不可读。
    USAGE: 提供低延迟,并保证写入永不失败。 提供最低的一致性和最高的可用性。

Read Consistency Levels

  1. ALL
    DESC: 所有副本均响应后,返回记录。 如果有任何副本没有响应,则读取操作将失败。
    USAGE: 提供所有级别的最高一致性和所有级别的最低可用性。

  2. QUORUM
    DESC: 来自所有数据中心的一定数量的副本已响应后,返回记录。
    USAGE: 用于单个或多个数据中心集群中,以在整个集群中保持强一致性。 如果您可以容忍某种程度的故障,则可以确保强一致性。

  3. LOCAL_QUORUM
    DESC: 当前DC中的一定数量副本作为协调器响应之后返回数据。 避免数据中心间通信的延迟。
    USAGE: 在具有机架感知的副本放置策略(NetworkTopologyStrategy)和正确配置的探查功能的多个数据中心群集中使用。 使用SimpleStrategy时失败。

  4. ONE
    DESC: 根据snitch确定,从最接近的副本返回响应。 默认情况下,读取修复在后台运行,以使其他副本保持一致。
    USAGE: 如果您可以忍受读取陈旧数据的可能性较高,则可以在所有级别中提供最高的可用性。 联系进行读取的副本可能并不总是具有最新的写入。

  5. TWO
    DESC: 返回两个最近的副本中的最新数据。
    USAGE:

  6. THREE
    DESC: 返回三个最近的副本中的最新数据。
    USAGE:

  7. LOCAL_ONE
    DESC: 返回本地数据中心中最接近的副本的响应。
    USAGE: 与表中有关写入一致性级别的描述相同的用法。

  8. SERIAL
    DESC: 允许在不建议新添加或更新的情况下读取数据的当前(可能是未提交)状态。 如果SERIAL读取发现正在进行的未提交事务,它将作为读取的一部分提交该事务。 与QUORUM类似。
    USAGE: 要在用户调用轻量级事务以写入列后读取列的最新值,请使用SERIAL。 然后,Cassandra检查正在进行的轻量级事务处理是否有更新,如果找到,则返回最新数据。

  9. LOCAL_SERIAL
    DESC: 与SERIAL相同,但仅限于数据中心。 与LOCAL_QUORUM类似。
    USAGE: 用于实现轻量级交易的线性化一致性。

How QUORUM is calculated

quorum 是由节点数计算出来的
quorum = (sum_of_replication_factors / 2) + 1

sum_of_replication_factors = datacenter1_RF + datacenter2_RF + . . . + datacentern_RF

Configuring client consistency levels

CONSISTENCY
cqlsh> CONSISTENCY
ANY LOCAL_ONE LOCAL_SERIAL QUORUM THREE
; ALL EACH_QUORUM LOCAL_QUORUM ONE SERIAL TWO

发布了213 篇原创文章 · 获赞 7 · 访问量 6万+

猜你喜欢

转载自blog.csdn.net/chuckchen1222/article/details/102506340