NO IMAGE

下載地址:網盤下載

編輯推薦

編輯

本書作者是阿里巴巴網站構建的親歷者,擁有核心技術部門的一線工作經驗,直接體驗了大型網站構建與發展過程中的種種生與死,蛻與變,見證了一個網站架構從幼稚走向成熟穩定的歷程。
沒有晦澀難懂的術語,沒有詰屈聱牙的文句,沒有故弄玄虛的觀點……
明明白白的語句,清清楚楚的文法,乾淨利落的建議——讓讀者直接體會網站架構的緊要處,不容馬虎的關鍵點——這恰好是一個優秀的網站架構所必備的要素。
如果說“水不在深,有龍則靈”,那麼對於想了解網站架構的讀者而言,這本書恰好是“書不在多,有它則行!”
還猶豫什麼呢?[1] 

內容簡介

編輯

本書通過梳理大型網站技術發展歷程,剖析大型網站技術架構模式,深入講述大型網際網路架構設計的核心原理,並通過一組典型網站技術架構設計案例,為讀者呈現一幅包括技術選型、架構設計、效能優化、Web 安全、系統釋出、運維監控等在內的大型網站開發全景檢視。
本書不僅適用於指導網站工程師、架構師進行網站技術架構設計,也可用於指導產品經理、專案經理、測試運維人員等了解網站技術架構的基礎概念;還可供包括企業系統開發人員在內的各類軟體開發從業人員借鑑,瞭解大型網站的解決方案和開發理念。[1] 

圖書目錄

編輯

第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.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.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[2] 

精彩節摘

編輯

推薦序一
傳統的企業應用系統主要面對的技術挑戰是處理複雜凌亂、千變萬化的所謂業務邏輯,而大型網站主要面對的技術挑戰是處理超大量的使用者訪問和海量的資料處理;前者的挑戰來自功能性需求,後者的挑戰來自非功能性需求;功能性需求也許還有“人月神話”聊以自慰,通過增加人手解決問題,而非功能需求大多是實實在在的技術難題,無論有多少工程師,做不到就是做不到。IT系統應用於企業管理已有超過半個世紀的歷史,人們在這方面積累了大量的知識和經驗(架構模式,領域分析,專案管理),而真正意義上大型網站從出現至今不過短短十多年的時間,很多技術挑戰還在摸索階段。市面上關於傳統企業應用開發的書籍汗牛充棟,而真正能夠深入全面地闡述大型網站技術架構的圖書寥寥無幾。所以很多人就很困惑:為什麼很多看起來不是很複雜的網站,比如
Facebook、淘寶,都需要大量頂尖高手來開發呢?
值得慶幸的是,作者為我們帶來了這本《大型網站技術架構:核心原理與案例分析》,比較全面地闡述了大型網站的主要技術挑戰和解決方案。巨集觀層面上,將網站架構的演化發展、架構模式、核心要素一一道來;微觀層面上,將網站架構常用的分散式快取、負載均衡訊息佇列、分散式服務、甚至網站如何釋出運維都逐一進行了闡述。大型網站的技術之道盡在於此。
作者在阿里巴巴工作期間,一方面參與基礎技術平臺產品開發,一方面參與網站架構設計,這些經歷使作者能夠比較全面地從理論和實踐兩個視角去看待和描述網站架構。書中的技術內容基本都從為什麼(Why)要這麼做和如何去做(How)兩個層面進行表述。讀者可知其然並知其所以然。
閱讀本書也許不能使你就此掌握大型網站架構設計的屠龍之術,但至少使你對網站架構的方法和思維方式能有全面瞭解。
開卷有益,應該指的就是這樣的書。
支付寶研究員 潘磊
推薦序二
這些年網際網路技術蓬勃發展,各種成熟的元件、工具、框架越來越豐富,各種理論逐漸發展成熟,各大公司公開的理論和實踐資料也越來越多,在各個領域都有比較成熟的解決方案,但是研究領先網際網路公司的架構,無論是Google、Facebook、Amazon還是淘寶、支付寶、騰訊、百度,都各有其獨特的地方。
各個環節都有成熟的產品或者方案,為什麼這麼多網際網路公司的架構還有如此明顯的差異呢?是不是照著Google、Facebook、淘寶的架構做,就能做好一個“大型的網際網路應用”呢?
正如本書中所言:“好的設計絕對不是模仿、不是生搬硬套某個模式,而是在對問題深刻理解之上的創造與創新,即使是‘微創新’,也是讓人耳目一新的似曾相識。山寨與創新的最大區別不在於是否抄襲、是否模仿,而在於對問題和需求是否真正理解與把握。”
這些大型的網際網路應用是設計出來的?還是演化出來的?在設計的過程中需要考慮哪些因素?演化過程中都會面臨哪些問題,哪些挑戰?
本書從效能、可用性、伸縮性、擴充套件性、安全性幾個網站核心架構要素切入,全面地介紹了這些核心要素面臨的問題域、理論基礎及應對方案;對這幾個方面進行系統地分析,結合成熟的解決方案,以及作者自己的工作經驗,理論聯絡實際,踏實細緻地提出合理的解決方案,非常值得我們學習和借鑑。
作者還通過對淘寶、Wikipedia、分散式儲存系統、秒殺系統等案例的分析,仔細探討了典型網際網路架構的演進過程,剖析了分散式系統設計和實現中的挑戰和解決方案,並研究了極端情況下,秒殺給網站帶來的難以預計的瞬間高併發衝擊的應對策略和架構設計。還通過一些實實在在發生過的故障案例分析,從另一個側面來說明,我們在做技術架構時,需要考量的一些關鍵點,這些分享都是不可多得的血淚經驗。
本書觀點明確,涉及的問題域有針對性和全面性,對問題的分析過程清晰,提出的解決方案切實可行,充分結合了成功的網際網路公司的架構經驗,結合了作者豐富的工作經驗,是一本值得行業內人士學習和關注的好書。
作者李智慧在網際網路行業具有豐富的經驗,在阿里巴巴工作的幾年中擔任架構師,參與過多個重要的專案和產品的架構設計,遇到和處理了很多複雜的問題,在這方面積累了大量的經驗。本書是作者多年的架構師經歷,以及時刻的思考和積累的結晶,一詞一句都是經驗之談,都是智慧的閃亮。
感謝作者耗費精力給我們帶來如此精煉而又內容豐富的一本好書。
支付寶資深架構師 王定乾
作者簡介
李智慧
曾在阿里巴巴擔任技術專家,參與阿里巴巴基礎技術平臺開發和阿里巴巴架構設計。
就職英特爾亞太研發中心從事雲端計算與大資料方面的研發工作。[2] 

媒體評論

編輯

這是我看過的最接地氣的一本介紹網際網路架構的書籍,深入闡述了大型網站所面臨的各種架構問題及解決方案,內容通俗易懂,而且對架構師的領導藝術進行了介紹,很值得從事網際網路的技術人員學習和參考。
IBM諮詢經理 種新華
此書讀來親切,能用不到300頁的篇幅將網站架構的過去及未來說得如此通俗易懂,與作者多年的親身實踐分不開,並由此想到一個問題:當此書人手一本的時候,阿里、騰訊、京東……的面試官們怎麼辦呢?
Oracle資深工程師 付銀海
智慧同學,人如其名,在阿里巴巴,人稱“教授”,可見其博學多才。《大型網站技術架構:核心原理與案例分析》一書更是其多年積澱厚積薄發之作,涵蓋構建大型網際網路應用所需的關鍵技術,兼具實用性和前瞻性,無論是高併發、高效能還是海量資料處理、Web前端架構,都有針對性的解決之道。尤其難得的是此書還對架構師的內涵及技術管理有比較深刻地闡述,實在是同類書籍中難得一見的。作為網際網路應用的開發者、架構師和創業者的你,一定不要錯過本書,本書足以解決你的技術之憂。
拓維資訊平臺研發總監 陳斌
教授(本書作者在阿里巴巴的暱稱)曾在知名的大型網際網路公司第一線浴血多年,經驗不可謂不豐富,然而更難得的是他不僅博聞強記,更用行雲流水的幽默文風,將現代大型網際網路的內部要害一一庖解。也許各家細節略有不同,但大部分的大型網際網路站基本都可以用這樣的視角去解讀。相信本書不僅對程式設計師,甚至對很多架構師也有參考價值,尤其值得關注的是教授在書中頗多技術之外的考量思索,我願意稱之為網際網路基因。
堆糖網技術合夥人 曹文炯
有幸拜讀了這本《大型網站技術架構:核心原理與案例分析》,本書從多個層面說明了如何構建一個高可用、高效能、高可擴充套件性的網站系統,並結合了阿里巴巴及其他網際網路企業先進的架構實踐經驗進行案例分析,講述非常全面且具指導意義。本書從網站的架構設計、快速開發、高效部署、業務監控、服務治理、運維管理等多個角度描述了架構設計的相關重點,涉及的核心技術包括前端優化、CDN、反向代理、快取、訊息佇列分散式儲存、分散式服務、NoSQL儲存、搜尋、監控、安全等一系列保證大型網站安全可靠執行的關鍵技術點。本書還提供了網站如何從小型網站伴隨使用者成長,逐步擴充套件到大型網站的架構演進思路,是網際網路架構師們不可多得的一本技術參考書。
中興通訊總工程師 錢煜明
設計和規劃一個網站的總體架構涉及方方面面的東西,備選的方案也很多,如何在五花八門,紛繁複雜的技術中構建最適合使用者的網站架構,變成了一件極具爭議和挑戰性的工作。一個好的架構可以以最低的成本,在滿足使用者需求的同時,滿足整個網站的架構靈活性;同樣,一個糟糕的架構可能會讓你的客戶在花費了大量金錢後,得到一堆笨重、複雜且不切實際的東西,或是由於系統過於複雜,故障不斷,或是由於架構不夠靈活,阻礙業務的發展等等。
回顧網站架構的發展歷程,我們可以發現任何大型網站架構的發展都非一蹴而就的,同自然界生物物競天擇的自然進化規律一樣,大型網站的架構發展和演變也基本遵循著類似的規律。我們可能無法想象幾年後網站架構的樣子,因為在網際網路行業快速變化的當下,你甚至很難準確地預測未來一年網站的產品演變方向,甚至網站流量規模。於是,產品設計師和工程師們提得最多的是迭代和演變,這在一個網站系統架構設計過程中顯得尤為重要,因為我們永遠無法像傳統行業一樣,去精確地估算,並按預先精確設計好的圖紙去完成我們的產品。那是不是網站的架構設計和規劃就毫無規律及章法可循了呢?答案顯然不是,在網際網路快速發展的今天,隨著搜尋引擎、電子商務、社交類等網際網路產品逐步應用到每個人的身邊,大型網站的架構及很多關鍵技術的發展,在逐步走向成熟。在構建一個大型網站過程中可能面臨一些問題,人們正在嘗試逐漸總結並積累出一些具有通用性的、經過驗證的且成熟的區域性解決方案,這也是本書將呈現給大家的內容。本書中,作者以自己多年大型網際網路網站的架構經驗,嘗試總結當下這些網際網路行業中相對成熟且經過大量案例檢驗的技術和方案。
相信通過閱讀本書,您可以一窺大型網站架構的全貌。
阿里巴巴技術專家 餘俊
循序漸進,娓娓道來,語言生動,舉重若輕。
阿里雲高階專家 李文兆[1] 

下載地址:網盤下載