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

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章