
分散式系統模式
2023
2019 年 11 月開學第一天,我的收件匣收到印度一位資深開發人員寄來的訊息。他觀察到開發人員在努力理解核心分散式系統概念,而這些概念是他們有效使用 Kafka、Cassandra 和 Zookeeper 等現代工具所必需的。他曾試圖教授分散式系統中關鍵概念背後的理論,但發現他的同事們難以完全掌握後果。因此,他嘗試採用更以程式碼為中心的途徑。他探索了驅動這些核心開源系統的程式碼,並建立簡化的實作,旨在強調和教授理論概念。這更成功,他的電子郵件是關於如何進一步進行這項訓練的。
我們決定開發一系列模式將是一個不錯的方向,並著手進行這趟最後變成四年旅程的冒險。與軟體開發的大多數面向相比,分散式系統設計通常需要透過正式方法等工具提供的數學分析。但儘管了解理論運作方式具有挑戰性,但論文中出現的內容與可以在實際系統中實作的內容之間仍有相當大的差距。透過研究每天執行我們的線上系統的系統程式碼(通常需要學習新的語言和架構),Unmesh 能夠將嵌入在這些程式碼中的常見解決方案制定成更通用的模式。建立這些模式的骨架實作確保他正確理解了經常微妙的行為和權衡。
為了傳達他所學到的知識,他起草了模式,將它們寄給我和其他有興趣的 Thoughtworkers,針對評論進行反思,並在此處發布已開發的草稿供更廣泛的讀者使用。隨著模式集合成形,他聯繫了 Pearson,將其轉變為一本書,我很榮幸將其加入我的簽名系列。
最後的書籍包含 三十種模式,每種模式都附有說明文字,許多模式附有順序圖以說明複雜的互動,所有模式都附有程式碼範例,以釐清所有重要的細節。了解這些模式為了解分散式系統的工作方式提供了堅實的基礎。特別是,它們闡明了這些系統面臨的最棘手的問題:如何在不陷入多個寫入者同時嘗試更新時的矛盾情況下,確保資料可以分散以提高可用性和復原力。