本書的目標讀者#
- 如今幾乎每位開發者都是分散式系統的開發者或使用者(或兩者皆是)——即使是相對簡單的行動應用程式,背後也連接著雲端 API,讓資料能出現在使用者手上的任何裝置。
- 無論你是分散式系統的新手,還是身經百戰的老手,本書描述的模式(patterns)與元件(components)都能協助你把分散式系統開發從藝術轉變為科學。
- 可重用的元件與模式讓開發者能專注於應用程式本身的核心細節。
作者為何寫這本書#
- 作者布蘭登・伯恩斯(Brendan Burns)在從網頁搜尋到雲端的職涯中,打造過大量可擴展、可靠的分散式系統,但這些系統幾乎都是從零開始重建——儘管概念相同、甚至邏輯幾乎一致,套用模式或重用元件卻始終非常困難,導致時間浪費在重複實作上,系統品質也不如預期。
- 容器(container)與容器編排器(container orchestrator)的出現,從根本上改變了分散式系統開發的樣貌:我們終於有了一種物件與介面,能夠表達核心的分散式系統模式、建構可重用的容器化元件。
作者寫這本書的目的,是為所有分散式系統實務工作者建立一套共同語言(shared language)與通用標準函式庫(common standard library),讓大家能更快建造出更好的系統。
今日的分散式系統世界#
- 過去,程式在單一機器上執行、也從那台機器存取;如今幾乎每個應用程式都是跨多台機器執行、由世界各地多位使用者存取的分散式系統。
- 儘管如此普及,這類系統的設計與開發仍常被視為少數「巫師」才會的黑魔法(black art)。
- 本書收錄一組可重複、通用的模式,讓可靠分散式系統的開發更平易近人、更有效率——採用模式與可重用元件,能把開發者從一再重造輪子中解放出來,把時間投入核心應用本身。
本書導覽#
全書組織為四大部分:
- 第 1 章〈導論〉:介紹分散式系統,並說明模式與可重用元件為何能大幅加速可靠分散式系統的開發。
- 第一部〈單節點模式〉(Single-Node Patterns):討論發生在分散式系統中單一節點上的可重用模式與元件,涵蓋 Sidecar(邊車)、Adapter(轉接器)與 Ambassador(大使)三種單節點模式。
- 第二部〈服務模式〉(Serving Patterns):涵蓋長時間運行的服務系統(如 Web 應用程式)的多節點分散式模式,討論複寫(replication)、擴展(scaling)與主節點選舉(master election)等模式。
- 第三部〈批次運算模式〉(Batch Computational Patterns):涵蓋大規模批次資料處理的分散式系統模式,包括工作佇列(work queue)、事件驅動處理與協調式工作流程。
閱讀路徑建議:
- 有經驗的分散式系統工程師可以略過(或快速瀏覽)前兩章,但仍值得了解模式的應用方式與其重要性。
- 單節點模式對所有人都有用——它們是書中最通用、最可重用的模式。
- 第二部與第三部彼此大致獨立,可依你的目標(長時間運行的伺服器 vs. 大規模資料處理)任選順序閱讀。
延伸資源:前置知識與範例程式碼
本書假設讀者已熟悉容器與容器編排系統。若缺乏相關背景,作者推薦以下資源:
- Docker:https://docker.io ↗
- Kubernetes:https://kubernetes.io ↗
- DC/OS:https://dcos.io ↗
本書的補充素材(範例程式碼、練習等)可在 GitHub 下載:https://github.com/brendandburns/designing-distributed-systems ↗