CAP 理論
【1】CAP 理論指出對于一個分布式計算系統來說,不可能同時滿足以下三點:
1)一致性:在分布式環境中,一致性是指資料在多個副本之間是否能夠保持一致的特性,等同于所有節點訪問同一份最新的資料副本,在一致性的需求下,當一個系統在資料一致的狀態下執行更新操作后,應該保證系統的資料仍然處于一致的狀態,【指強一致性】
2)可用性:每次請求都能獲取到正確的回應,每一個操作總是能在確定的時間內回傳,但是不保證獲取的資料為最新資料,
3)磁區容錯性:分布式系統在遇到任何網路磁區故障的時候,仍然需要能夠保證對外提供滿足一致性和可用性的服務,除非是整個網路環境都發生了故障,
【2】一個分布式系統最多只能同時滿足一致性(Consistency)、可用性(Availability)和磁區容錯性(Partition tolerance)這三項中的兩項,
【3】在這三個基本需求中,最多只能同時滿足其中的兩項,P 是必須的,因此只能在 CP 和 AP 中選擇,zookeeper 保證的是 CP,對比 spring cloud 系統中的注冊中心 eureka實作的是 AP,【與其說是三項中選兩項,本質上是在C與A之間進行二選一】
【4】分析高可用性與強一致性之間存在違背的地方:
1.先說說可用性:每次請求都能在限定的時間內獲取到正確的回應,
2.再說強一致性:每次寫入的時候,都會在leader(主節點)上先寫入,然后同步給其他節點,在此階段是不對外提供服務的,故而,follower(從節點)越多,其實不可控的時間也就越長,
3.所以說可用性在強一致性同步資料階段得不到保障,這就是問題,
【5】故而市面上常說的CAP理論,其實是最終一致性,可用性,與磁區容錯性,如zookeeper ,說是CP架構:
1)Leader接收Client的寫請求,廣播給其他Follower節點,其他節點將訊息加入待寫佇列,向Leader發送成功訊息,過半的Follower同意后,Leader向所有節點發送提交訊息,Follower會落實寫請求,(并不滿足全部節點都寫入,只是保證大多數節點的寫入,此時系統的各節點資料并不保證完全一致)
2)每一次寫入的時候Leader(寫入操作只能由Leader進行)都會有個ZXID,而從節點也會按照ZXID來進行順序寫入,從而最終達到與Leader的資料一致(順序一致性),
3)所以總結起來zookeeper保證的是線性寫,順序讀,但是拿到的資料不保證一致,
BASE 理論
【1】BASE 是 Basically Available(基本可用)、Soft-state(軟狀態) 和 Eventually Consistent(最終一致性) 三個短語的縮寫,
1)基本可用:在分布式系統出現故障,允許損失部分可用性(服務降級、頁面降級),
2)軟狀態:允許分布式系統出現中間狀態,而且中間狀態不影響系統的可用性,這里的中間狀態是指不同的 data replication(資料備份節點)之間的資料更新可以出現延時的最終一致性,
3)最終一致性:data replications 經過一段時間達到一致性,
【2】BASE 理論是對 CAP 中的一致性和可用性進行一個權衡的結果,理論的核心思想就是:我們無法做到強一致,但每個應用都可以根據自身的業務特點,采用適當的方式來使系統達到最終一致性,
一致性的型別
強一致性:又稱線性一致性(linearizability ) 1.任意時刻,所有節點中的資料是一樣的, 2.一個集群需要對外部提供強一致性,所以只要集群內部某一臺服務器的資料發生了改變,那么就需要等待集群內其他服務器的資料同步完成后,才能正常的對外提供服務 3.保證了強一致性,務必會損耗可用性 弱一致性: 1.系統中的某個資料被更新后,后續對該資料的讀取操作可能得到更新后的值,也可能是更改前的值, 2.即使過了不一致時間視窗,后續的讀取也不一定能保證一致, 最終一致性: 1.弱一致性的特殊形式,不保證在任意時刻任意節點上的同一份資料都是相同的,但是隨著時間的遷移,不同節點上的同一份資料總是在向趨同的方向變化 2.存盤系統保證在沒有新的更新的條件下,最終所有的訪問都是最后更新的值 順序一致性: 1.任何一次讀都能讀到某個資料的最近一次寫的資料, 2.對其他節點之前的修改是可見(已同步)且確定的,并且新的寫入建立在已經達成同步的基礎上,
轉載請註明出處,本文鏈接:https://www.uj5u.com/houduan/517760.html
標籤:其他
下一篇:瑞吉外賣實戰專案全攻略——第一天
