[資訊] 分散式系統設計模式摘要

分散式系統設計模式
https://segmentfault.com/a/1190000019600110

分散式交易處理方式總結
https://segmentfault.com/a/1190000019898097

分散式架構之「 Paxos協議」
https://mp.weixin.qq.com/s/KwyWADAKZrUgCs6DEBsExA

淺談虛擬機(VM)與容器(Container)之差異
https://www.inwinstack.com/2017/10/13/vm-container-difference/

一、容器化
說到分散式系統設計模式,第一個聯想到的應該就的容器化。其實容器化和分散式本沒有交集,只是因為我們發現容器化是一個實現分散式的高效的方法。容器化設置了一個天然的邊界,邊界之外用介面進行通信。
有了這個邊界的好處就是,任何意料之外的情況都可以被限制在最小的影響範圍,畢竟我們構建的是一個大型的複雜系統。

二、設計模式
A.單容器管理者模式 (Single-container management patterns)
1.單節點-多容器應用模式 (Single-node, multi-container application patterns)
2.副載模式(Sidecar pattern)
3.大使模式(Ambassador pattern)
4.適配器模式(Adapter pattern)

B.多節點應用模式 (Multi-node application patterns)
1.領導人選舉 (Leader election pattern)
2.工作隊列模式 (Work queue pattern)
3.向量化模式 (Scatter/gather pattern)

三、一致性
系統服務化拆分之後,原來的在一個系統上的操作可能會跨越多個系統。就連我們平時經常使用到的緩存(如redis、memcache等)也可能涉及分散式事務,因為緩存和資料庫是兩個不同的實體,如何保證資料在緩存和資料庫間的一致性也是要重點考慮的。分散式事務就是指事務要處理的資源分別位於分散式系統中的不同節點之上的事務。

傳統的單機事務應滿足A(原子性)、C(一致性)、I(隔離型)、D(持久性)四個特性,屬於剛性事務。由於分散式系統具有多個節點的特點,要求完全滿足ACID這四個規範會非常的困難。所以就誕生了柔性事務BASE理論(Basic availability、Soft state、Eventual consistency)。
相比於單機事務,分散式事務在A和D上仍能夠嚴格保證,但在C和I上就要有一定程度的限制放寬(允許看到中間狀態資料、最終一致性)。


#ACID, BASE, container, 柔性事務, 容器化, 分散式, 系統, 設計模式

留言