Part I 討論的是資料儲存在單一機器上的情境。Part II 則將視野拓展到多台機器——當資料分布在不同節點上時,系統設計會面臨全然不同的挑戰。
為什麼要分散式?#
將資料分布到多台機器上,通常基於以下需求:
- 可擴展性(Scalability):單一機器的讀寫吞吐量或儲存容量不足以應對成長的負載
- 容錯與高可用性(Fault Tolerance / High Availability):即使部分機器故障,系統仍能持續運作
- 低延遲(Latency):將資料放在地理上更接近使用者的位置,減少回應時間
本篇章節#
Part II 圍繞著「資料分布到多台機器後會發生什麼事」這個核心問題,分為五章:
- Chapter 5 — 複製(Replication):在多個節點上維護相同資料的副本,探討主從複製、多主複製與無主複製等策略
- Chapter 6 — 分片(Partitioning):將大型資料集切分到不同節點上,討論分片策略與路由機制
- Chapter 7 — 事務(Transactions):在分散式環境下如何保證一組操作的原子性與正確性
- Chapter 8 — 分散式系統的麻煩(The Trouble with Distributed Systems):網路不可靠、時鐘不同步、程序隨時可能崩潰——分散式系統中各種會出錯的事
- Chapter 9 — 一致性與共識(Consistency and Consensus):面對上述困難,系統能提供哪些正確性保證,以及如何達成節點間的共識
核心概念預覽#
複製與分片是兩種互補的策略——複製讓多個節點持有相同資料以提高可用性,分片則讓不同節點各自負責一部分資料以提高容量與吞吐量。實務上,兩者經常同時使用。
這五章從具體機制逐步推進到抽象理論:先理解資料如何複製與切分,再探討事務如何在分散環境中運作,接著正視分散式系統固有的不確定性,最終收束於一致性模型與共識演算法——這是分散式系統理論的核心。