大型網(wǎng)站架構(gòu)實戰(zhàn)
定 價:99.8 元
- 作者:梁嘉禎著
- 出版時間:2022/3/1
- ISBN:9787111700593
- 出 版 社:機械工業(yè)出版社
- 中圖法分類:TP393.092.1
- 頁碼:
- 紙張:膠版紙
- 版次:
- 開本:16開
本書從大型網(wǎng)站架構(gòu)的發(fā)展歷程出發(fā),逐步深入介紹大型網(wǎng)站架構(gòu)的各個部分,并在后配合實戰(zhàn)案例,詳細介紹大型網(wǎng)站架構(gòu)需要關(guān)注的問題及其解決方法,讓讀者不但可以消除對大型網(wǎng)站架構(gòu)的神秘感,而且還可以對大型網(wǎng)站架構(gòu)有更加深入的理解。
本書共10章,分為4篇。第1篇“大型網(wǎng)站架構(gòu)的發(fā)展與面臨的挑戰(zhàn)”,主要介紹大型網(wǎng)站業(yè)務(wù)和架構(gòu)的發(fā)展,以及大型網(wǎng)站架構(gòu)面臨的挑戰(zhàn);第2篇“大型網(wǎng)站架構(gòu)的技術(shù)細節(jié)”,主要介紹前端架構(gòu)、后端架構(gòu)、云計算服務(wù)架構(gòu)和整體架構(gòu)等內(nèi)容;第3篇“大型網(wǎng)站架構(gòu)實戰(zhàn)案例”,主要介紹單點登錄系統(tǒng)架構(gòu)設(shè)計、媒體庫管理系統(tǒng)架構(gòu)設(shè)計和直播系統(tǒng)架構(gòu)設(shè)計的相關(guān)內(nèi)容;第4篇“未來架構(gòu)的設(shè)想”,主要介紹作者對未來架構(gòu)的一些設(shè)想和看法。
本書從實際問題出發(fā),問題與技術(shù)相呼應(yīng),一步一步地剖析和還原大型網(wǎng)站架構(gòu)設(shè)計,內(nèi)容通俗易懂,實用性強,特別適合大型網(wǎng)站架構(gòu)的入門與進階讀者閱讀,也適合其他對大型網(wǎng)站架構(gòu)和云計算感興趣的讀者閱讀。
資深架構(gòu)師全面總結(jié)多年積累的實際項目架構(gòu)經(jīng)驗
深入剖析和還原大型網(wǎng)站架構(gòu)設(shè)計過程,并歸納出架構(gòu)設(shè)計的思想與核心問題
三位知名公司的資深架構(gòu)師傾情力薦
將大型網(wǎng)站架構(gòu)分為前端架構(gòu)、后端架構(gòu)、云計算服務(wù)架構(gòu)和整體架構(gòu)進行講解
以開發(fā)成本與軟件質(zhì)量為核心,高度還原真實網(wǎng)站架構(gòu)設(shè)計項目的思考方式
提出“頂層架構(gòu)”的概念,討論如何構(gòu)建一個可持續(xù)迭代升級的大型網(wǎng)站系統(tǒng)
特意繪制了160余幅示意圖,輔助讀者更加直觀地理解架構(gòu)設(shè)計
將架構(gòu)思想與具體問題相對應(yīng),幫助讀者更好地理解架構(gòu)設(shè)計的思想
詳解單點登錄系統(tǒng)、媒體庫管理系統(tǒng)和直播系統(tǒng)的架構(gòu)設(shè)計
互聯(lián)網(wǎng)的發(fā)展速度超出了大部分人的預(yù)期。淘寶等購物平臺、斗魚等直播平臺、抖音等短視頻平臺和頭條號等自媒體平臺像雨后春筍般相繼涌現(xiàn),它們都屬于大型網(wǎng)站平臺。隨著互聯(lián)網(wǎng)的持續(xù)發(fā)展,未來一定還會出現(xiàn)更多的大型網(wǎng)站。成功的大型網(wǎng)站雖然是鳳毛麟角,但是它們會成為行業(yè)的標桿,會拉動大型網(wǎng)站的需求,使得大型網(wǎng)站帶來的項目機會越來越多。
大型網(wǎng)站不僅要處理復(fù)雜、凌亂且時刻變化的業(yè)務(wù)需求,還要應(yīng)對大量的用戶訪問和數(shù)據(jù)處理;而且隨著近些年云計算的興起,大型網(wǎng)站越來越復(fù)雜。因此,搭建一個大型網(wǎng)站不再是幾個軟件工程師就能完成的。大型網(wǎng)站要有更加全面的架構(gòu)設(shè)計、更加復(fù)雜的功能和更加強大的處理能力,其對項目開發(fā)人才的要求也越來越高。理解大型網(wǎng)站架構(gòu)是應(yīng)聘互聯(lián)網(wǎng)開發(fā)崗位的必要條件,也是一個加分項,更是成為架構(gòu)師的前提。
在筆者職業(yè)生涯的開端,曾參與了一個合同額每年億元級的軟件項目。該項目有一個獨特的架構(gòu),可以讓開發(fā)人員近似千人一面地完成開發(fā)工作,加之該項目有嚴謹?shù)捻椖抗芾砹鞒蹋沟盟畮啄曛两。之后筆者參與了一個不太成功的大型網(wǎng)站項目(合同額千萬元級),其程序凌亂不堪,即使工程師們各顯神通,后成本還是嚴重超標,運維成本也非常高。
那個不太成功的大型網(wǎng)站項目采用了當時的前端框架Angular 2和微服務(wù)框架,高并發(fā)和高可用性設(shè)計等也都采用當時較為流行的方案,但開發(fā)出來的軟件質(zhì)量卻很差。這讓筆者深深地體會到,僅靠框架和技術(shù)很難保證軟件的質(zhì)量,高質(zhì)量的軟件還依賴于良好的架構(gòu)設(shè)計。架構(gòu)設(shè)計不僅要選取現(xiàn)成的軟件工具,而且還需要思考軟件本身的結(jié)構(gòu),另外還需要約束軟件開發(fā)的過程。
對大型網(wǎng)站來說,想在項目之初就設(shè)計好架構(gòu),這確實是一件十分困難的事情。因為一個成熟的大型網(wǎng)站系統(tǒng)是非常復(fù)雜的,其涉及的問題也非常多,再加上工期等客觀條件的限制,導(dǎo)致架構(gòu)設(shè)計很多時候是滯后于開發(fā)的,開發(fā)過程也很難被約束。
其實,在項目之初并不需要把大型網(wǎng)站整個架構(gòu)都設(shè)計好,只需要解決一些關(guān)鍵問題即可,其他問題可以在項目迭代的過程中解決。那么,大型網(wǎng)站架構(gòu)需要解決哪些關(guān)鍵問題呢?其實所謂關(guān)鍵問題都是經(jīng)驗之談。解決好這些關(guān)鍵問題,在能提高項目質(zhì)量的同時還能降低項目的成本。
為了幫助讀者全面、系統(tǒng)地學(xué)習(xí)大型網(wǎng)站架構(gòu)設(shè)計的相關(guān)知識,筆者編寫了本書,給出了自己對相關(guān)問題的思考,并對多年的從業(yè)經(jīng)驗進行了總結(jié),相信對相關(guān)讀者會有所幫助。
本書特色
* 內(nèi)容新穎:講解時涉及的大部分軟件都采用版本(截至完稿時)。
* 內(nèi)容完善:全面介紹大型網(wǎng)站架構(gòu)設(shè)計的發(fā)展和面臨的挑戰(zhàn),以及前端架構(gòu)、后端架構(gòu)、云計算服務(wù)架構(gòu)和整體架構(gòu)的技術(shù)細節(jié),并詳解3個典型的大型網(wǎng)站架構(gòu)設(shè)計案例,后對筆者所理解的未來架構(gòu)設(shè)計做必要介紹。
* 案例典型:詳細介紹單點登錄系統(tǒng)、媒體庫管理系統(tǒng)和直播系統(tǒng)的架構(gòu)設(shè)計。
* 問題驅(qū)動:從問題出發(fā),問題與技術(shù)相對應(yīng),一步步地剖析和還原大型網(wǎng)站架構(gòu)設(shè)計,幫助讀者更好地理解相關(guān)的知識。
* 經(jīng)驗總結(jié):全面歸納和總結(jié)筆者經(jīng)歷的幾個大型網(wǎng)站項目的實踐經(jīng)驗。
* 圖文并茂:提供160余幅示意圖幫助讀者更加直觀地理解相關(guān)內(nèi)容。
* 實用性強:結(jié)合具體示例講解知識點,便于讀者理解和掌握。
本書內(nèi)容
第1篇 大型網(wǎng)站架構(gòu)的發(fā)展與面臨的挑戰(zhàn)
本篇涵蓋第1、2章,主要介紹大型網(wǎng)站架構(gòu)的發(fā)展與面臨的挑戰(zhàn)。架構(gòu)分為業(yè)務(wù)架構(gòu)與技術(shù)架構(gòu),本篇從宏觀上介紹業(yè)務(wù)架構(gòu)與技術(shù)架構(gòu),以及它們之間的關(guān)系。
第2篇 大型網(wǎng)站架構(gòu)的技術(shù)細節(jié)
本篇涵蓋第3~6章,詳細介紹大型網(wǎng)站架構(gòu)的技術(shù)細節(jié)。本篇把大型網(wǎng)站架構(gòu)細分為前端架構(gòu)、后端架構(gòu)、云計算服務(wù)架構(gòu)和整體架構(gòu)4個部分,分別介紹每部分需要解決的關(guān)鍵問題及其解決方法。本篇結(jié)合實際項目介紹相關(guān)知識點,以幫助讀者更加深刻地理解大型網(wǎng)站架構(gòu)。
第3篇 大型網(wǎng)站架構(gòu)實戰(zhàn)案例
本篇涵蓋第7~9章,選取幾個較為通用且典型的網(wǎng)站系統(tǒng)作為案例,還原這些系統(tǒng)的架構(gòu)設(shè)計,以幫助讀者進一步深入理解大型網(wǎng)站架構(gòu)。
第4篇 未來架構(gòu)的設(shè)想
本篇涵蓋第10章,介紹筆者對未來架構(gòu)的設(shè)想。本篇內(nèi)容雖然是一家之言,但是筆者認為,架構(gòu)設(shè)計是開放的,軟件世界是無限包容的,其美好是從想象開始的。
讀者對象
* 網(wǎng)站系統(tǒng)架構(gòu)師;
* 網(wǎng)站系統(tǒng)開發(fā)人員;
* 云計算開發(fā)人員;
* 網(wǎng)站系統(tǒng)運維人員;
* 網(wǎng)站開發(fā)項目經(jīng)理;
* 對大型網(wǎng)站架構(gòu)感興趣的人員;
* 各類院校學(xué)習(xí)網(wǎng)站架構(gòu)的學(xué)生;
* 專業(yè)培訓(xùn)機構(gòu)的相關(guān)學(xué)員。
本書配套資源
本書涉及的源代碼需要讀者自行下載,請在華章公司的網(wǎng)站(www.hzbook.com)上搜索到本書,然后單擊“資料下載”按鈕,即可在本書頁面上找到下載鏈接進行下載。
意見反饋
鑒于筆者的水平所限,書中可能還存在一些疏漏,敬請各位讀者指正。閱讀本書時如果有疑問,可以發(fā)送電子郵件到y(tǒng)iigaa@126.com或hzb
梁嘉禎 架構(gòu)師,自由職業(yè)者。曾任職于東軟集團,從事Web全棧(前端、后端和云計算)開發(fā),并參與項目架構(gòu)設(shè)計。曾參與過多個合同額億級和千萬級的國內(nèi)外軟件項目,作為架構(gòu)師或項目經(jīng)理主導(dǎo)過多個合同額從百萬級到五百萬級的網(wǎng)站系統(tǒng)項目,F(xiàn)為自由職業(yè)者,提供架構(gòu)咨詢服務(wù)。本書寫作過程中為一個合同額五百萬級的社區(qū)網(wǎng)站系統(tǒng)提供全部的架構(gòu)服務(wù)。深受本科專業(yè)涉及的工業(yè)、機械和化學(xué)思想的影響,持續(xù)思考和實踐工業(yè)化項目過程、機械化軟件結(jié)構(gòu)和化學(xué)化編碼呈現(xiàn)。擁有三套自主研發(fā)的前端、后端和云計算架構(gòu),經(jīng)歷過多個項目實踐,能讓大型項目縮減近一半的人力成本。
前言
第1篇 大型網(wǎng)站架構(gòu)的發(fā)展與面臨的挑戰(zhàn)
第1章 大型網(wǎng)站業(yè)務(wù)和架構(gòu)的發(fā)展2
1.1 大型網(wǎng)站的業(yè)務(wù)演變2
1.1.1 靜態(tài)網(wǎng)站的出現(xiàn)2
1.1.2 動態(tài)網(wǎng)站的出現(xiàn)3
1.1.3 大型網(wǎng)站系統(tǒng)的出現(xiàn)4
1.1.4 大型云計算網(wǎng)站系統(tǒng)的出現(xiàn)6
1.1.5 大型網(wǎng)站的未來7
1.2 大型網(wǎng)站架構(gòu)的發(fā)展8
1.2.1 動態(tài)網(wǎng)頁時代8
1.2.2 B/S架構(gòu)網(wǎng)站的崛起8
1.2.3 CDN加速網(wǎng)站響應(yīng)10
1.2.4 應(yīng)用和數(shù)據(jù)分離11
1.2.5 非關(guān)系型數(shù)據(jù)庫和關(guān)系型數(shù)據(jù)庫并存11
1.2.6 集群化12
1.2.7 分布式趨勢13
1.2.8 微服務(wù)15
1.2.9 大型網(wǎng)站架構(gòu)的未來15
1.3 小結(jié)16
第2章 大型網(wǎng)站架構(gòu)面臨的挑戰(zhàn)17
2.1 大型網(wǎng)站架構(gòu)的基本問題17
2.1.1 業(yè)務(wù)架構(gòu)面臨的挑戰(zhàn)17
2.1.2 技術(shù)架構(gòu)面臨的挑戰(zhàn)20
2.1.3 業(yè)務(wù)架構(gòu)和技術(shù)架構(gòu)的相互成全21
2.2 業(yè)務(wù)架構(gòu)的基本思路21
2.2.1 遞進思想22
2.2.2 版本計劃逐漸完善24
2.2.3 持續(xù)優(yōu)化,推陳出新25
2.3 技術(shù)架構(gòu)的基本思路26
2.3.1 分層思想26
2.3.2 IaaS、PaaS和SaaS分層管理27
2.3.3 前端、后端和云計算服務(wù)分層開發(fā)28
2.4 大型網(wǎng)站技術(shù)架構(gòu)的核心問題30
2.4.1 性能問題30
2.4.2 可用性問題30
2.4.3 伸縮性問題31
2.4.4 擴展性問題31
2.4.5 安全性問題32
2.5 小結(jié)32
第2篇 大型網(wǎng)站架構(gòu)的技術(shù)細節(jié)
第3章 前端架構(gòu)34
3.1 前端的工作原理34
3.1.1 Web服務(wù)器搭建34
3.1.2 構(gòu)造一個簡單的網(wǎng)頁38
3.1.3 前端網(wǎng)頁的工作原理41
3.2 前端架構(gòu)需要解決的問題47
3.2.1 規(guī)整化概述47
3.2.2 適配性和兼容性概述49
3.2.3 模塊化概述50
3.2.4 單頁應(yīng)用概述51
3.3 規(guī)整化53
3.3.1 編碼規(guī)范53
3.3.2 JavaScript庫59
3.3.3 組件工具箱61
3.3.4 框架64
3.4 適配性和兼容性71
3.4.1 響應(yīng)式布局71
3.4.2 整體布局73
3.4.3 模塊布局77
3.4.4 適配性測試78
3.4.5 瀏覽器兼容79
3.5 模塊化81
3.5.1 模塊化的方法82
3.5.2 現(xiàn)今前端模塊化的困局86
3.5.3 自研框架Trick87
3.6 單頁應(yīng)用88
3.6.1 單頁應(yīng)用用到的方法88
3.6.2 單頁應(yīng)用的發(fā)展趨勢90
3.7 小結(jié)91
第4章 后端架構(gòu)92
4.1 后端的工作原理92
4.1.1 后端開發(fā)語言及框架92
4.1.2 搭建Web應(yīng)用服務(wù)器94
4.1.3 構(gòu)造一個簡單的后端應(yīng)用程序105
4.1.4 后端應(yīng)用程序的工作原理114
4.2 后端架構(gòu)需要解決的問題120
4.2.1 規(guī)整化概述121
4.2.2 數(shù)據(jù)庫概述122
4.2.3 非關(guān)系型數(shù)據(jù)庫概述122
4.2.4 整合其他應(yīng)用程序123
4.3 規(guī)整化124
4.3.1 接口設(shè)計124
4.3.2 編碼規(guī)范132
4.3.3 集中配置140
4.3.4 Cookie和Session145
4.3.5 應(yīng)用拆分和協(xié)調(diào)148
4.3.6 日志149
4.3.7 自研框架Once159
4.4 數(shù)據(jù)庫161
4.4.1 數(shù)據(jù)庫對比161
4.4.2 數(shù)據(jù)庫的工作原理162
4.4.3 數(shù)據(jù)庫設(shè)計164
4.4.4 數(shù)據(jù)庫操作框架168
4.4.5 數(shù)據(jù)庫事務(wù)175
4.4.6 分布式事務(wù)178
4.5 非關(guān)系型數(shù)據(jù)庫188
4.5.1 鍵值存儲非關(guān)系型數(shù)據(jù)庫188
4.5.2 列存儲非關(guān)系型數(shù)據(jù)庫190
4.5.3 文檔型非關(guān)系型數(shù)據(jù)庫191
4.5.4 圖形非關(guān)系型數(shù)據(jù)庫191
4.6 小結(jié)192
第5章 云計算服務(wù)架構(gòu)193
5.1 云計算服務(wù)的工作原理193
5.1.1 云計算服務(wù)的應(yīng)用場景193
5.1.2 云計算開發(fā)語言及其框架194
5.1.3 云計算服務(wù)軟件的工作原理195
5.2 云計算服務(wù)架構(gòu)需要解決的問題200
5.2.1 云計算服務(wù)軟件基礎(chǔ)框架構(gòu)建概述201
5.2.2 任務(wù)池與指令池的搭建和使用概述202
5.2.3 進度數(shù)據(jù)池與狀態(tài)數(shù)據(jù)池的搭建和使用概述202
5.2.4 監(jiān)控軟件的構(gòu)造概述202
5.3 云計算服務(wù)軟件基礎(chǔ)框架的構(gòu)建203
5.3.1 進程與線程203
5.3.2 線程同步205
5.3.3 線程模型211
5.3.4 軟件結(jié)構(gòu)218
5.4 任務(wù)池與指令池的搭建和使用219
5.4.1 消息隊列219
5.4.2 RabbitMQ消息隊列221
5.4.3 任務(wù)池的搭建與使用232
5.4.4 指令池的搭建與使用234
5.5 進度數(shù)據(jù)池與狀態(tài)數(shù)據(jù)池的搭建和使用237
5.5.1 公共數(shù)據(jù)空間237
5.5.2 Redis數(shù)據(jù)庫239
5.5.3 進度數(shù)據(jù)池的搭建與使用247
5.5.4 狀態(tài)數(shù)據(jù)池的搭建與使用248
5.6 監(jiān)控軟件的構(gòu)造249
5.6.1 軟件結(jié)構(gòu)249
5.6.2 Supervisor監(jiān)控軟件253
5.7 小結(jié)254
第6章 整體架構(gòu)255
6.1 網(wǎng)站系統(tǒng)的基本結(jié)構(gòu)255
6.1.1 前端部分的基本結(jié)構(gòu)255
6.1.2 后端部分的基本結(jié)構(gòu)257
6.1.3 云計算服務(wù)部分的基礎(chǔ)結(jié)構(gòu)258
6.1.4 網(wǎng)站系統(tǒng)的基本結(jié)構(gòu)259
6.2 整體架構(gòu)需要解決的問題260
6.2.1 性能概述260
6.2.2 可用性概述260
6.2.3 伸縮性概述261
6.2.4 擴展性概述261
6.2.5 安全性概述261
6.3 性能262
6.3.1 性能指標262
6.3.2 壓力測試266
6.3.3 性能調(diào)優(yōu)的基本思路271
6.3.4 服務(wù)器性能調(diào)優(yōu)274
6.3.5 Nginx調(diào)優(yōu)280
6.3.6 CDN加速283
6.3.7 瀏覽器訪問頁面的過程優(yōu)化284
6.3.8 Tomcat調(diào)優(yōu)285
6.3.9 緩存與靜態(tài)文件287
6.3.10 數(shù)據(jù)庫性能優(yōu)化288
6.3.11 數(shù)據(jù)庫集群289
6.3.12 分布式文件系統(tǒng)293
6.3.13 集群部署與分布式部署294
6.4 可用性297
6.4.1 服務(wù)器的定期維護與監(jiān)控297
6.4.2 服務(wù)器熱備份298
6.4.3 日志機制299
6.4.4 環(huán)境分離與灰度發(fā)布299
6.5 伸縮性300
6.5.1 伸縮指標與伸縮策略300
6.5.2 動態(tài)彈性伸縮的局限300
6.6 安全性301
6.6.1 安全堡壘機301
6.6.2 接口鑒權(quán)302
6.6.3 SQL盲注302
6.6.4 跨域303
6.7 小結(jié)305
第3篇 大型網(wǎng)站架構(gòu)實戰(zhàn)案例
第7章 單點登錄系統(tǒng)架構(gòu)設(shè)計308
7.1 單點登錄系統(tǒng)的關(guān)鍵問題308
7.1.1 為什么需要單點登錄系統(tǒng)308
7.1.2 單點登錄系統(tǒng)需要解決的關(guān)鍵問題309
7.2 單點登錄系統(tǒng)的詳細架構(gòu)設(shè)計310
7.2.1 統(tǒng)一的登錄與注冊入口310
7.2.2 與其他子系統(tǒng)共享用戶登錄信息311
7.2.3 集中管理用戶的基本信息312
7.3 小結(jié)313
第8章 媒體庫管理系統(tǒng)架構(gòu)設(shè)計314
8.1 媒體庫管理系統(tǒng)的關(guān)鍵問題314
8.1.1 為什么需要媒體庫管理系統(tǒng)314
8.1.2 媒體庫管理系統(tǒng)需要解決的關(guān)鍵問題315
8.2 媒體庫管理系統(tǒng)的詳細架構(gòu)設(shè)計315
8.2.1 統(tǒng)一的媒體文件上傳入口和資源選擇機制316
8.2.2 媒體文件的刪除機制317
8.2.3 提供自動處理媒體文件等功能318
8.3 小結(jié)319
第9章 直播系統(tǒng)架構(gòu)設(shè)計320
9.1 直播系統(tǒng)的關(guān)鍵問題320
9.1.1 為什么需要直播系統(tǒng)320
9.1.2 直播系統(tǒng)需要解決的關(guān)鍵問題321
9.2 直播系統(tǒng)的詳細架構(gòu)設(shè)計321
9.2.1 明確直播場景321
9.2.2 基礎(chǔ)系統(tǒng)架構(gòu)322
9.2.3 直播流接收323
9.2.4 直播流處理323
9.2.5 直播觀看325
9.3 小結(jié)326
第4篇 未來架構(gòu)的設(shè)想
第10章 未來架構(gòu)328
10.1 理解架構(gòu)328
10.1.1 架構(gòu)是什么328
10.1.2 頂層架構(gòu)332
10.1.3 架構(gòu)與技術(shù)333
10.2 軟件行業(yè)的發(fā)展334
10.2.1 軟件行業(yè)的現(xiàn)狀334
10.2.2 軟件行業(yè)的發(fā)展方向334
10.2.3 不斷發(fā)展的結(jié)局334
10.3 未來架構(gòu)的方向335
10.3.1 人力效率增加335
10.3.2 人力資本轉(zhuǎn)化成物力資本336
10.3.3 物力資本匯聚成生態(tài)337
10.4 小結(jié)338