大型網站技術架構:核心原理與案例分析

大型網站技術架構:核心原理與案例分析

2013年電子工業出版社出版的書籍
《大型網站技術架構:核心原理與案例分析》是2013年9月電子工業出版社出版的圖書,作者是李智慧。[1]該書通過梳理大型網站技術發展曆程,剖析大型網站技術架構模式,深入講述大型互聯網架構設計的核心原理。
  • 書名:大型網站技術架構
  • 出版社:電子工業出版社
  • 定價:64

編輯推薦

本書作者是阿裡巴巴網站構建的親曆者,擁有核心技術部門的一線工作經驗,直接體驗了大型網站構建與發展過程中的種種生與死,蛻與變,見證了一個網站架構從幼稚走向成熟穩定的曆程。

沒有晦澀難懂的術語,沒有诘屈聱牙的文句,沒有故弄玄虛的觀點……

明明白白的語句,清清楚楚的文法,幹淨利落的建議——讓讀者直接體會網站架構的緊要處,不容馬虎的關鍵點——這恰好是一個優秀的網站架構所必備的要素。

如果說“水不在深,有龍則靈”,那麼對于想了解網站架構的讀者而言,這本書恰好是“書不在多,有它則行!”

還猶豫什麼呢?

内容簡介

本書通過梳理大型網站技術發展曆程,剖析大型網站技術架構模式,深入講述大型互聯網架構設計的核心原理,并通過一組典型網站技術架構設計案例,為讀者呈現一幅包括技術選型、架構設計、性能優化、Web 安全、系統發布、運維監控等在内的大型網站開發全景視圖。

本書不僅适用于指導網站工程師、架構師進行網站技術架構設計,也可用于指導産品經理、項目經理、測試運維人員等了解網站技術架構的基礎概念;還可供包括企業系統開發人員在内的各類軟件開發從業人員借鑒,了解大型網站的解決方案和開發理念。

圖書目錄

第1篇 概述

1 大型網站架構演化 2

1.1 大型網站軟件系統的特點 3

1.2 大型網站架構演化發展曆程 4

1.2.1 初始階段的網站架構 4

1.2.2 應用服務和數據服務分離 4

1.2.3 使用緩存改善網站性能 5

1.2.4 使用應用服務器集群改善網站的并發處理能力 6

1.2.5 數據庫讀寫分離 7

1.2.6 使用反向代理和CDN加速網站響應 8

1.2.7 使用分布式文件系統和分布式數據庫系統 9

1.2.8 使用NoSQL和搜索引擎 10

1.2.9 業務拆分 11

1.2.10 分布式服務 11

1.3 大型網站架構演化的價值觀 13

1.3.1 大型網站架構技術的核心價值是随網站所需靈活應對 13

1.3.2 驅動大型網站技術發展的主要力量是網站的業務發展 13

1.4 網站架構設計誤區 14

1.4.1 一味追随大公司的解決方案 14

1.4.2 為了技術而技術 14

1.4.3 企圖用技術解決所有問題 14

1.5 小結 15

2 大型網站架構模式 16

2.1 網站架構模式 16

2.1.1 分層 17

2.1.2 分割 18

2.1.3 分布式 18

2.1.4 集群 19

2.1.5 緩存 20

2.1.6 異步 20

2.1.7 冗餘 21

2.1.8 自動化 22

2.1.9 安全 23

2.2 架構模式在新浪微博的應用 23

2.3 小結 25

3 大型網站核心架構要素 26

3.1 性能 27

3.2 可用性 28

3.3 伸縮性 29

3.4 擴展性 30

3.5 安全性 30

3.6 小結 31

第2篇 架構

4 瞬時響應:網站的高性能架構 34

4.1 網站性能測試 35

4.1.1 不同視角下的網站性能 35

4.1.2 性能測試指标 36

4.1.3 性能測試方法 39

4.1.4 性能測試報告 41

4.1.5 性能優化策略 41

4.2 Web前端性能優化 42

4.2.1 浏覽器訪問優化 42

4.2.2 CDN加速 43

4.2.3 反向代理 44

4.3 應用服務器性能優化 45

4.3.1 分布式緩存 45

4.3.2 異步操作 52

4.3.3 使用集群 53

4.3.4 代碼優化 54

4.4 存儲性能優化 58

4.4.1 機械硬盤vs. 固态硬盤 58

4.4.2 B+樹vs. LSM樹 59

4.4.3 RAID vs. HDFS 61

4.5 小結 64

5 萬無一失:網站的高可用架構 66

5.1 網站可用性的度量與考核 67

5.1.1 網站可用性度量 67

5.1.2 網站可用性考核 67

5.2 高可用的網站架構 69

5.3 高可用的應用 71

5.3.1 通過負載均衡進行無狀态服務的失效轉移 72

5.3.2 應用服務器集群的Session管理 73

5.4 高可用的服務 76

5.5 高可用的數據 78

5.5.1 CAP原理 79

5.5.2 數據備份 82

5.5.3 失效轉移 84

5.6 高可用網站的軟件質量保證 85

5.6.1 網站發布 85

5.6.2 自動化測試 86

5.6.3 預發布驗證 87

5.6.4 代碼控制 88

5.6.5 自動化發布 90

5.6.6 灰度發布 91

5.7 網站運行監控 91

5.7.1 監控數據采集 92

5.7.2 監控管理 93

5.8 小結 94

6 永無止境:網站的伸縮性架構 95

6.1 網站架構的伸縮性設計 97

6.1.1 不同功能進行物理分離實現伸縮 97

6.1.2 單一功能通過集群規模實現伸縮 98

6.2 應用服務器集群的伸縮性設計 99

6.2.1 HTTP重定向負載均衡 100

6.2.2 DNS域名解析負載均衡 101

6.2.3 反向代理負載均衡 102

6.2.4 IP負載均衡 103

6.2.5 數據鍊路層負載均衡 104

6.2.6 負載均衡算法 105

6.3 分布式緩存集群的伸縮性設計 106

6.3.1 Memcached分布式緩存集群的訪問模型 107

6.3.2 Memcached分布式緩存集群的伸縮性挑戰 107

6.3.3 分布式緩存的一緻性Hash算法 109

6.4 數據存儲服務器集群的伸縮性設計 112

6.4.1 關系數據庫集群的伸縮性設計 113

6.4.2 NoSQL數據庫的伸縮性設計 117

6.5 小結 119

7 随需應變:網站的可擴展架構 121

7.1 構建可擴展的網站架構 122

7.2 利用分布式消息隊列降低系統耦合性 123

7.2.1 事件驅動架構 123

7.2.2 分布式消息隊列 124

7.3 利用分布式服務打造可複用的業務平台 126

7.3.1 Web Service與企業級分布式服務 128

7.3.2 大型網站分布式服務的需求與特點 129

7.3.3 分布式服務框架設計 130

7.4 可擴展的數據結構 131

7.5 利用開放平台建設網站生态圈 132

7.6 小結 134

8 固若金湯:網站的安全架構 135

8.1 道高一尺魔高一丈的網站應用攻擊與防禦 136

8.1.1 XSS攻擊 136

8.1.2 注入攻擊 138

8.1.3 CSRF攻擊 139

8.1.4 其他攻擊和漏洞 140

8.1.5 Web應用防火牆 141

8.1.6 網站安全漏洞掃描 142

8.2 信息加密技術及密鑰安全管理 142

8.2.1 單向散列加密 143

8.2.2 對稱加密 144

8.2.3 非對稱加密 144

8.2.4 密鑰安全管理 145

8.3 信息過濾與反垃圾 146

8.3.1 文本匹配 147

8.3.2 分類算法 148

8.3.3 黑名單 149

8.4 電子商務風險控制 150

8.4.1 風險 151

8.4.2 風控 151

8.5 小結 153

第3篇 案例

9 淘寶網的架構演化案例分析 156

9.1 淘寶網的業務發展曆程 157

9.2 淘寶網技術架構演化 158

9.3 小結 162

10 維基百科的高性能架構設計分析 163

10.1 Wikipedia網站整體架構 163

10.2 Wikipedia性能優化策略 165

10.2.1 Wikipedia前端性能優化 165

10.2.2 Wikipedia服務端性能優化 166

10.2.3 Wikipedia後端性能優化 167

11 海量分布式存儲系統Doris的高可用架構設計分析 169

11.1 分布式存儲系統的高可用架構 170

11.2 不同故障情況下的高可用解決方案 171

11.2.1 分布式存儲系統的故障分類 172

11.2.2 正常情況下系統訪問結構 172

11.2.3 瞬時故障的高可用解決方案 173

11.2.4 臨時故障的高可用解決方案 174

11.2.5 永久故障的高可用解決方案 175

12 網購秒殺系統架構設計案例分析 176

12.1 秒殺活動的技術挑戰 177

12.2 秒殺系統的應對策略 177

12.3 秒殺系統架構設計 178

12.4 小結 182

13 大型網站典型故障案例分析 183

13.1 寫日志也會引發故障 184

13.2 高并發訪問數據庫引發的故障 184

13.3 高并發情況下鎖引發的故障 185

13.4 緩存引發的故障 185

13.5 應用啟動不同步引發的故障 186

13.6 大文件讀寫獨占磁盤引發的故障 186

13.7 濫用生産環境引發的故障 187

13.8 不規範的流程引發的故障 187

13.9 不好的編程習慣引發的故障 188

13.10 小結 188

第4篇 架構師

14 架構師領導藝術 190

14.1 關注人而不是産品 191

14.2 發掘人的優秀 191

14.3 共享美好藍圖 192

14.4 共同參與架構 193

14.5 學會妥協 194

14.6 成就他人 194

15 網站架構師職場攻略 196

15.1 發現問題,尋找突破 197

15.2 提出問題,尋求支持 199

15.3 解決問題,達成績效 201

16 漫話網站架構師 203

16.1 按作用劃分架構師 203

16.2 按效果劃分架構師 204

16.3 按職責角色劃分架構師 205

16.4 按關注層次劃分架構師 205

16.5 按口碑劃分架構師 206

16.6 非主流方式劃分架構師 207

附錄A 大型網站架構技術一覽 208

附錄B Web開發技術發展曆程 215

後記 218

精彩節摘

推薦序一

傳統的企業應用系統主要面對的技術挑戰是處理複雜淩亂、千變萬化的所謂業務邏輯,而大型網站主要面對的技術挑戰是處理超大量的用戶訪問和海量的數據處理;前者的挑戰來自功能性需求,後者的挑戰來自非功能性需求;功能性需求也許還有“人月神話”聊以自慰,通過增加人手解決問題,而非功能需求大多是實實在在的技術難題,無論有多少工程師,做不到就是做不到。IT系統應用于企業管理已有超過半個世紀的曆史,人們在這方面積累了大量的知識和經驗(架構模式,領域分析,項目管理),而真正意義上大型網站從出現至今不過短短十多年的時間,很多技術挑戰還在摸索階段。市面上關于傳統企業應用開發的書籍汗牛充棟,而真正能夠深入全面地闡述大型網站技術架構的圖書寥寥無幾。所以很多人就很困惑:為什麼很多看起來不是很複雜的網站,比如 Facebook、淘寶,都需要大量頂尖高手來開發呢?

值得慶幸的是,作者為我們帶來了這本《大型網站技術架構:核心原理與案例分析》,比較全面地闡述了大型網站的主要技術挑戰和解決方案。宏觀層面上,将網站架構的演化發展、架構模式、核心要素一一道來;微觀層面上,将網站架構常用的分布式緩存、負載均衡、消息隊列、分布式服務、甚至網站如何發布運維都逐一進行了闡述。大型網站的技術之道盡在于此。

作者在阿裡巴巴工作期間,一方面參與基礎技術平台産品開發,一方面參與網站架構設計,這些經曆使作者能夠比較全面地從理論和實踐兩個視角去看待和描述網站架構。書中的技術内容基本都從為什麼(Why)要這麼做和如何去做(How)兩個層面進行表述。讀者可知其然并知其所以然。

閱讀本書也許不能使你就此掌握大型網站架構設計的屠龍之術,但至少使你對網站架構的方法和思維方式能有全面了解。

開卷有益,應該指的就是這樣的書。

支付寶研究員 潘磊

推薦序二

這些年互聯網技術蓬勃發展,各種成熟的組件、工具、框架越來越豐富,各種理論逐漸發展成熟,各大公司公開的理論和實踐資料也越來越多,在各個領域都有比較成熟的解決方案,但是研究領先互聯網公司的架構,無論是Google、Facebook、Amazon還是淘寶、支付寶、騰訊、百度,都各有其獨特的地方。

各個環節都有成熟的産品或者方案,為什麼這麼多互聯網公司的架構還有如此明顯的差異呢?是不是照着Google、Facebook、淘寶的架構做,就能做好一個“大型的互聯網應用”呢?

正如本書中所言:“好的設計絕對不是模仿、不是生搬硬套某個模式,而是在對問題深刻理解之上的創造與創新,即使是‘微創新’,也是讓人耳目一新的似曾相識。山寨與創新的最大區别不在于是否抄襲、是否模仿,而在于對問題和需求是否真正理解與把握。”

這些大型的互聯網應用是設計出來的?還是演化出來的?在設計的過程中需要考慮哪些因素?演化過程中都會面臨哪些問題,哪些挑戰?

本書從性能、可用性、伸縮性、擴展性、安全性幾個網站核心架構要素切入,全面地介紹了這些核心要素面臨的問題域、理論基礎及應對方案;對這幾個方面進行系統地分析,結合成熟的解決方案,以及作者自己的工作經驗,理論聯系實際,踏實細緻地提出合理的解決方案,非常值得我們學習和借鑒。

作者還通過對淘寶、Wikipedia、分布式存儲系統、秒殺系統等案例的分析,仔細探讨了典型互聯網架構的演進過程,剖析了分布式系統設計和實現中的挑戰和解決方案,并研究了極端情況下,秒殺給網站帶來的難以預計的瞬間高并發沖擊的應對策略和架構設計。還通過一些實實在在發生過的故障案例分析,從另一個側面來說明,我們在做技術架構時,需要考量的一些關鍵點,這些分享都是不可多得的血淚經驗。

本書觀點明确,涉及的問題域有針對性和全面性,對問題的分析過程清晰,提出的解決方案切實可行,充分結合了成功的互聯網公司的架構經驗,結合了作者豐富的工作經驗,是一本值得行業内人士學習和關注的好書。

作者李智慧在互聯網行業具有豐富的經驗,在阿裡巴巴工作的幾年中擔任架構師,參與過多個重要的項目和産品的架構設計,遇到和處理了很多複雜的問題,在這方面積累了大量的經驗。本書是作者多年的架構師經曆,以及時刻的思考和積累的結晶,一詞一句都是經驗之談,都是智慧的閃亮。

感謝作者耗費精力給我們帶來如此精煉而又内容豐富的一本好書。

支付寶資深架構師 王定乾

作者簡介

李智慧

曾在阿裡巴巴擔任技術專家,參與阿裡巴巴基礎技術平台開發和阿裡巴巴架構設計。

就職英特爾亞太研發中心從事雲計算與大數據方面的研發工作。

媒體評論

這是我看過的最接地氣的一本介紹互聯網架構的書籍,深入闡述了大型網站所面臨的各種架構問題及解決方案,内容通俗易懂,而且對架構師的領導藝術進行了介紹,很值得從事互聯網的技術人員學習和參考。

IBM咨詢經理 種新華

此書讀來親切,能用不到300頁的篇幅将網站架構的過去及未來說得如此通俗易懂,與作者多年的親身實踐分不開,并由此想到一個問題:當此書人手一本的時候,阿裡、騰訊、京東……的面試官們怎麼辦呢?

Oracle資深工程師 付銀海

智慧同學,人如其名,在阿裡巴巴,人稱“教授”,可見其博學多才。《大型網站技術架構:核心原理與案例分析》一書更是其多年積澱厚積薄發之作,涵蓋構建大型互聯網應用所需的關鍵技術,兼具實用性和前瞻性,無論是高并發、高性能還是海量數據處理、Web前端架構,都有針對性的解決之道。尤其難得的是此書還對架構師的内涵及技術管理有比較深刻地闡述,實在是同類書籍中難得一見的。作為互聯網應用的開發者、架構師和創業者的你,一定不要錯過本書,本書足以解決你的技術之憂。

拓維信息平台研發總監 陳斌

教授(本書作者在阿裡巴巴的昵稱)曾在知名的大型互聯網公司第一線浴血多年,經驗不可謂不豐富,然而更難得的是他不僅博聞強記,更用行雲流水的幽默文風,将現代大型互聯網的内部要害一一庖解。也許各家細節略有不同,但大部分的大型互聯網站基本都可以用這樣的視角去解讀。相信本書不僅對程序員,甚至對很多架構師也有參考價值,尤其值得關注的是教授在書中頗多技術之外的考量思索,我願意稱之為互聯網基因。

堆糖網技術合夥人 曹文炯

有幸拜讀了這本《大型網站技術架構:核心原理與案例分析》,本書從多個層面說明了如何構建一個高可用、高性能、高可擴展性的網站系統,并結合了阿裡巴巴及其他互聯網企業先進的架構實踐經驗進行案例分析,講述非常全面且具指導意義。本書從網站的架構設計、快速開發、高效部署、業務監控、服務治理、運維管理等多個角度描述了架構設計的相關重點,涉及的核心技術包括前端優化、CDN、反向代理、緩存、消息隊列、分布式存儲、分布式服務、NoSQL存儲、搜索、監控、安全等一系列保證大型網站安全可靠運行的關鍵技術點。本書還提供了網站如何從小型網站伴随用戶成長,逐步擴展到大型網站的架構演進思路,是互聯網架構師們不可多得的一本技術參考書。

中興通訊總工程師 錢煜明

設計和規劃一個網站的總體架構涉及方方面面的東西,備選的方案也很多,如何在五花八門,紛繁複雜的技術中構建最适合用戶的網站架構,變成了一件極具争議和挑戰性的工作。一個好的架構可以以最低的成本,在滿足用戶需求的同時,滿足整個網站的架構靈活性;同樣,一個糟糕的架構可能會讓你的客戶在花費了大量金錢後,得到一堆笨重、複雜且不切實際的東西,或是由于系統過于複雜,故障不斷,或是由于架構不夠靈活,阻礙業務的發展等等。

回顧網站架構的發展曆程,我們可以發現任何大型網站架構的發展都非一蹴而就的,同自然界生物物競天擇的自然進化規律一樣,大型網站的架構發展和演變也基本遵循着類似的規律。我們可能無法想象幾年後網站架構的樣子,因為在互聯網行業快速變化的當下,你甚至很難準确地預測未來一年網站的産品演變方向,甚至網站流量規模。于是,産品設計師和工程師們提得最多的是叠代和演變,這在一個網站系統架構設計過程中顯得尤為重要,因為我們永遠無法像傳統行業一樣,去精确地估算,并按預先精确設計好的圖紙去完成我們的産品。那是不是網站的架構設計和規劃就毫無規律及章法可循了呢?答案顯然不是,在互聯網快速發展的今天,随着搜索引擎、電子商務、社交類等互聯網産品逐步應用到每個人的身邊,大型網站的架構及很多關鍵技術的發展,在逐步走向成熟。在構建一個大型網站過程中可能面臨一些問題,人們正在嘗試逐漸總結并積累出一些具有通用性的、經過驗證的且成熟的局部解決方案,這也是本書将呈現給大家的内容。本書中,作者以自己多年大型互聯網網站的架構經驗,嘗試總結當下這些互聯網行業中相對成熟且經過大量案例檢驗的技術和方案。

相信通過閱讀本書,您可以一窺大型網站架構的全貌。

阿裡巴巴技術專家 餘俊

循序漸進,娓娓道來,語言生動,舉重若輕。

阿裡雲高級專家 李文

相關詞條

相關搜索

其它詞條