-
>
決戰(zhàn)行測(cè)5000題(言語(yǔ)理解與表達(dá))
-
>
軟件性能測(cè)試.分析與調(diào)優(yōu)實(shí)踐之路
-
>
第一行代碼Android
-
>
深度學(xué)習(xí)
-
>
Unreal Engine 4藍(lán)圖完全學(xué)習(xí)教程
-
>
深入理解計(jì)算機(jī)系統(tǒng)-原書第3版
-
>
Word/Excel PPT 2013辦公應(yīng)用從入門到精通-(附贈(zèng)1DVD.含語(yǔ)音視頻教學(xué)+辦公模板+PDF電子書)
深入淺出大型網(wǎng)站架構(gòu)設(shè)計(jì) 版權(quán)信息
- ISBN:9787121353970
- 條形碼:9787121353970 ; 978-7-121-35397-0
- 裝幀:平裝-膠訂
- 冊(cè)數(shù):暫無(wú)
- 重量:暫無(wú)
- 所屬分類:>>
深入淺出大型網(wǎng)站架構(gòu)設(shè)計(jì) 本書特色
為了幫助有一定編程基礎(chǔ)的讀者快速了解如何以職業(yè)標(biāo)準(zhǔn)開(kāi)發(fā)一個(gè)網(wǎng)站,本書從架構(gòu)設(shè)計(jì)的角度出發(fā),涵蓋了以高性能、高可用、高并發(fā)等多個(gè)業(yè)內(nèi)標(biāo)準(zhǔn)為目標(biāo)的網(wǎng)站設(shè)計(jì)和建設(shè)手段,并在每個(gè)方面追本溯源,從理論方法到生產(chǎn)實(shí)踐,在力求簡(jiǎn)明易懂、適用于盡可能多的場(chǎng)合的前提下深入到實(shí)踐中,為讀者提供實(shí)用操作指南。同時(shí),本書對(duì)所有出現(xiàn)的概念都作了簡(jiǎn)明扼要的解釋,并對(duì)介紹的手段和方案不僅解釋了如何做,也解釋了來(lái)源和選擇理由,使得讀者在理解內(nèi)容并能應(yīng)用的同時(shí),也能理解這些手段背后的思路,將來(lái)亦可脫離書本,作出屬于自己的創(chuàng)新方案,真正做到了授人以魚(yú)不如授人以漁。
深入淺出大型網(wǎng)站架構(gòu)設(shè)計(jì) 內(nèi)容簡(jiǎn)介
為了幫助有一定編程基礎(chǔ)的讀者快速了解如何以職業(yè)標(biāo)準(zhǔn)開(kāi)發(fā)一個(gè)網(wǎng)站,本書從架構(gòu)設(shè)計(jì)的角度出發(fā),涵蓋了以高性能、高可用、高并發(fā)等多個(gè)業(yè)內(nèi)標(biāo)準(zhǔn)為目標(biāo)的網(wǎng)站設(shè)計(jì)和建設(shè)手段,并在每個(gè)方面追本溯源,從理論方法到生產(chǎn)實(shí)踐,在力求簡(jiǎn)明易懂、適用于盡可能多的場(chǎng)合的前提下深入到實(shí)踐中,為讀者提供實(shí)用操作指南。同時(shí),本書對(duì)所有出現(xiàn)的概念都作了簡(jiǎn)明扼要的解釋,并對(duì)介紹的手段和方案不僅解釋了如何做,也解釋了來(lái)源和選擇理由,使得讀者在理解內(nèi)容并能應(yīng)用的同時(shí),也能理解這些手段背后的思路,將來(lái)亦可脫離書本,作出屬于自己的創(chuàng)新方案,真正做到了授人以魚(yú)不如授人以漁。
深入淺出大型網(wǎng)站架構(gòu)設(shè)計(jì) 目錄
第1 章 網(wǎng)站架構(gòu)概述 1
1.1 網(wǎng)站的基本組件 1
1.2 網(wǎng)站業(yè)務(wù)規(guī)模增長(zhǎng)帶來(lái)的問(wèn)題 2
1.3 大型網(wǎng)站架構(gòu)設(shè)計(jì)的目標(biāo)和原則 4
1.3.1 高性能 4
1.3.2 高可用 5
1.3.3 伸縮性 6
1.3.4 擴(kuò)展性 7
第2 章 大型網(wǎng)站架構(gòu)設(shè)計(jì)的流程 9
2.1 需求分析 9
2.1.1 需求驅(qū)動(dòng)的重要性 9
2.1.2 如何根據(jù)需求制定系統(tǒng)目標(biāo) 10
2.2 方案設(shè)計(jì) 11
2.2.1 與架構(gòu)設(shè)計(jì)原則相結(jié)合 11
2.2.2 設(shè)計(jì)多套備選方案 12
2.3 方案評(píng)估 13
第3 章 數(shù)據(jù)庫(kù)的選擇 15
3.1 關(guān)系數(shù)據(jù)庫(kù) 15
3.1.1 什么是關(guān)系數(shù)據(jù)庫(kù) 16
3.1.2 關(guān)系數(shù)據(jù)庫(kù)的優(yōu)勢(shì)和應(yīng)用場(chǎng)景 17
3.2 非關(guān)系數(shù)據(jù)庫(kù) 18
3.2.1 什么是非關(guān)系數(shù)據(jù)庫(kù) 18
3.2.2 非關(guān)系數(shù)據(jù)庫(kù)的優(yōu)勢(shì)和應(yīng)用場(chǎng)景 19
3.3 常見(jiàn)的關(guān)系數(shù)據(jù)庫(kù)產(chǎn)品 20
3.3.1 MySQL 20
3.3.2 MS SQL Server 21
3.3.3 Oracle 22
3.4 常見(jiàn)的非關(guān)系數(shù)據(jù)庫(kù)產(chǎn)品 22
3.4.1 MongoDB 23
3.4.2 DynamoDB 23
3.5 云數(shù)據(jù)庫(kù) 23
第4 章 數(shù)據(jù)庫(kù)優(yōu)化:分庫(kù)分表 25
4.1 什么是分庫(kù)分表 25
4.1.1 分庫(kù) 25
4.1.2 分表 26
4.2 為什么要進(jìn)行分庫(kù)分表 27
4.2.1 吞吐量 27
4.2.2 索引 27
4.2.3 備份 28
4.2.4 其他風(fēng)險(xiǎn) 28
4.3 實(shí)現(xiàn)分庫(kù)分表 28
4.3.1 垂直分庫(kù)分表 29
4.3.2 水平分庫(kù)分表 30
4.4 分庫(kù)分表帶來(lái)的問(wèn)題 32
4.4.1 全局唯一ID 32
4.4.2 關(guān)系數(shù)據(jù)庫(kù)的部分操作 33
4.4.3 事務(wù)支持 33
第5 章 數(shù)據(jù)庫(kù)優(yōu)化:讀寫分離 34
5.1 什么是讀寫分離 34
5.2 為什么要使用讀寫分離 35
5.2.1 何時(shí)需要使用讀寫分離 35
5.2.2 讀寫分離的好處 36
5.3 實(shí)現(xiàn)讀寫分離 37
5.3.1 中間件實(shí)現(xiàn) 37
5.3.2 應(yīng)用層實(shí)現(xiàn) 38
5.4 讀寫分離帶來(lái)的問(wèn)題 39
5.4.1 副本的實(shí)時(shí)性 39
5.4.2 副本實(shí)時(shí)性的解決方案 39
5.4.3 成本問(wèn)題 40
第6 章 緩存 41
6.1 什么是緩存 41
6.2 緩存策略 42
6.2.1 LFU 緩存策略 42
6.2.2 LRU 緩存策略 43
6.2.3 緩存策略的優(yōu)劣 43
6.3 緩存命中率 44
6.4 緩存的類型 44
6.4.1 客戶端緩存 44
6.4.2 CDN 緩存 45
6.4.3 應(yīng)用緩存 45
6.4.4 基于分布式集群的緩存 45
6.5 分布式緩存 46
6.5.1 分布式緩存的應(yīng)用場(chǎng)景 46
6.5.2 分布式緩存的架構(gòu)設(shè)計(jì) 47
6.6 緩存的問(wèn)題 47
6.6.1 緩存過(guò)熱 47
6.6.2 緩存穿透 48
6.6.3 緩存雪崩 48
6.7 常見(jiàn)的緩存系統(tǒng) 49
6.7.1 MemCached 49
6.7.2 Redis 49
第7 章 動(dòng)靜分離 50
7.1 動(dòng)靜分離 50
7.1.1 動(dòng)態(tài)數(shù)據(jù)和靜態(tài)數(shù)據(jù) 50
7.1.2 動(dòng)靜分離的概念 52
7.1.3 動(dòng)靜分離的作用 53
7.2 拆分動(dòng)態(tài)數(shù)據(jù)和靜態(tài)數(shù)據(jù) 55
7.2.1 識(shí)別動(dòng)態(tài)數(shù)據(jù)和靜態(tài)數(shù)據(jù) 55
7.2.2 改造數(shù)據(jù) 56
7.2.3 改造數(shù)據(jù)要注意的問(wèn)題 60
7.3 動(dòng)靜分離的架構(gòu)改造 62
7.3.1 動(dòng)靜分離的緩存架構(gòu) 62
7.3.2 瀏覽器緩存 63
7.3.3 CDN 緩存 64
7.3.4 Web 服務(wù)器緩存 65
7.3.5 分布式緩存 65
7.3.6 頁(yè)面組裝 66
第8 章 負(fù)載均衡 67
8.1 什么是負(fù)載均衡 67
8.1.1 負(fù)載均衡的概念 67
8.1.2 負(fù)載均衡的類型 69
8.1.3 有負(fù)載均衡的網(wǎng)站架構(gòu) 69
8.1.4 反向代理 70
8.2 DNS 負(fù)載均衡 72
8.2.1 DNS 73
8.2.2 A 記錄 73
8.2.3 CName 73
8.2.4 配置DNS 負(fù)載均衡 74
8.2.5 DNS 負(fù)載均衡的優(yōu)缺點(diǎn) 75
8.3 硬件負(fù)載均衡 76
8.4 軟件負(fù)載均衡:LVS 77
8.4.1 LVS 架構(gòu) 77
8.4.2 LVS 的負(fù)載均衡方式 78
8.4.3 LVS 的負(fù)載均衡策略 80
8.4.4 LVS 的調(diào)整升級(jí) 81
8.4.5 LVS 的優(yōu)缺點(diǎn) 81
8.5 軟件負(fù)載均衡:Nginx 82
8.5.1 Nginx 架構(gòu) 82
8.5.2 Nginx 的工作原理 83
8.5.3 Nginx 的負(fù)載均衡策略 84
8.5.4 Nginx 的錯(cuò)誤重試 85
8.5.5 Nginx 的調(diào)整升級(jí) 85
8.5.6 Nginx 的主要特點(diǎn) 86
8.5.7 Nginx 配置實(shí)戰(zhàn) 86
8.6 負(fù)載均衡的實(shí)踐流程 89
8.6.1 回顧流量基本概念 90
8.6.2 實(shí)踐流程 90
第9 章 異步和非阻塞 93
9.1 異步及其相關(guān)概念 93
9.1.1 同步和異步 94
9.1.2 阻塞和非阻塞 94
9.1.3 多線程 96
9.2 異步和非阻塞的作用 97
9.2.1 異步和非阻塞的應(yīng)用場(chǎng)景 97
9.2.2 異步和非阻塞的架構(gòu) 102
9.2.3 異步的優(yōu)勢(shì) 103
9.3 實(shí)戰(zhàn):以Java 為例 105
9.3.1 Runnable 105
9.3.2 Callable 106
9.3.3 Future 106
9.3.4 Executor 和ExecutorService 108
9.3.5 改造同步且阻塞的Java 代碼 108
9.4 異步和非阻塞帶來(lái)的問(wèn)題 112
9.4.1 API 定義 113
9.4.2 線程池的擴(kuò)容 113
第10 章 隊(duì)列 116
10.1 隊(duì)列及其相關(guān)概念 116
10.1.1 隊(duì)列 116
10.1.2 生產(chǎn)/消費(fèi)、發(fā)布/訂閱與主題 117
10.2 隊(duì)列與網(wǎng)站的整合 119
10.2.1 發(fā)布者 119
10.2.2 訂閱者 120
10.2.3 訂閱者:推送模式 120
10.2.4 訂閱者:拉取/輪詢模式 122
10.3 隊(duì)列的應(yīng)用 123
10.3.1 流量控制 123
10.3.2 服務(wù)解耦 126
10.4 隊(duì)列存在的問(wèn)題與解決方案 128
10.4.1 消息積壓 128
10.4.2 消息的可靠傳遞 130
10.4.3 消息重復(fù) 133
10.5 常見(jiàn)的隊(duì)列產(chǎn)品和系統(tǒng) 134
10.5.1 RabbitMQ 134
10.5.2 ActiveMQ 135
10.5.3 RocketMQ 135
10.5.4 Kafka 136
10.5.5 AWS SQS 和SNS 136
第11 章 高可用 137
11.1 CAP 原理 137
11.1.1 什么是CAP 原理 137
11.1.2 CAP 原理與網(wǎng)站服務(wù) 138
11.2 服務(wù)可用性的標(biāo)準(zhǔn) 141
11.3 冗余和隔離 142
11.3.1 擴(kuò)容中的冗余 142
11.3.2 廣義的冗余 142
11.3.3 隔離 142
第12 章 異地多活 144
12.1 異地多活的基本概念 144
12.1.1 基本概念 144
12.1.2 作用 145
12.1.3 應(yīng)用場(chǎng)景 145
12.1.4 異地多活和負(fù)載均衡 147
12.2 異地多活的類型 147
12.2.1 同城異地多活 147
12.2.2 跨城市異地多活 148
12.2.3 跨地區(qū)異地多活 149
12.3 如何進(jìn)行異地多活改造 149
12.3.1 業(yè)務(wù)分類 149
12.3.2 數(shù)據(jù)分類 150
12.3.3 數(shù)據(jù)同步 151
12.3.4 異地多活的數(shù)據(jù)同步提升方案 153
第13 章 服務(wù)降級(jí) 156
13.1 服務(wù)降級(jí)的基本概念 156
13.1.1 什么是服務(wù)降級(jí) 156
13.1.2 單點(diǎn)故障 158
13.2 微服務(wù)與服務(wù)拆分 160
13.2.1 什么是微服務(wù) 160
13.2.2 流量模式 161
13.2.3 如何拆分服務(wù) 162
13.3 系統(tǒng)分級(jí) 165
13.3.1 分析系統(tǒng)流程圖 165
13.3.2 一級(jí)系統(tǒng) 166
第14 章 限流 168
14.1 限流的基本概念 168
14.1.1 什么是限流 168
14.1.2 為什么需要限流 169
14.1.3 限流的幾種標(biāo)準(zhǔn) 171
14.1.4 限流的幾種思路 172
14.2 限流算法 176
14.2.1 令牌桶算法與漏桶算法 176
14.2.2 時(shí)間窗口算法 179
14.2.3 隊(duì)列法 182
14.3 服務(wù)限流需要考慮的問(wèn)題 183
14.3.1 性能和準(zhǔn)確性 183
14.3.2 如何進(jìn)一步提升 184
14.4 實(shí)戰(zhàn):使用Nginx 限流 186
第15 章 下游錯(cuò)誤處理 191
15.1 超時(shí)機(jī)制 191
15.2 錯(cuò)誤分類 192
15.2.1 如何分類錯(cuò)誤 192
15.2.2 早期失敗 194
15.2.3 默認(rèn)值的作用 194
15.3 錯(cuò)誤重試 195
15.3.1 錯(cuò)誤重試的條件 196
15.3.2 錯(cuò)誤重試帶來(lái)的問(wèn)題 196
第16 章 測(cè)試 198
16.1 測(cè)試的類型 198
16.1.1 一般功能測(cè)試 198
16.1.2 黑盒和白盒測(cè)試 200
16.1.3 不同程度的功能測(cè)試 202
16.1.4 非功能的測(cè)試 204
16.2 測(cè)試用例的設(shè)計(jì) 206
16.2.1 模擬實(shí)際環(huán)境 206
16.2.2 包含錯(cuò)誤情況 207
16.2.3 保證用例多樣性 209
16.2.4 驗(yàn)證系統(tǒng)間的連接性 212
16.3 功能測(cè)試詳解 213
16.3.1 單元測(cè)試 213
16.3.2 集成測(cè)試 217
16.3.3 端到端測(cè)試 219
第17 章 1
深入淺出大型網(wǎng)站架構(gòu)設(shè)計(jì) 作者簡(jiǎn)介
李力非,2014年起進(jìn)入互聯(lián)網(wǎng)軟件開(kāi)發(fā)行業(yè),并于2015年加入亞馬遜公司,從事軟件開(kāi)發(fā)和設(shè)計(jì)至今,對(duì)后端服務(wù)器開(kāi)發(fā)、移動(dòng)端開(kāi)發(fā)和前端網(wǎng)頁(yè)開(kāi)發(fā)均有涉獵,先后參與亞馬遜購(gòu)物網(wǎng)站移動(dòng)APP、Alexa智能家居的自動(dòng)化控制系統(tǒng)和亞馬遜事務(wù)類通知系統(tǒng)的軟件開(kāi)發(fā)和設(shè)計(jì),領(lǐng)導(dǎo)并參與了多個(gè)大型項(xiàng)目。熟悉如何結(jié)合設(shè)計(jì)原則和方法設(shè)計(jì)超大流量的網(wǎng)絡(luò)服務(wù),并擅長(zhǎng)根據(jù)實(shí)際情況和限制,靈活調(diào)整系統(tǒng)架構(gòu)。其中參與設(shè)計(jì)與開(kāi)發(fā)的Alexa智能家居自動(dòng)化控制系統(tǒng)的每日用戶使用人次超過(guò)2500萬(wàn)并持續(xù)增長(zhǎng),牢牢占據(jù)同類產(chǎn)品的市場(chǎng)占有率第一;參與開(kāi)發(fā)的亞馬遜事務(wù)類通知系統(tǒng)每日吞吐量達(dá)上億。
- >
月亮與六便士
- >
朝聞道
- >
唐代進(jìn)士錄
- >
自卑與超越
- >
伊索寓言-世界文學(xué)名著典藏-全譯本
- >
李白與唐代文化
- >
羅庸西南聯(lián)大授課錄
- >
煙與鏡