前言
隨著軟體複雜度的增加和使用者規模的增長,分散式系統獲得了廣泛應用。對於軟體開發者而言,掌握分散式系統的相關知識是十分必要的。但分散式系統包括理論、實踐、專案等多方面內容。這些內容往往交織穿插在一起,給軟體開發者的學習帶來了不少困難,讓許多軟體開發者在學習過程中感到混亂和迷茫。
為了幫助讀者學習分散式系統,本書對分散式系統的相關理論、實踐、專案知識進行了詳細的介紹,理論聯繫實踐、實踐結合專案,層層漸進,力求讓讀者知其然並知其所以然,建立完整的分散式系統知識系統。
本書共分為4 篇,13 章。
理論篇(第1 章~第4 章)介紹了分散式系統的概念,並討論了分散式系統的優缺點及需要面對的問題。然後,從這些問題入手,討論了一致性、共識、分散式約束等重要理論知識。該篇內容將為後續的實踐篇、專案篇提供清晰、明確的理論指引。
實踐篇(第5 章~第9 章)介紹了分散式鎖、分散式交易、服務發現與呼叫、服務保護與閘道、冪等介面等知識,介紹了理論篇所述的內容如何具體實施。讀者透過該篇內容的學習,會了解許多架構思想和實踐技巧。
專案篇(第10 章~第12 章)以架設具體的專案為導向,介紹了分散式系統中介軟體。其中,著重介紹了訊息系統中介軟體RabbitMQ 和分散式協調中介軟體ZooKeeper。該篇與理論篇、實踐篇相呼應,但更加接近專案實作,可以直接將其中的內容作為專案開發時的參考資料。
複習篇(第13 章)對前面3 篇的內容進行了整理,幫助讀者釐清分散式系統的知識脈絡。
本書是一本說明分散式系統理論、實踐、專案知識的書籍,更是一本幫助建立完整的分散式系統知識系統的書籍。
本書內容的涵蓋範圍很廣,包括數學、演算法、架構、程式設計、中介軟體等多個領域。在本書的籌備過程中,作者閱讀了許多書籍、查閱了許多論文,前後歷時近兩年。在本書寫作過程中,為確保內容簡單易懂,作者多次斟酌和修改了行文脈絡。在本書完稿後,為保證內容的充實可靠,作者邀請了國內外學術、專案領域的多位專家、學者對本書的數學、演算法等內容進行了審稿。其中,周健博士等人從各自的專業領域出發,提出了很多寶貴的意見和建議。
本書的出版還獲得了李冰編輯的大力支持。崔寶順等人也參與寫作並提供了大量幫助。
由於作者水準有限,書中難免有疏漏之處,敬請讀者批評指正。真心希望本書能夠給讀者帶來架構能力和軟體開發能力的提升。
易哥