1、強一致性
這種一致性級別是最符合用戶直覺的,它要求系統(tǒng)寫入什么,讀出來的也會是什么,用戶體驗好,但實現(xiàn)起來往往對系統(tǒng)的性能影響大。
2、弱一致性
這種一致性級別約束了系統(tǒng)在寫入成功后,不承諾立即可以讀到寫入的值,也不久承諾多久之后數(shù)據(jù)能夠達到一致,但會盡可能地保證到某個時間級別(比如秒級別)后,數(shù)據(jù)能夠達到一致狀態(tài)。
3、最終一致性
最終一致性是弱一致性的一個特例,系統(tǒng)會保證在一定時間內,能夠達到一個數(shù)據(jù)一致的狀態(tài)。這里之所以將最終一致性單獨提出來,是因為它是弱一致性中非常推崇的一種一致性模型,也是業(yè)界在大型分布式系統(tǒng)的數(shù)據(jù)一致性上比較推崇的模型。
分布式環(huán)境的各種問題
分布式系統(tǒng)體系結構從其出現(xiàn)之初就伴隨著諸多的難題和挑戰(zhàn):
1、通信異常
從集中式向分布式演變的過程中,必然引入網(wǎng)絡因素,由于網(wǎng)絡本身的不可靠性,因此 也引入了額外的問題。分布式系統(tǒng)需要在各個節(jié)點之間進行網(wǎng)絡通信,因此每次網(wǎng)絡通信都會伴隨著網(wǎng)絡不可用的風險,網(wǎng)絡光纖、路由器或是DNS等硬件設備或 是系統(tǒng)不可用都會導致最終分布式系統(tǒng)無法順利完成一次網(wǎng)絡通信。另外,即使分布式系統(tǒng)各個節(jié)點之間的網(wǎng)絡通信能夠正常進行,其延時也會大于單機操作。通常 我們認為現(xiàn)代計算機體系結構中,單機內存訪問的延時在納秒數(shù)量級(通常是10ns),而正常的一次網(wǎng)絡通信的延遲在0.1~1ms左右(相當于內存訪問延 時的105倍),如此巨大的延時差別,也會影響到消息的收發(fā)過程,因此消息丟失和消息延遲變得非常普遍。
2、網(wǎng)絡分區(qū)
當網(wǎng)絡由于發(fā)生異常情況,導致分布式系統(tǒng)中部分節(jié)點之間的網(wǎng)絡延時不斷增大,最終導致組成分布式系統(tǒng)的所有節(jié)點中,只有部分節(jié)點之間能夠正常通信,而另一些節(jié)點則不能----我們將這個現(xiàn)象稱為網(wǎng)絡分區(qū)。當網(wǎng)絡分區(qū)出現(xiàn)時,分布式系統(tǒng)會出現(xiàn)局部小集群,在極端情況下,這些局部小集群會獨立完成原本需要整個分布式系統(tǒng)才能完成的功能,包括對數(shù)據(jù)的事物處理,這就對分布式一致性提出了非常大的挑戰(zhàn)。
3、三態(tài)
上面兩點,我們已經(jīng)了解到在分布式環(huán)境下,網(wǎng)絡可能會出現(xiàn)各式各樣的問題,因此分布式系統(tǒng)的每一次請求與響應,存在特有的三態(tài)概念,即成功、失敗、超時。 在傳統(tǒng)的單機系統(tǒng)中,應用程序在調用一個函數(shù)之后,能夠得到一個非常明確的響應:成功或失敗。而在分布式系統(tǒng)中,由于網(wǎng)絡是不可靠的,雖然在絕大部分情況 下,網(wǎng)絡通信也能夠接受到成功或失敗的響應,當時當網(wǎng)絡出現(xiàn)異常的情況下,就可能會出現(xiàn)超時現(xiàn)象,通常有以下兩種情況:
(1)由于網(wǎng)絡原因,該請求并沒有被成功地發(fā)送到接收方,而是在發(fā)送過程中就發(fā)生了消息丟失現(xiàn)象。
(2)該請求成功地被接收方接收后,進行了處理,但是在將響應反饋給發(fā)送方的過程中,發(fā)生了消息丟失現(xiàn)象。
當出現(xiàn)這樣的超時現(xiàn)象時,網(wǎng)絡通信的發(fā)起方是無法確定當前請求是否被成功處理的。
4、節(jié)點故障
節(jié)點故障則是分布式環(huán)境下另一個比較常見的問題,指的是組成分布式系統(tǒng)的服務器節(jié)點出現(xiàn)的宕機或"僵死"現(xiàn)象,通常根據(jù)經(jīng)驗來說,每個節(jié)點都有可能出現(xiàn)故障,并且每天都在發(fā)生。
CAP理論
一個經(jīng)典的分布式系統(tǒng)理論。CAP理論告訴我們:一個分布式系統(tǒng)不可能同時滿足一致性(C:Consistency)、可用性(A:Availability)和分區(qū)容錯性(P:Partition tolerance)這三個基本需求,最多只能同時滿足其中兩項。
BASE理論
BASE是Basically Available(基本可用)、Soft state(軟狀態(tài))和Eventually consistent(最終一致性)三個短語的縮寫。BASE理論是對CAP中一致性和可用性權衡的結果,其來源于對大規(guī)?;ヂ?lián)網(wǎng)系統(tǒng)分布式實踐的總結, 是基于CAP定理逐步演化而來的。BASE理論的核心思想是:即使無法做到強一致性,但每個應用都可以根據(jù)自身業(yè)務特點,采用適當?shù)姆绞絹硎瓜到y(tǒng)達到最終一致性。