前言
2019年我出版了《通用原始程式閱讀指導書——MyBatis原始程式詳解》一書,向大家分享原始程式閱讀相關的知識和技巧。書籍面市後,收到了不錯的反響,有的讀者表示學到了許多的程式設計知識,有的讀者表示透徹瞭解了MyBatis的原始程式,有的讀者表示終於邁入了原始程式閱讀的大門。這讓我感覺每個坐在電腦前十指連彈的夜都是值得的。
然而,我也發現很多開發者在進行軟體架構設計時缺乏系統化的思維,只能在試錯、複習中不斷摸索提升,痛苦而緩慢。而且,這種提升方式容易留下知識盲區。可是這些問題都很難透過原始程式閱讀來補足。
因此,我決定寫一本系統化的架構書籍分享給大家。書籍中不僅要包含理論知識、實踐技巧、工程方案,更要將這些知識系統化地連接起來,以幫助大家建立一個完備的知識系統。這就是我寫作本書的原因。
在本書中,我們將從“高性能架構”這一點出發,系統地介紹高性能架構相關的各方面。
書中涉及很多理論知識,我儘量透過範例使得它們簡單易懂;書中有很多架構技巧,我儘量透過複習使得它們清晰明了。在本書的最後,還會以書中的架構系統為依據,開發一套高性能的分散式許可權系統。
從理論知識到架構技巧,再到項目實踐,本書力求列出一套完整的知識系統,指引大家完成高性能系統的架構設計。
第1章介紹了高性能和架構這兩個概念。包括高性能代表的具體指標,架構的具體含義與主要內容。
第2章介紹了分流設計。即如何使用內容分發網路、多位址直連、反向代理等手段將使用者的請求分散到不同的系統上,從而降低每個系統的併發數。
第3章介紹了與服務平行相關的設計。首先,介紹了平行與併發的概念。其次,在此基礎上介紹了叢集系統、分散式系統、微服務系統。包括各類別系統的特點、實現困難等。服務平行設計能夠進一步將系統內的請求進行分流,從而提升系統性能。
第4章介紹了多進行、多執行緒、多程式碼協同等運算併發手段,並列出了對應的實例。尤其是對常見的多執行緒進行了深入介紹,包括執行緒的狀態轉換、應用場景、使用方法、協作方法等。透過運算併發設計,能夠顯著提升系統的併發能力。
第5章介紹了輸入輸出設計。首先介紹了IO的分類別維度、層級。然後詳細介紹了常見的五種IO模型,包括這些模型之間的演化邏輯,並列出了這些模型的實際使用範例。
第6章介紹了資料庫設計與最佳化手段。從最基本的關聯式資料庫設計開始,介紹了關聯式資料庫設計的設計範式、反範式。在此基礎上,還介紹了各類別索引的原理、使用條件,各類別鎖的特點,鎖死的產生與解除,交易及其隔離等級等。在章節的最後還介紹了針對巨量儲存資料時資料庫該如何最佳化,以及一些非傳統的資料庫和資料庫中介軟體。
第7章介紹了快取設計的方法和技巧。這一章從快取的收益說起,推導提升快取收益的方法。然後在此基礎上,列出了提升快取收益的具體實施手段,包括快取要素的設計、更新機制的設計、清理機制的設計、風險點的處理、位置的設計等。最後還介紹了寫快取的收益計算和實踐方案。
第8章介紹了系統可靠性設計的相關知識。首先,介紹了可靠性的概念與具體的衡量指標。其次,在此基礎上介紹了提升系統可靠性的手段。這一章將幫助我們建構高可靠性的系統。
第9章介紹了應用保護的基礎知識和實踐手段。這些知識和手段能提升應用在突發狀況下的工作狀況。
第10章介紹了前端高性能的相關知識。這是一個相對獨立的一章。首先,分析了前端工作過程中的性能關鍵點。其次,針對這些關鍵點列出了前端性能最佳化的手段。具有較強的綜合性和指導性。
第11章介紹了架構設計中架構設計風格和軟體生命週期這兩個方面的基礎知識。這些知識將指導我們系統化地進行軟體架構工作。
第12章是一個項目實踐。本章以前面各章介紹的高性能架構知識為依據,完整地開展了一個高性能軟體系統的架構工作,包括理論推導、模型設計、概要設計、詳細設計等各個環節,介紹了一個完整的高性能架構過程。本章的內容能幫助讀者學會如何在實踐中靈活運用前面各章的知識。
本書力求理論聯繫實踐,既列出了高性能架構的相關理論與推導,又列出了具體的實施策略與技巧,還透過項目實踐完成了一個高性能軟體的架構設計。希望大家在閱讀本書後,能夠建立高性能架構領域的完整知識系統。
致謝
書籍的寫作出版要經歷很長的過程,從規劃到研究,從初稿到終稿,從編輯到面市。在這個過程中,我要感謝許多人。其間,我獲得了領導的大力支持和鼓勵,獲得了業內專家的審稿和指導,也獲得了國內外學術及工程領域多位朋友的幫助。性能領域的資深專家童庭堅在百忙中審稿了書籍初稿,並為本書作序。電子工業出版社的許多編輯也為本書傾力付出。
資訊技術浪潮帶來了巨大的機會,作為軟體開發者的你我有幸站到了這一機會面前,我們每個人都應該做出自己的一份貢獻,或偉大,或渺小,為自己,為社會。
真心希望本書能夠給你帶來架構能力和軟體開發能力的提升。
加油,願你我早日成為自己的燦爛星辰!
易哥???? ?