- 分布式架構原理與實踐
- 崔皓
- 2319字
- 2022-09-29 10:23:31
前言
為什么要寫這本書
大家好,我是崔皓,一名 IT 老兵,從 2002 年參加工作至今已近 20 年,見證了系統設計從單體架構發展到分布式架構的過程。我從 2016 年開始關注分布式架構,并在團隊中使用這種架構,遇到過不少問題,也踩過不少坑。每次遇到問題的時候,我都是頭疼醫頭、腳疼醫腳,借助搜索引擎、拜訪高人、閱讀名書。業務處于飛速發展中,面對海量的數據,系統需要提供更加強大的處理能力和擴展能力,分布式架構設計是未來的發展方向。在這種背景下,我為沒有系統地學習過相關知識而感到苦惱。于是在 2017 年,我開始寫博客,通過輸出文字的方式將工作經驗和學習所得進行歸納總結。至今我已發表 100 多篇博文,在“51CTO 技術棧”公眾號上發表近 30 篇技術長文,并且在“51CTO 博客”中建立了自己的專欄——“秒殺高并發白話實戰”。我的老師張千帆女士通過一次偶然的機會找到了我,讓我參與編寫高校教材的討論工作,因此我萌生了寫書的想法。在 2020 年年初,我發表的文章字數已經超過了 40 萬,我想把這么多年積累的經驗匯編成書,并分享給更多人,應該是一件很有意義的事情。中國人講究“觀、為、得”,“觀”就是看別人做事,“為”就是自己嘗試用學到的東西做事,之后才能有所“得”。我想寫書也是這樣,“觀”就是學習的過程,為了寫這本書我閱讀了 40 多本專業圖書,希望能從前輩那里找到靈感;“為”就是通過自己的實踐,將書中內容和自身經驗結合在一起,最終形成書中的文字,這樣才能將知識轉化為“得”。總而言之,匯總前人的經驗與自己踩過的坑,并分享給需要的人,就是這本書的寫作目的。
這本書包括哪些內容
寫書一般更關注某技術是什么,怎么做,而忽略了為什么,其實應該把為什么使用某種技術放在第一的位置。只有知道了為什么,心中才會有目標,才懂得使用這門技術的意義。回到本書,要想把為什么說清楚,就需要對分布式技術的歷史進行歸納總結,看看架構是如何一步步演變成分布式架構的。在我看來這個行進過程是自然而然、水到渠成的。我會在第 1 章介紹分布式架構的發展歷史,同時告訴大家本書的邏輯主線,然后順著這個邏輯主線展開介紹。
為了應對請求的高并發和業務的復雜性,需要對應用服務進行合理拆分,使之從原來的大而集中變成小而分散。想讓這些分散的服務合作完成計算任務,就需要解決它們之間的通信與協同問題。和服務一樣,負責存儲的數據庫也會遇到分散的情況,因此同樣要考慮分散存儲。如果說所有的服務、數據庫都需要資源作為支撐,那么對資源的管理和調度也是必不可少的。此外,軟件系統上線以后,還需要對關鍵指標進行監控。
根據上面的邏輯主線,可以得到本書的主要內容:分布式應用服務的拆分、分布式調用、分布式協同、分布式計算、分布式存儲、分布式資源管理和調度、高性能與可用性以及指標與監控等。這些內容各成一章,基本涵蓋了分布式技術的要點,讀者既可以按照邏輯聯系從前往后看,也可以只閱讀感興趣的章節。
本書每章內容都按照“為什么”“是什么”“怎么辦”三方面展開。
?“為什么”指明了使用某種技術的原因,通常會指出具體的技術痛點,然后圍繞這個痛點提出解決方案,從而引出對應的技術。
?“是什么”針對技術的核心架構展開,分析其原理和結構,讓大家從內部了解技術架構,為后面的“怎么辦”做鋪墊。
?“怎么辦”部分主要是根據技術架構的核心概念,形成最佳實踐。本書會選擇業內經典或者流行的技術架構和方案給大家做參考。
哪些人適合讀這本書
在我開始寫博客的時候,最先滿足的是自己的學習需求,記錄知識要點和感悟是我的目的。后來看博客的人多了,特別是在微信公眾號上發表文章以后,我就需要考慮對應的閱讀人群,考慮他們是否具備和我一樣的知識背景和工作經歷,我所寫的內容能否被他們接受。再者,在職業生涯中,我擔任過程序員、技術組長、架構師、業務分析師、項目經理、技術經理等不同角色,深知技術知識并非某一類人的專屬物品。所以我需要對技術的核心要點進行抽象和深化,除了要讓擁有專業背景的程序員、架構師看懂,也要讓相關專業的業務分析師、項目管理者能弄明白。基于這個想法,我將前文提到的“為什么”“是什么”和“怎么辦”這三方面分別對應到了思路、機制和實踐。
?“為什么”適合程序員、技術組長、架構師、業務分析師、項目管理者閱讀。
?“是什么”適合技術組長、架構師閱讀。他們需要對技術核心了如指掌,這樣才能在架構出現問題的時候,直指問題的根本,站在實現機制的高度看待整個系統架構。
?“怎么辦”需要程序員、技術組長、架構師、項目管理者有所了解,對具體應用的落地和工具、架構的選擇非常有用。
如何閱讀這本書
拿到本書后可以先閱讀第 1 章,其中介紹了分布式技術的發展歷程以及全書的敘述邏輯。我會按照“拆分→調用→協同→計算→存儲→調度→高性能與可用性→指標與監控”這樣的邏輯主線展開描述。雖然章節之間有連貫性,但是也可以分開閱讀,這并不會影響閱讀體驗。我在看書的時候喜歡通過畫圖的方式記錄系統架構和數據流程,我把這個習慣也運用到了本書當中,使用了 300 多張圖片。一圖勝千言,讀完一本書以后,記住的文字可能寥寥無幾,對圖卻印象深刻。
感謝
寫書是一個漫長的過程,從萌生想法到構思、整理大綱,再到查找資料、編寫內容、審稿校驗,我前后花了接近兩年的時間。其中需要感謝的人太多,感謝華中科技大學的張千帆教授給我寫書的啟發;感謝陶家龍、李仙、石杉編輯在寫作初期對我行文上的指導;特別要感謝的是人民郵電出版社圖靈公司的王軍花編輯,她從構思、架構、描寫諸多方面不厭其煩地幫助我,是我寫作上的指路明燈。我的同事和領導給予了我莫大的支持,感謝汪求學、吳暉、馮是聰、胡浩文、伍俊等。最后,感謝我父親給我的文學熏陶,感謝我妻子近兩年的默默付出,還有我 10 歲的女兒,她也一直默默關心和支持我。
- Mastering Ext JS(Second Edition)
- Learning Neo4j
- Learn TypeScript 3 by Building Web Applications
- Arduino by Example
- 青少年軟件編程基礎與實戰(圖形化編程三級)
- 基于差分進化的優化方法及應用
- Implementing Cisco Networking Solutions
- C語言從入門到精通(第4版)
- 零基礎學Java(第4版)
- Hands-On Enterprise Automation with Python.
- App Inventor創意趣味編程進階
- 響應式Web設計:HTML5和CSS3實戰(第2版)
- C++從入門到精通(第6版)
- 從0到1:HTML5 Canvas動畫開發
- Exploring SE for Android