這是一本從開發(fā)流程、技術(shù)棧、典型問題解決方案和開發(fā)規(guī)范等維度全面講解服務端開發(fā)的著作。它衍生自作者在某著名互聯(lián)網(wǎng)科技公司內(nèi)部講授的高口碑課程,是作者近10年服務端開發(fā)經(jīng)驗的總結(jié),同時融合了業(yè)界在服務端開發(fā)方面的寶貴項目經(jīng)驗和實踐智慧。
本書理論與實踐結(jié)合,擺脫編程語言、框架、中間件及傳統(tǒng)編程思想的束縛,全景式、體系化地闡述了服務端開發(fā),核心內(nèi)容包括以下兩個部分。
第1部分:服務端開發(fā)的技術(shù)和方法
首先,介紹了服務端開發(fā)的職責、技術(shù)棧、核心流程和進階路徑;然后,從需求分析、抽象建模、系統(tǒng)設計、數(shù)據(jù)設計和非功能性設計5個方面展開,結(jié)合案例深入講解了服務端開發(fā)的實操方法和重難點,為讀者呈現(xiàn)出服務端開發(fā)的全景圖,幫助讀者快速、體系化地掌握服務端開發(fā)的相關(guān)知識和方法。
第2部分:服務端典型問題的解決方案
針對高并發(fā)、高性能、高可用、緩存、數(shù)據(jù)一致性、冪等、秒殺等服務端開發(fā)實踐中的典型問題,給出了對應的解決方案和開發(fā)規(guī)范,同時還結(jié)合案例深入分析了不同方案的優(yōu)缺點。此外,還總結(jié)了接口設計、日志打印、異常處理、代碼編寫、代碼注釋等落地層面的行業(yè)案例和規(guī)范。
【為什么要寫這本書】
服務端開發(fā)涉及的面非常廣,特別是在阿里、騰訊、字節(jié)跳動這類動輒十億級用戶、億級 DAU(Daily Active User,日均活躍用戶數(shù))的頭部企業(yè)的核心業(yè)務場景中,服務端開發(fā)充滿挑戰(zhàn)。然而,在校園中,相關(guān)學科的編程實踐課程仍多停留在開發(fā)學生管理系統(tǒng)的水平上,與行業(yè)的實際需要脫節(jié);在市面上,服務端開發(fā)相關(guān)的書籍大都聚焦于解讀某種編程語言、中間件、開發(fā)框架或編程思想,缺乏互聯(lián)網(wǎng)服務端開發(fā)實踐內(nèi)容和對服務端開發(fā)的體系化介紹。一系列因素導致服務端開發(fā)長期以來被誤解為 Java 開發(fā)、Go 開發(fā)之類的某編程語言開發(fā),或者被簡單地定義為編寫運行于服務器的程序。
2020 年,我在GitChat 和 CSDN上原創(chuàng)的技術(shù)博客突破一百萬字,成為博客專家。碼字科技創(chuàng)始人謝工建議我將博客專欄整理成書出版,并將我引薦給了機械工業(yè)出版社的楊福川老師。彼時,寫一本全景式介紹服務端開發(fā)書籍的想法在我心頭萌芽了。當我躊躇滿志地準備大干一場的時候,我意識到一個嚴重的問題:服務端開發(fā)涉及的內(nèi)容實在太多了,紛繁復雜的知識點令人望而生畏。幾經(jīng)思考,自認為沒有足夠的時間付之于此,于是我又退縮了。
時間來到 2021年年底,支付寶會員與公益技術(shù)部要對入職兩年以內(nèi)的服務端開發(fā)工程師進行技術(shù)培訓,晏嬰推薦我作為首門課程大話系分設計的講師。接到這個任務,我不由得心頭一緊。系分設計涵蓋需求分析、抽象建模、系統(tǒng)設計、數(shù)據(jù)設計和非功能性設計等內(nèi)容,實際上就是一幅服務端開發(fā)全景圖。好在有將近一個月的時間準備,借此契機,我得以體系化地梳理服務端開發(fā)的知識脈絡。
在之后的線下授課和交流中,我發(fā)現(xiàn)服務端開發(fā)工程師存在一些普遍性問題:其一,傾向于將產(chǎn)品文檔翻譯成代碼,輕視業(yè)務,由于對業(yè)務領(lǐng)域全貌不了解,原本關(guān)鍵的抽象建模過程流于形式;其二,局限于圍繞數(shù)據(jù)庫開發(fā),出手便是表結(jié)構(gòu)設計,本末倒置;其三,在系統(tǒng)設計和開發(fā)中注重需求功能實現(xiàn),對于高并發(fā)、高可用、高性能等非功能性問題考慮不足。考慮到短暫的線下培訓難以將上述問題逐一講透,我決定結(jié)合服務端開發(fā)的實際流程,編寫一部開發(fā)指南。無心插柳柳成蔭。隨著編寫工作的推進,寫書的時機悄然成熟了。于是,我再次聯(lián)系了楊福川老師,并在他的幫助下進一步完善了目錄,最終確定了寫作本書的計劃。
自 2016 年起,我一直堅持通過寫技術(shù)文章來分享知識,先后在 CSDN、GitChat、知乎、阿里技術(shù)公眾號、阿里 ATA 等平臺上發(fā)表了數(shù)百篇技術(shù)文章,其中部分文章還曾入選平臺年度最火文章合集年度好評 TOP10和頭條推薦。不過,這些文章像一個個分散的點,不成體系,對讀者的幫助相對有限。鑒于此,我希望通過本書,全景式、體系化地為讀者呈現(xiàn)服務端開發(fā)的方法和實用解決方案。
【讀者對象】
IT 從業(yè)人員:服務端開發(fā)工程師、客戶端開發(fā)工程師、產(chǎn)品經(jīng)理、測試工程師等。
高校學生:計算機、自動化、電氣、通信等專業(yè)的學生。
【本書特色】
在互聯(lián)網(wǎng)領(lǐng)域,技術(shù)日新月異,以有限的精力持續(xù)學習十分困難。幸運的是,無論技術(shù)如何演進,其背后的方法論往往大同小異,經(jīng)典解決方案歷久彌新。因此,掌握方法論和實用解決方案尤為必要。不同于一般的技術(shù)書籍,本書不局限于任何一種具體的編程語言、框架、容器、中間件或編程思想,而是致力于全景式、體系化地解讀服務端開發(fā)的流程、重點和難點。
本書分為技術(shù)與方法、解決方案兩部分,理論結(jié)合實踐。第一部分對需求分析、抽象建模、系統(tǒng)設計、數(shù)據(jù)設計和非功能性設計等服務端開發(fā)的核心環(huán)節(jié)進行了深入的解讀,可以幫助讀者快速、體系化地掌握服務端開發(fā)的相關(guān)知識。第二部分針對高并發(fā)、高可用、高性能、緩存、冪等、數(shù)據(jù)一致性等問題提供了行業(yè)經(jīng)典解決方案,可以幫助讀者夯實技術(shù)基礎,提升競爭力。為了便于讀者理解,本書還列舉了大量案例,并繪制了200多張圖,圖文并茂。
【本書主要內(nèi)容】
本書共 14 章,內(nèi)容分為兩部分。
第1部分包括第 1~6 章,主題是技術(shù)與方法。本部分首先介紹服務端開發(fā)的定義、職責、技術(shù)棧、核心流程和進階路徑,然后從需求分析、抽象建模、系統(tǒng)設計、數(shù)據(jù)設計、非功能性設計5個方面逐一展開,結(jié)合案例深入解讀服務端開發(fā)的實操方法、重點和難點,為讀者清晰呈現(xiàn)服務端開發(fā)的全景圖。通過學習本部分內(nèi)容,讀者可以快速、體系化地掌握服務端開發(fā)的相關(guān)知識和方法。
第2部分包括第7~14 章,主題是解決方案。本部分針對高并發(fā)、高可用、高性能、緩存、冪等、數(shù)據(jù)一致性等服務端開發(fā)的典型問題,結(jié)合業(yè)務場景進行系統(tǒng)性分析并給出實戰(zhàn)方案,并就接口設計、日志打印、異常處理、代碼編寫、代碼注釋等實施細節(jié)給出行業(yè)案例和規(guī)范。本部分內(nèi)容如同一本服務端開發(fā)問題手冊,可幫助讀者解決實踐中遇到的問題。
需要特別說明的是,第一部分內(nèi)容不僅適合服務端開發(fā)人員學習,還適合前端開發(fā)、測試、產(chǎn)品經(jīng)理、運營等崗位的人員學習,對提升技能、構(gòu)建用例、設計產(chǎn)品和梳理需求大有裨益。第二部分內(nèi)容所介紹的解決方案和開發(fā)規(guī)范均為行業(yè)實踐經(jīng)驗的總結(jié),部分知識點具有一定難度。如果你是一名經(jīng)驗較為豐富的工程師,可以直接閱讀這部分內(nèi)容;如果你從業(yè)不久或為在校學生,建議從第一部分的基礎理論知識開始學習。
郭進
浙江大學工學碩士,杭州市高層次人才現(xiàn)任某著名互聯(lián)網(wǎng)科技公司服務端技術(shù)專家先后從事過智能控制算法、分布式中間件和服務端研發(fā)。相關(guān)成果曾發(fā)表于領(lǐng)域頂級會議和SCI期刊。
近年來,致力于構(gòu)建高效、可靠、可擴展的服務端系統(tǒng),作為核心成員設計并開發(fā)了承載百萬級QPS、服務億級用戶的大型分布式系統(tǒng),在領(lǐng)域建模、系統(tǒng)架構(gòu)、信息流推薦及研發(fā)規(guī)范方面積累了大量優(yōu)秀實踐曾獲得阿里第二屆技術(shù)講師課程大賽冠軍、華為總裁嘉獎令、浙江省優(yōu)秀畢業(yè)生、NUEDC(全國大學生電子設計競賽 ) 全國一等獎及瑞薩特別獎、國家獎學金等30余個獎項。
CSDN博客專家,阿里高階技術(shù)傳橙官,先后在CSDN、阿里技術(shù)公眾號阿里ATA 等平臺發(fā)表技術(shù)文章數(shù)百篇,多篇文章入選平臺年度最火文章合集年度好評TOP 10和頭條推薦