分佈式相關的經典理論基礎

 

今天來講幾個概念:單體應用和分佈式集羣相關概念、CAP、ACID、BASE等相關理論

1、單體應用、集羣、分佈式的相關概念

「單體應用」將一個應用程序的所有功能模塊都打包成一個獨立的單元,部署在一臺服務器上運行,對外提供服務。當業務增長到一定程度的時候,單機的硬件資源將無法滿足你的業務需求。此時便出現了集羣模式。

「集羣」 同一個業務模塊,部署在多個服務器上,通過分佈式調度軟件(負載均衡服務器)進行統一的調度,目的是提高服務的處理量。 集羣結構的好處就是系統擴展非常容易。如果隨着你們系統業務的發展,當前的系統又支撐不住了,那麼給這個集羣再增加節點就行了。

「分佈式」將一個業務模塊拆分成多個子業務模塊(按照業務功能,拆分成一個個獨立的子系統,在分佈式結構中,每個子系統就被稱爲“服務”),多個子業務模塊部署在不同的服務器上運行,目的是實現高併發。

2、CAP理論

「CAP」
C(Consistency):一致性 
A(Availability):可用性
P(Partition tolerance):分區容錯性
「CAP理論」一個分佈式系統不可能同時很好的滿足一致性,可用性和分區容錯性這三個需求
原因:
在一個分佈式系統裏面,包含了多個節點,節點之間通過網絡連接在一起。正常情況下,通過網絡,從一個節點可以訪問任何別的節點上的數據。但是有可能出現網絡故障,導致整個網絡被分成了互不連通的區域,這就叫作分區。一旦出現分區,那麼一個區域內的節點就沒法訪問其他節點上的數據了,最好的辦法是把數據複製到其他區域內的節點,這樣即使出現分區,也能訪問任意區域內節點上的數據,這就是分區容錯性;
但是把數據複製到多個節點就可能出現數據不一致的情況,這就是一致性;
要保證一致,就必須等待所有節點上的數據都更新成功纔可用,這就是可用性。
總的來說,就是數據節點越多,分區容錯性越高,但數據一致性越難保證。爲了保證數據一致性,又會帶來可用性的問題。

2、ACID理論

「ACID」
指數據庫事務正確執行的四個基本要素的縮寫 
A(Atomicity):原子性
C(Consistency):一致性
I(Isolation):獨立性
D(Durability):持久性
一個支持事務(Transaction)的數據庫,必須要具有這四種特性,否則在事務過程(Transaction processing)當中無法保證數據的正確性,交易過程極可能達不到交易方的要求。

原子性:整個事務中的所有操作,要麼全部完成,要麼全部不完成,不可能停滯在中間某個環節。事務在執行過程中發生錯誤,會被回滾(Rollback)到事務開始前的狀態,就像這個事務從來沒有執行過一樣。
一致性:一個事務可以封裝狀態改變(除非它是一個只讀的)。事務必須始終保持系統處於一致的狀態,不管在任何給定的時間併發事務有多少。也就是說:如果事務是併發多個,系統也必須如同串行事務一樣操作。
隔離性:隔離狀態執行事務,使它們好像是系統在給定時間內執行的唯一操作。如果有兩個事務,運行在相同的時間內,執行相同的功能,事務的隔離性將確保每一事務在系統中認爲只有該事務在使用系統。這種屬性有時稱爲串行化,爲了防止事務操作間的混淆,必須串行化或序列化請求,使得在同一時間僅有一個請求用於同一數據。
持久性:在事務完成以後,該事務對數據庫所作的更改便持久的保存在數據庫之中,並不會被回滾。

3、BASE理論

「BASE」 
Basically Available:基本可用
Soft state:軟狀態
Eventually consistent:最終一致
BASE是對CAP中一致性和可用性權衡的結果,其來源於對大規模互聯網系統分佈式實踐的總結,是基於CAP定理逐步演化而來的
其核心思想是即使無法做到強一致性,但每個應用都可以根據自身的業務特點,採用適當的方式來使系統達到最終一致性。

基本可用:基本可用是指分佈式系統在出現不可預知的故障的時候,允許損失部分可用性;
弱狀態:弱狀態也被稱爲軟狀態,和硬狀態對應,是指允許系統中的數據存在中間狀態,並認爲該中間狀態的存在不會影響系統的整體可用性,即允許系統不同節點的數據副本之間進行數據同步的過程存在延時;
最終一致性:最終一致性強調的是系統所有的數據副本,在經過一段時間的同步後,最終能夠達到一個一致的狀態。

參考文章:

https://baike.baidu.com/item/ACID/10738
https://www.zhihu.com/question/20004877
https://yq.aliyun.com/articles/240630
【如有侵權,實屬您的文章或回答寫的清晰易懂,侵權後請聯繫我進行處理】

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章