集中式系統架構與分布式系統架構
集中式系統:由卓越性能的大型主機單機組成的計算機系統,稱為集中式系統。
特點。單機運算能力強勁,部署結構簡單。但是,擁有單點故障,且單機價格昂貴。
分布式系統:一個硬件或者軟件組件分布在不同的網絡計算機上,彼此之間僅僅通過消息傳遞進行通信和協調的系統。
特點:
- 分布性。多台計算機在空間中任意分布,且分布情況隨時變動。
- 對等性。分布式系統中計算機硬件沒有主從之分。
- 並發性。並發的操作共享資源(分布式系統最大挑戰之一)。
- 缺乏全局時鍾。分布式系統中時間的先后,缺乏全局時鍾序列控制。
- 故障總是發生。組成分布式系統的計算機,隨時都有可能發生任何形式故障
分布式系統架構中的挑戰
事務
定義:一系列對系統中數據進行訪問與更新的操作所組成的一個程序執行單元。狹義上的事務特指數據庫事務。
4大特性:ACID
原子性 Atomicity 一致性 Consistency 隔離性Isolation 持久性Durability
原子性指事務必須是一個原子的操作序列單元,只允許出現全部成功執行和全部不執行兩個狀態。
一致性指事務執行的結果必須是使系統從一個一致性狀態變為另一個一致性狀態。比如數據庫事務中,出現故障事務失敗,但是數據寫入了部分,此為不一致狀態。
隔離性指一個事務的執行不能被其它事務干擾。
持久性指事務一旦提交,對系統的變更是永久性的。比如數據庫事務操作完畢,數據持久到磁盤。
分布式事務和數據一致性
一個分布式事務可看作由多個分布式的操作序列組成,由於在分布式事務中,各個子事務的執行是分散的,因此要實現一種能夠保證ACID特性的分布式事務處理系統格外復雜。
舉個典型的分布式事務場景:一個跨銀行的轉賬操作涉及調用兩個異地的銀行服務,其中一個是本地銀行提供的取款服務,另一個則是目標銀行提供的存款服務,這兩個服務本身是無狀態並且相互獨立的,共同構成了一個完整的分布式事物。如果從本地銀行取款成功,但是因為某種原因存款服務失敗了,那么就必須回滾到取款之前的狀態,否則用戶可能會發現自己的錢不翼而飛了。
CAP定理
一個經典的分布式系統理論。CAP理論:一個分布式系統不可能同時滿足一致性(C:Consistency)、可用性(A:Availability)和分區容錯性(P:Partition tolerance)這三個基本需求,最多只能同時滿足其中兩項。
C 一致性:一個系統在數據一致的狀態下執行更新操作后,應該保證系統的數據仍然處於一致的狀態
A 可用性:系統提供的服務必須一致處於可用的狀態,對於用戶的每一個操作請求總是能夠在有限時間內返回結果
P 分區容錯性:分布式系統在遇到任何網絡分區故障的時候,仍然需要能夠對外滿足一致性和可用性的服務,除非網絡環境都發生故障
選擇 | 說 明 |
---|---|
CA | 放棄分區容錯性,加強一致性和可用性,其實就是傳統的單機數據庫的選擇 |
AP | 放棄一致性(追求最終一致性),追求分區容錯性和可用性,這是很多分布式系統設計時的選擇,例如很多NoSQL系統就是如此 |
CP | 放棄可用性,追求一致性和分區容錯性,基本不會選擇,網絡問題會直接讓整個系統不可用 |
需要明確的一點是:對於一個分布式系統來說,分區容錯性可以說是一個最基本的需求。因為既然是一個分布式系統,那么分布式系統中的組件必然需要部署在不同節點,因此會出現子網絡,因此分區容錯性成為了一個分布式系統必然要面對和解決的問題。因此系統設計師往往在一致性和可用性之間做平衡取舍。由此引發Base理論。
BASE理論
BASE是對CAP中一致性和可用性權衡的結果,核心思想是即使無法做到強一致性,但是每個應用都可以根據自身業務特點,采用適當的方式使系統達到最終一致性。
BASE理論三要素:
- 基本可用 Basically Available
- 軟狀態 Soft state
- 最終一致性 Eventually consistent
三要素詳細解釋:
基本可用
分布式系統出現不可預知故障的時候,允許損失部分可用性
例:集群中部分機器宕機,導致剩余機器壓力過大,查詢效率從0.5s降到了2s
弱狀態
允許系統中的數據存在中間狀態,並認為該狀態不影響系統的整體可用性,即允許系統在多個不同節點的數據副本存在數據延時。
最終一致性
最終一致性強調在系統的所有數據副本,在經過一段時間的同步后,最終能夠達到一個一致的狀態。
總的來說。BASE 理論面向的是大型高可用可擴展的分布式系統,和傳統事務的 ACID 是相反的,它完全不同於 ACID 的強一致性模型,而是通過犧牲強一致性來獲得可用性,並允許數據在一段時間是不一致的。