[TOC]數據庫
集中式系統架構與分佈式系統架構
集中式系統:由卓越性能的大型主機單機組成的計算機系統,稱爲集中式系統。網絡
特色。單機運算能力強勁,部署結構簡單。可是,擁有單點故障,且單機價格昂貴。架構
分佈式系統:一個硬件或者軟件組件分佈在不一樣的網絡計算機上,彼此之間僅僅經過消息傳遞進行通訊和協調的系統。併發
特色:分佈式
- 分佈性。多臺計算機在空間中任意分佈,且分佈狀況隨時變更。
- 對等性。分佈式系統中計算機硬件沒有主從之分。
- 併發性。併發的操做共享資源(分佈式系統最大挑戰之一)。
- 缺少全局時鐘。分佈式系統中時間的前後,缺少全局時鐘序列控制。
- 故障老是發生。組成分佈式系統的計算機,隨時都有可能發生任何形式故障
分佈式系統架構中的挑戰
事務
定義:一系列對系統中數據進行訪問與更新的操做所組成的一個程序執行單元。狹義上的事務特指數據庫事務。性能
4大特性:ACIDspa
原子性 Atomicity 一致性 Consistency 隔離性Isolation 持久性Durability設計
原子性指事務必須是一個原子的操做序列單元,只容許出現所有成功執行和所有不執行兩個狀態。事務
一致性指事務執行的結果必須是使系統從一個一致性狀態變爲另外一個一致性狀態。好比數據庫事務中,出現故障事務失敗,可是數據寫入了部分,此爲不一致狀態。ci
隔離性指一個事務的執行不能被其它事務干擾。
持久性指事務一旦提交,對系統的變動是永久性的。好比數據庫事務操做完畢,數據持久到磁盤。
分佈式事務和數據一致性
一個分佈式事務可看做由多個分佈式的操做序列組成,因爲在分佈式事務中,各個子事務的執行是分散的,所以要實現一種可以保證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 的強一致性模型,而是經過犧牲強一致性來得到可用性,並容許數據在一段時間是不一致的。