溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊(cè)×
其他方式登錄
點(diǎn)擊 登錄注冊(cè) 即表示同意《億速云用戶服務(wù)條款》

Cassandra 讀寫一致性(Consistency)詳解

發(fā)布時(shí)間:2020-07-19 01:45:48 來源:網(wǎng)絡(luò) 閱讀:1890 作者:無鋒劍 欄目:大數(shù)據(jù)

Consistency

此命令顯示當(dāng)前的一致性級(jí)別,或設(shè)置新的一致性級(jí)別。
Consistency可以理解讀和寫操作的Consistency Level
寫操作的consistency level指定了寫操作在通知客戶端請(qǐng)求成功之前,必須確保已經(jīng)成功完成寫操作的replica的數(shù)量。

QUORUM級(jí)別

QUORUM級(jí)別確保數(shù)據(jù)寫到指定quorum數(shù)量的節(jié)點(diǎn)。一個(gè)quorum的值由下面的公式四舍五入計(jì)算而得:
(sum_of_replication_factors / 2) + 1
sum_of_replication_factors指每個(gè)數(shù)據(jù)中心的所有replication_factor設(shè)置的總和。

級(jí)別:ANY
寫操作:
描述: 任意一個(gè)節(jié)點(diǎn)寫操作已經(jīng)成功。如果所有的replica節(jié)點(diǎn)都掛了,寫操作還是可以在記錄一個(gè)hinted handoff事件之后,返回成功。如果所有的replica節(jié)點(diǎn)都掛了,寫入的數(shù)據(jù),在掛掉的replica節(jié)點(diǎn)恢復(fù)之前,讀不到。
用法: 最小的延時(shí)等待,并且確保寫請(qǐng)求不會(huì)失敗。相對(duì)于其他級(jí)別提供最低的一致性和最高的可用性。
級(jí)別:ALL
讀:
描述:向所有replica節(jié)點(diǎn)查詢數(shù)據(jù),返回所有的replica返回的數(shù)據(jù)中,timestamp最新的數(shù)據(jù)。如果某個(gè)replica節(jié)點(diǎn)沒有響應(yīng),讀操作會(huì)失敗。
用法:相對(duì)于其他級(jí)別,提供最高的一致性和最低的可用性。
寫:
描述:寫操作必須將指定行的數(shù)據(jù)寫到所有replica節(jié)點(diǎn)的commit log和memtable。
用法:相對(duì)于其他級(jí)別提供最高的一致性和最低的可用性。
級(jí)別:EACH_QUORUM
讀:
描述:向每個(gè)數(shù)據(jù)中心內(nèi)quorum數(shù)量的replica節(jié)點(diǎn)查詢數(shù)據(jù),返回時(shí)間戳最新的數(shù)據(jù)。
用法:同LOCAL_QUORUM
寫:
描述:寫操作必須將指定行的數(shù)據(jù)寫到每個(gè)數(shù)據(jù)中心的quorum數(shù)量的replica節(jié)點(diǎn)的commit log和memtable。
用法:用于多數(shù)據(jù)中心集群嚴(yán)格的保證相同級(jí)別的一致性。例如,如果你希望,當(dāng)一個(gè)數(shù)據(jù)中心掛掉了,或者不能滿足quorum數(shù)量的replica節(jié)點(diǎn)寫操作成功時(shí),寫請(qǐng)求返回失敗。
級(jí)別:LOCAL_ONE
讀:
描述:返回本地?cái)?shù)據(jù)中心內(nèi)離coordinator節(jié)點(diǎn)最近的replica節(jié)點(diǎn)的數(shù)據(jù)。
用法:同寫操作Consistency level中該級(jí)別的用法。
寫:
描述:任何一個(gè)本地?cái)?shù)據(jù)中心內(nèi)的replica節(jié)點(diǎn)寫操作成功。
用法:對(duì)于多數(shù)據(jù)中心的情況,往往期望至少一個(gè)replica節(jié)點(diǎn)寫成功,但是,又不希望有任何跨數(shù)據(jù)中心的通信。LOCAL_ONE正好能滿足這樣的需求。
級(jí)別:LOCAL_QUORUM
讀:
描述:向每個(gè)數(shù)據(jù)中心內(nèi)quorum數(shù)量的replica節(jié)點(diǎn)查詢數(shù)據(jù),返回時(shí)間戳最新的數(shù)據(jù)。避免跨數(shù)據(jù)中心的通信。
用法:使用SimpleStrategy時(shí)會(huì)失敗。
寫:
描述:本地?cái)?shù)據(jù)中心內(nèi)quorum數(shù)量的replica節(jié)點(diǎn)寫操作成功。避免跨數(shù)據(jù)中心的通信。
用法:不能和SimpleStrategy一起使用。用于保證本地?cái)?shù)據(jù)中心的數(shù)據(jù)一致性。
級(jí)別:LOCAL_SERIAL
讀:
描述:同SERIAL,但是只限制為本地?cái)?shù)據(jù)中心。
用法:同SERIAL。
寫:
描述:本地?cái)?shù)據(jù)中心內(nèi)quorum數(shù)量的replica節(jié)點(diǎn)有條件地(conditionally)寫成功。
用法:用于輕量級(jí)事務(wù)(lightweight transaction)下實(shí)現(xiàn)linearizable consistency,避免發(fā)生無條件的(unconditional)更新。。
級(jí)別:ONE
讀:
描述:返回由snitch決定的最近的replica返回的結(jié)果。默認(rèn)情況下,后臺(tái)會(huì)觸發(fā)read repair確保其他replica的數(shù)據(jù)一致。
用法:提供最高級(jí)別的可用性,但是返回的結(jié)果不一定最新。
寫:
描述:任意一個(gè)replica節(jié)點(diǎn)寫操作已經(jīng)成功。    滿足大多數(shù)用戶的需求。
用法:一般離coordinator節(jié)點(diǎn)具體最近的replica節(jié)點(diǎn)優(yōu)先執(zhí)行。  
級(jí)別:QUORUM
讀:
描述:讀取所有數(shù)據(jù)中心中quorum數(shù)量的節(jié)點(diǎn)的結(jié)果,返回合并后timestamp最新的結(jié)果。 
用法:保證很強(qiáng)的一致性,雖然有可能讀取失敗。
級(jí)別:SERIAL
讀:
描述:允許讀取當(dāng)前的(包括uncommitted的)數(shù)據(jù),如果讀的過程中發(fā)現(xiàn)uncommitted的事務(wù),則commit它。  
用法:輕量級(jí)事務(wù)。
級(jí)別:TWO
讀:  
描述:返回兩個(gè)最近的replica的最新數(shù)據(jù)。 
用法:和ONE類似。
級(jí)別:THREE
讀:
描述:返回三個(gè)最近的replica的最新數(shù)據(jù)。 
用法:和TWO類似。
參考地址:

https://docs.datastax.com/en/archived/cassandra/2.0/cassandra/dml/dml_config_consistency_c.html

注意:

即使指定了consistency level ON或LOCAL_QUORUM,寫操作還是會(huì)被發(fā)送給所有的replica節(jié)點(diǎn),包括其他數(shù)據(jù)中心的里replica節(jié)點(diǎn)。consistency level只是決定了,通知客戶端請(qǐng)求成功之前,需要確保寫操作成功的replica節(jié)點(diǎn)的數(shù)量。

向AI問一下細(xì)節(jié)

免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如果涉及侵權(quán)請(qǐng)聯(lián)系站長(zhǎng)郵箱:is@yisu.com進(jìn)行舉報(bào),并提供相關(guān)證據(jù),一經(jīng)查實(shí),將立刻刪除涉嫌侵權(quán)內(nèi)容。

AI