什么是數(shù)據(jù)一致性吓肋?
分布式系統(tǒng)中凳怨,數(shù)據(jù)會同時寫到不同的節(jié)點(diǎn)中,同時蓬坡,讀數(shù)據(jù)時猿棉,也會從多個節(jié)點(diǎn)中讀取磅叛。如果網(wǎng)絡(luò)或服務(wù)出現(xiàn)故障,則可能會導(dǎo)致部分節(jié)點(diǎn)寫入失敗萨赁。
CAP定理:
Consistency:?一致性弊琴,所有副本的數(shù)據(jù)一致
Availability:可用性,需要在給定的時間內(nèi)返回結(jié)果
PartitionToleranse:分區(qū)容忍性杖爽,可以對數(shù)據(jù)進(jìn)行分區(qū)
CAP定理認(rèn)為敲董,一個存儲系統(tǒng)無法同時滿足一致性、可用性和分區(qū)容忍性慰安。
Quornum系統(tǒng)NRW策略
N:數(shù)據(jù)所具有的副本數(shù)量
R:一次讀操作需要參與的最小副本數(shù)
W:一次寫操作需要參與的最小副本數(shù)
需要保證:
W > N/2: 某一時刻只能執(zhí)行一個寫操作
R+W > N: R>N-W腋寨,保證讀操作一定能讀到最新的數(shù)據(jù)
W越大,則寫的開銷越大化焕,讀開銷越小
R越大萄窜,則寫開銷越小,讀開銷越大
對于需要最高寫效率的場景撒桨,可以設(shè)置W=1,R=2查刻,即每次只要寫一個節(jié)點(diǎn)即成功,每次需要讀所有節(jié)點(diǎn)的數(shù)據(jù)才成功凤类,否則失敗穗泵。每次更新一個節(jié)點(diǎn),其他節(jié)點(diǎn)可以通過系統(tǒng)內(nèi)部的同步邏輯來更新到新的數(shù)據(jù)