大規(guī)模Web服務(wù)開發(fā)技術(shù)這本書是由日本的Hetena團(tuán)隊(duì)以夏天舉辦的實(shí)習(xí)活動(dòng)的課程講義為基礎(chǔ)整理的開發(fā)、運(yùn)營大規(guī)模服務(wù)的入門書。該書內(nèi)容簡單充實(shí),處處戳中痛點(diǎn)。作者非常樸實(shí),將這本書的定位在小白初窺門徑的手冊(cè)。書中更多的偏重了 Hetena 技術(shù)團(tuán)隊(duì)發(fā)展過程中的實(shí)踐經(jīng)驗(yàn)總結(jié),將一個(gè)系統(tǒng)從無到有的發(fā)展過程有條理的展現(xiàn)了出來。本節(jié)內(nèi)容小編為大家整理帶來的是該書的pdf格式電子版,書籍內(nèi)容完整,雖然是掃描版,但字跡清晰,有需要的朋友點(diǎn)擊本文相應(yīng)的下載地址即可查閱該書的全部內(nèi)容哦!
大規(guī)模web服務(wù)開發(fā)技術(shù)電子書目錄
第1章 大規(guī)模Web服務(wù)的開發(fā)定位——掌握整體 2
第0課 本書的起源——本書講述的范圍 3
從事大規(guī)模Web服務(wù)開發(fā)——面向大學(xué)生的Hatena實(shí)習(xí) 3
本書講述的內(nèi)容 3
本書不講述的內(nèi)容 5
致今后從事大規(guī)模Web服務(wù)的人 5
第1課 大規(guī)模服務(wù)和小規(guī)模服務(wù) 6
Hatena的服務(wù)規(guī)模 6
Hatena是大規(guī)模,Google、Facebook是超大規(guī)模 8
小規(guī)模服務(wù)和大規(guī)模服務(wù)的區(qū)別 9
應(yīng)對(duì)大規(guī)模數(shù)據(jù)量 11
第2課 持續(xù)增長的服務(wù)和大規(guī);恼系K 13
Web服務(wù)的困難 13
Hatena的成長經(jīng)歷 13
系統(tǒng)增長戰(zhàn)略——最小化開端、預(yù)見變化的管理和設(shè)計(jì) 17
第3課 服務(wù)開發(fā)現(xiàn)場 18
Hatena的技術(shù)團(tuán)隊(duì)體制 18
Hatena的溝通方式 19
服務(wù)開發(fā)的實(shí)際狀況 19
開發(fā)所用的工具 21
總結(jié) 23
第2章 大規(guī)模數(shù)據(jù)處理入門
——內(nèi)存和磁盤、Web應(yīng)用程序和負(fù)載 24
第4課 Hatena Bookmark的數(shù)據(jù)規(guī)模 25
以Hatena Bookmark為例介紹大規(guī)模數(shù)據(jù) 25
Hatena Bookmark的數(shù)據(jù)規(guī)模 25
針對(duì)大規(guī)模數(shù)據(jù)的查詢——處理大規(guī)模數(shù)據(jù)的感覺 26
第5課 大規(guī)模數(shù)據(jù)處理的難點(diǎn)——內(nèi)存和磁盤 28
為何處理大規(guī)模數(shù)據(jù)如此困難——因?yàn)闊o法在內(nèi)存中
計(jì)算 28
內(nèi)存和磁盤的速度差異——內(nèi)存要快105~106倍 28
為何磁盤這么慢?——內(nèi)存和磁盤 29
操作系統(tǒng)層的加速處理 31
傳輸速度和總線的速度差異 31
第6課 可擴(kuò)展性的要點(diǎn) 37
擴(kuò)展和可擴(kuò)展性 37
可擴(kuò)展性的要點(diǎn)——CPU負(fù)載和I/O負(fù)載 38
Web應(yīng)用程序和負(fù)載的關(guān)系 38
數(shù)據(jù)庫的可擴(kuò)展性很難保證 39
第7課 處理大規(guī)模數(shù)據(jù)的基礎(chǔ)知識(shí) 44
面向程序員的大規(guī)模數(shù)據(jù)的基礎(chǔ) 44
處理大規(guī)模數(shù)據(jù)的三個(gè)重點(diǎn)——寫程序的技巧 44
處理大規(guī)模數(shù)據(jù)之前的三大前提知識(shí)——程序開發(fā)的
底層基礎(chǔ) 45
第3章 操作系統(tǒng)的緩存和分布式
——高效處理大規(guī)模數(shù)據(jù)的原理 50
第8課 操作系統(tǒng)的緩存機(jī)制 51
在理解操作系統(tǒng)緩存的基礎(chǔ)上編寫應(yīng)用程序——頁面
緩存 51
虛擬內(nèi)存機(jī)制 52
Linux頁面緩存原理 54
VFS 56
Linux以頁面為單位緩存磁盤 57
內(nèi)存空閑時(shí)就緩存——通過sar確認(rèn) 59
增加內(nèi)存降低I/O負(fù)載 60
頁面緩存是透明的 61
第9課 降低I/O負(fù)載的策略 67
以緩存為前提的降低I/O負(fù)載的策略 67
擴(kuò)展到多臺(tái)服務(wù)器——無法全部緩存的情況 68
單純?cè)黾訑?shù)量無法保證可擴(kuò)展性 69
第10課 利用局部性的分布式 74
什么是利用局部性的分布式? 74
Partitioning——考慮局部性的分布式 75
根據(jù)訪問模式分割成“島”——考慮局部性的分布式 78
以頁面緩存為前提的基本應(yīng)用規(guī)則 79
第4章 數(shù)據(jù)庫的橫向擴(kuò)展策略
——以分布式為基礎(chǔ)的MySQL應(yīng)用 82
第11課 正確應(yīng)用索引
——分布式MySQL應(yīng)用的大前提 83
分布式MySQL應(yīng)用的三大要點(diǎn) 83
靈活應(yīng)用操作系統(tǒng)緩存 83
索引的重點(diǎn)——B樹 86
索引的效果 89
確認(rèn)索引是否有效的方法——explain命令 92
第12課 MySQL的分布式
——以擴(kuò)展為前提的系統(tǒng)設(shè)計(jì) 95
MySQL的replication功能 95
master/slave的特征——對(duì)參照系進(jìn)行擴(kuò)展,更新類
不擴(kuò)展 96
第13課 MySQL的橫向擴(kuò)展和Partitioning 99
MySQL的橫向擴(kuò)展策略 99
關(guān)于Partitioning(表分割)的補(bǔ)充 99
以Partitioning為前提的設(shè)計(jì) 99
避免JOIN——利用where…in… 102
Partitioning的代價(jià) 103
第2~4章的小結(jié) 107
第5章 大規(guī)模數(shù)據(jù)處理“實(shí)踐”入門
——應(yīng)用程序開發(fā)的重點(diǎn) 108
第14課 特殊用途索引——處理大規(guī)模數(shù)據(jù) 109
索引和系統(tǒng)架構(gòu)——超過RDBMS的處理能力時(shí) 109
特殊用途索引——使用調(diào)優(yōu)后的數(shù)據(jù)結(jié)構(gòu) 111
第15課 理論聯(lián)系實(shí)踐 115
探尋必須的技術(shù)條件 115
第2~5章小結(jié) 117
第6章 壓縮編程
——考慮數(shù)據(jù)大小和I/O加速之間的關(guān)系 118
第16課 [課題]以緊湊、簡潔方式保存整數(shù)數(shù)據(jù) 119
以緊湊方式保存整數(shù)數(shù)據(jù) 119
出題意圖——解決該課題有什么好處? 119
課題所用文件的內(nèi)容 121
第17課 可變字節(jié)碼和速度的感覺 122
可變字節(jié)碼——用緊湊格式保存整數(shù)數(shù)據(jù) 122
可變字節(jié)碼的偽代碼 123
用“差”存儲(chǔ)已排序整數(shù) 126
(補(bǔ)充)壓縮的基礎(chǔ) 126
(補(bǔ)充)壓縮對(duì)象是整數(shù)的情形——背景理論 127
第18課 課題詳解及解答范例 129
課題詳解 129
(參考)pack()函數(shù)——將Perl內(nèi)部數(shù)據(jù)結(jié)構(gòu)以
二進(jìn)制形式輸出 131
(參考)二進(jìn)制數(shù)據(jù)的read/write 133
(參考)性能分析 135
解答范例和思路 136
第7章 算法實(shí)用化
——從身邊的例子來看理論、研究的實(shí)踐投入 142
第19課 算法和算法評(píng)測 143
數(shù)據(jù)規(guī)模和復(fù)雜度的差異 143
何謂算法? 144
學(xué)習(xí)算法的意義——計(jì)算機(jī)資源有限,工程師的通用
語言 145
算法評(píng)測——復(fù)雜度記法 146
紙巾能折疊幾次?——O(logn)和O(n)的差距 148
算法和數(shù)據(jù)結(jié)構(gòu)——千絲萬縷的聯(lián)系 149
復(fù)雜度和常數(shù)項(xiàng)——評(píng)測很重要 150
應(yīng)用算法的實(shí)際情況——簡單就是美 151
靈活應(yīng)用第三方實(shí)現(xiàn)——CPAN等 153
通過實(shí)例加深感受 155
第20課 Hatena Diary的關(guān)鍵字鏈接 156
什么是關(guān)鍵字鏈接? 156
最初的實(shí)現(xiàn) 156
出問題了!——關(guān)鍵字字典越來越大 157
用模式匹配實(shí)現(xiàn)關(guān)鍵字鏈接的問題 158
從正則表達(dá)式到Trie——改變匹配的實(shí)現(xiàn)方式 158
Aho-Corasick算法 160
換成Regexp::List 162
關(guān)鍵字鏈接的實(shí)現(xiàn)、變遷和考察 163
第21課 Hatena Bookmark的文章分類 164
什么是文章分類? 164
機(jī)器學(xué)習(xí)和大規(guī)模數(shù)據(jù) 165
大規(guī)模數(shù)據(jù)和Web服務(wù)——The Google Way of Science 166
貝葉斯過濾器的原理 167
算法實(shí)用化之路——Hatena Bookmark的實(shí)例 170
防守姿態(tài)和進(jìn)攻姿態(tài)——從文檔分類功能說開去 171
第8章 Hatena關(guān)鍵字鏈接的實(shí)現(xiàn)
——理解通向應(yīng)用之路 176
第22課 [課題]創(chuàng)建Hatena關(guān)鍵字鏈接 177
使用Aho-Corasick算法創(chuàng)建Hatena關(guān)鍵字鏈接 177
編寫測試 180
第23課 解答范例和思路 182
解答范例 182
第9章 挑戰(zhàn)全文搜索技術(shù)
——各種各樣的大規(guī)模數(shù)據(jù)處理經(jīng)驗(yàn)技巧 184
第24課 全文搜索技術(shù)的應(yīng)用范圍 185
用Hatena的數(shù)據(jù)創(chuàng)建搜索引擎 185
Hatena Diray的全文搜索——搜索服務(wù)之外的搜索
系統(tǒng) 185
Hatena Bookmark的全文搜索——滿足細(xì)節(jié)要求的系統(tǒng) 187
第25課 搜索系統(tǒng)的架構(gòu) 190
搜索系統(tǒng)所需的步驟 190
各種各樣的搜索引擎 191
全文搜索的種類 193
第26課 搜索引擎的內(nèi)部結(jié)構(gòu) 198
逆向索引的結(jié)構(gòu)——Dictionary+Postings 198
Dictionary的創(chuàng)建方法——逆向索引的創(chuàng)建方法 200
小結(jié) 210
Postings的創(chuàng)建方法——逆向索引的創(chuàng)建方法 211
關(guān)于評(píng)分的補(bǔ)充 213
參考文獻(xiàn) 214
第10章 創(chuàng)建全文搜索引擎
——基本部分、改進(jìn)、速度和準(zhǔn)確度的要求 216
第27課 [課題]創(chuàng)建Hatena Bookmark全文搜索 217
開發(fā)全文搜索引擎 217
課題內(nèi)容 217
示例數(shù)據(jù)格式和數(shù)據(jù)大小 218
字典的組成——Dictionary、Postings 219
界面 220
基礎(chǔ)部分+改進(jìn) 220
以速度和準(zhǔn)確度一決勝負(fù) 221
第28課 答案范例和思路 223
解答范例 223
indexer.pl的實(shí)現(xiàn) 223
searcher.pl的實(shí)現(xiàn) 225
可以改善的地方 227
第11章 支持大規(guī)模數(shù)據(jù)處理的服務(wù)器/基礎(chǔ)設(shè)施入門
—— Web服務(wù)的后臺(tái) 230
第29課 企業(yè)軟件vs. Web服務(wù) 231
企業(yè)軟件vs. Web服務(wù)——應(yīng)用范圍上的差異 231
Web服務(wù)的基礎(chǔ)設(shè)施——三個(gè)重點(diǎn) 233
第30課 云vs.自行構(gòu)建基礎(chǔ)設(shè)施 235
云計(jì)算 235
云的優(yōu)缺點(diǎn) 235
Hatena應(yīng)用的云服務(wù) 236
自行構(gòu)筑基礎(chǔ)設(shè)施的優(yōu)點(diǎn) 237
自行構(gòu)建基礎(chǔ)設(shè)施和垂直結(jié)合模型 239
Hatena的服務(wù)規(guī)模 240
Hatena Bookmark的系統(tǒng)架構(gòu)圖 240
第12章 保證可擴(kuò)展性的必要思路
——規(guī)模擴(kuò)大和系統(tǒng)擴(kuò)展 242
第31課 層和可擴(kuò)展性 243
對(duì)可擴(kuò)展性的要求——一臺(tái)服務(wù)器能處理的流量極限 243
各層的可擴(kuò)展性 244
第32課 掌握負(fù)載進(jìn)行調(diào)優(yōu) 245
掌握負(fù)載——可視化的管理界面 245
測量負(fù)載的指標(biāo)——平均負(fù)載、內(nèi)存和CPU相關(guān)信息 247
根據(jù)用途進(jìn)行調(diào)優(yōu)——面向用戶的服務(wù)器和面向爬蟲
的服務(wù)器 247
應(yīng)用程序服務(wù)器、數(shù)據(jù)庫服務(wù)器的調(diào)優(yōu)策略和服務(wù)器
數(shù)量 249
服務(wù)規(guī)模和調(diào)優(yōu) 250
保證可擴(kuò)展性 251
第13章 保證冗余性和系統(tǒng)的穩(wěn)定化
——實(shí)現(xiàn)100%在線率的原理 252
第33課 保證冗余性 253
保證冗余性——應(yīng)用程序服務(wù)器 253
保證冗余性——數(shù)據(jù)庫服務(wù)器 254
保證冗余性——存儲(chǔ)服務(wù)器 257
第34課 系統(tǒng)穩(wěn)定化 261
保持系統(tǒng)穩(wěn)定的權(quán)衡 261
系統(tǒng)的不穩(wěn)定因素 262
第35課 系統(tǒng)穩(wěn)定對(duì)策 267
實(shí)際的系統(tǒng)穩(wěn)定對(duì)策——維持適當(dāng)余量,消滅不穩(wěn)定
因素 267
第14章 提高效率
——提高硬件資源的使用率 270
第36課 虛擬化技術(shù) 271
引入虛擬化技術(shù) 271
虛擬化技術(shù)的效果 272
虛擬服務(wù)器的構(gòu)建策略 273
總結(jié)虛擬化的優(yōu)勢(shì) 275
虛擬化和運(yùn)營——通過服務(wù)器管理工具在運(yùn)營上發(fā)揮
虛擬化的優(yōu)勢(shì) 276
虛擬化的注意點(diǎn) 277
第37課 硬件和提高效率
——實(shí)現(xiàn)低成本的關(guān)鍵技術(shù) 280
提高處理器性能 280
內(nèi)存和硬盤成本下降 281
有效利用廉價(jià)硬件——以虛擬化為前提的硬件應(yīng)用 282
SSD 284
第15章 Web服務(wù)和網(wǎng)絡(luò)
——通過網(wǎng)絡(luò)看服務(wù)增長 288
第38課 網(wǎng)絡(luò)的分界點(diǎn) 289
服務(wù)增長和網(wǎng)絡(luò)的分界點(diǎn) 289
1Gbps的極限——PC路由器的極限 289
500臺(tái)主機(jī)的極限——子網(wǎng)、ARP表的極限 290
網(wǎng)絡(luò)架構(gòu)的層次化 291
全球化 292
第39課 挑戰(zhàn)更高的極限 295
超越10Gbps的世界 295
Hatena的基礎(chǔ)設(shè)施——第11~15章的總結(jié) 296
第16章 特別篇 當(dāng)前構(gòu)建Web服務(wù)需要的實(shí)踐技術(shù)
——應(yīng)對(duì)大規(guī)模Web服務(wù)須知 298
特別篇第1課 作業(yè)隊(duì)列系統(tǒng)TheSchwartz、Gearman 299
Web服務(wù)和請(qǐng)求 299
作業(yè)隊(duì)列系統(tǒng)入門 299
Hatena的作業(yè)隊(duì)列系統(tǒng) 300
通過日志進(jìn)行分析 302
特別篇第2課 存儲(chǔ)方式的選擇RDBMS還是
key-value存儲(chǔ) 303
如何保存不斷增加的數(shù)據(jù) 303
選擇存儲(chǔ)系統(tǒng)的前提條件 304
存儲(chǔ)系統(tǒng)的種類 305
RDBMS 305
分布式key-value存儲(chǔ) 308
分布式文件系統(tǒng) 310
其他存儲(chǔ) 312
存儲(chǔ)系統(tǒng)的選擇策略 314
特別篇第3課 緩存系統(tǒng)——Squid、Varnish 315
Web應(yīng)用程序負(fù)載與代理/緩存系統(tǒng) 315
Squid——基本結(jié)構(gòu) 317
Varnish 321
特別篇第4課 計(jì)算集群——Hadoop 323
大量日志數(shù)據(jù)的并行處理 323
MapReduce計(jì)算模型 323
Hadoop 325
索引 327
大規(guī)模web服務(wù)開發(fā)技術(shù)作者簡介
伊藤直也(Naoya Ito)
Hatena株式會(huì)社董事兼CTO。合著作有《BlogHacks(0‘Reilly Japan)、《“24小時(shí)365天”服務(wù)器/基礎(chǔ)設(shè)施的支撐技術(shù)》(技術(shù)評(píng)論社)。曾獲情報(bào)處理學(xué)會(huì)主辦的“Software Japan 2009”的Software JapanAward獎(jiǎng),以及“樂天Technical Conference 2008”的Technology Award銀獎(jiǎng)。
田中慎司(Shinji Tanaka)
Hatena株式會(huì)社董事,信息學(xué)博士。合著有《“24小時(shí)365天”服務(wù)器/基礎(chǔ)設(shè)施的支撐技術(shù)》(技術(shù)評(píng)論社)一書,還主持過多本著作的翻譯。支撐著Hatena服務(wù)器的是由600多臺(tái)服務(wù)器構(gòu)成的系統(tǒng),現(xiàn)在這一系統(tǒng)的性能及設(shè)備運(yùn)維由他全權(quán)負(fù)責(zé)。
大規(guī)模web服務(wù)開發(fā)技術(shù)內(nèi)容簡介
Hatena是日本最大的Web服務(wù)提供商之一,它提供的服務(wù)包括關(guān)鍵字(類似于維基百科)、博客、相冊(cè)等!洞笠(guī)模Web服務(wù)開發(fā)技術(shù)》由伊藤直也、田中慎司所著,內(nèi)容主要來自Hatena為學(xué)生們舉行的暑期實(shí)習(xí)的課程,內(nèi)容涵蓋廣泛,介紹了性能優(yōu)化、分布式、算法、系統(tǒng)架構(gòu)等各個(gè)方面,甚至還介紹了硬件的經(jīng)濟(jì)成本,是運(yùn)維工程師們必不可少的參考書。書中還包括幾個(gè)算法實(shí)習(xí)課題,介紹了壓縮算法、全文搜索等算法的實(shí)現(xiàn)方法,對(duì)于打算靠Web創(chuàng)業(yè)的人不失為一本很不錯(cuò)的參考書。
大規(guī)模web服務(wù)開發(fā)技術(shù)電子書內(nèi)容截圖
- PC官方版
- 安卓官方手機(jī)版
- IOS官方手機(jī)版