千鋒教育2023版Java面試寶典Java面試200題(含美團(tuán)、字節(jié)、阿里...

強(qiáng)一致性,弱一致性和最終一致性
強(qiáng)一致性:當(dāng)數(shù)據(jù)發(fā)生改變后,任何后續(xù)進(jìn)程或者線程都會(huì)讀取到最新的數(shù)據(jù)。只有在所有的節(jié)點(diǎn)數(shù)據(jù)同步完成之后才會(huì)響應(yīng)給用戶,也就是說(shuō)當(dāng)用戶獲得響應(yīng)時(shí)數(shù)據(jù)已經(jīng)同步完成。優(yōu)點(diǎn)是各節(jié)點(diǎn)的數(shù)據(jù)一致,劣勢(shì)是性能差和可用性低,必須等到所有的節(jié)點(diǎn)返回成功的消息后才能向用戶反饋,各個(gè)節(jié)點(diǎn)串聯(lián)在一起,降低了整體可用性。
弱一致性:系統(tǒng)不保證數(shù)據(jù)發(fā)生修改后的后續(xù)進(jìn)程能讀取到最新的數(shù)據(jù),系統(tǒng)不承諾能讀取到最新的數(shù)據(jù),也不承諾具體多久之后能讀取到最新的數(shù)據(jù)。
最終一致性:最終一致性是弱一致性的特殊形式,最終一致性指的是系統(tǒng)中的所有副本在經(jīng)過(guò)一段時(shí)間的異步同步之后,最終能夠達(dá)到一個(gè)一致性的狀態(tài),用戶可能會(huì)暫時(shí)看到一些過(guò)期的數(shù)據(jù),但這種不一致性只是一個(gè)暫時(shí)的狀態(tài)。和強(qiáng)一致性相比,最終一致性提高了可用性,避免了強(qiáng)一致性下可能造成的系統(tǒng)堵塞,同時(shí)向用戶保證數(shù)據(jù)在一定時(shí)間之后會(huì)同步到最新的狀態(tài)。
小結(jié):幾乎所有的互聯(lián)網(wǎng)系統(tǒng)采用的都是最終一致性來(lái)平衡數(shù)據(jù)一致性和系統(tǒng)可用性之間的平衡,但對(duì)于敏感數(shù)據(jù)仍然考慮采用強(qiáng)一致性來(lái)保證數(shù)據(jù)的統(tǒng)一。