注冊 | 登錄讀書好,好讀書,讀好書!
讀書網(wǎng)-DuShu.com
當前位置: 首頁出版圖書科學(xué)技術(shù)計算機/網(wǎng)絡(luò)網(wǎng)絡(luò)與數(shù)據(jù)通信深入淺出大型網(wǎng)站架構(gòu)設(shè)計

深入淺出大型網(wǎng)站架構(gòu)設(shè)計

深入淺出大型網(wǎng)站架構(gòu)設(shè)計

定 價:¥89.00

作 者: 李力非 著
出版社: 電子工業(yè)出版社
叢編項:
標 簽: 暫缺

ISBN: 9787121353970 出版時間: 2020-05-01 包裝: 平裝
開本: 16開 頁數(shù): 256 字數(shù):  

內(nèi)容簡介

  為了幫助有一定編程基礎(chǔ)的讀者快速了解如何以職業(yè)標準開發(fā)一個網(wǎng)站,本書從架構(gòu)設(shè)計的角度出發(fā),涵蓋了以高性能、高可用、高并發(fā)等多個業(yè)內(nèi)標準為目標的網(wǎng)站設(shè)計和建設(shè)手段,并在每個方面追本溯源,從理論方法到生產(chǎn)實踐,在力求簡明易懂、適用于盡可能多的場合的前提下深入到實踐中,為讀者提供實用操作指南。同時,本書對所有出現(xiàn)的概念都作了簡明扼要的解釋,并對介紹的手段和方案不僅解釋了如何做,也解釋了來源和選擇理由,使得讀者在理解內(nèi)容并能應(yīng)用的同時,也能理解這些手段背后的思路,將來亦可脫離書本,作出屬于自己的創(chuàng)新方案,真正做到了授人以魚不如授人以漁。

作者簡介

  李力非,2014年起進入互聯(lián)網(wǎng)軟件開發(fā)行業(yè),并于2015年加入亞馬遜公司,從事軟件開發(fā)和設(shè)計至今,對后端服務(wù)器開發(fā)、移動端開發(fā)和前端網(wǎng)頁開發(fā)均有涉獵,先后參與亞馬遜購物網(wǎng)站移動APP、Alexa智能家居的自動化控制系統(tǒng)和亞馬遜事務(wù)類通知系統(tǒng)的軟件開發(fā)和設(shè)計,領(lǐng)導(dǎo)并參與了多個大型項目。熟悉如何結(jié)合設(shè)計原則和方法設(shè)計超大流量的網(wǎng)絡(luò)服務(wù),并擅長根據(jù)實際情況和限制,靈活調(diào)整系統(tǒng)架構(gòu)。其中參與設(shè)計與開發(fā)的Alexa智能家居自動化控制系統(tǒng)的每日用戶使用人次超過2500萬并持續(xù)增長,牢牢占據(jù)同類產(chǎn)品的市場*****;參與開發(fā)的亞馬遜事務(wù)類通知系統(tǒng)每日吞吐量達上億。

圖書目錄

目錄
第1 章 網(wǎng)站架構(gòu)概述 1
1.1 網(wǎng)站的基本組件 1
1.2 網(wǎng)站業(yè)務(wù)規(guī)模增長帶來的問題 2
1.3 大型網(wǎng)站架構(gòu)設(shè)計的目標和原則 4
1.3.1 高性能 4
1.3.2 高可用 5
1.3.3 伸縮性 6
1.3.4 擴展性 7
第2 章 大型網(wǎng)站架構(gòu)設(shè)計的流程 9
2.1 需求分析 9
2.1.1 需求驅(qū)動的重要性 9
2.1.2 如何根據(jù)需求制定系統(tǒng)目標 10
2.2 方案設(shè)計 11
2.2.1 與架構(gòu)設(shè)計原則相結(jié)合 11
2.2.2 設(shè)計多套備選方案 12
2.3 方案評估 13
第3 章 數(shù)據(jù)庫的選擇 15
3.1 關(guān)系數(shù)據(jù)庫 15
3.1.1 什么是關(guān)系數(shù)據(jù)庫 16
3.1.2 關(guān)系數(shù)據(jù)庫的優(yōu)勢和應(yīng)用場景 17
3.2 非關(guān)系數(shù)據(jù)庫 18
3.2.1 什么是非關(guān)系數(shù)據(jù)庫 18
3.2.2 非關(guān)系數(shù)據(jù)庫的優(yōu)勢和應(yīng)用場景 19
3.3 常見的關(guān)系數(shù)據(jù)庫產(chǎn)品 20
3.3.1 MySQL 20
3.3.2 MS SQL Server 21
3.3.3 Oracle 22
3.4 常見的非關(guān)系數(shù)據(jù)庫產(chǎn)品 22
3.4.1 MongoDB 23
3.4.2 DynamoDB 23
3.5 云數(shù)據(jù)庫 23
第4 章 數(shù)據(jù)庫優(yōu)化:分庫分表 25
4.1 什么是分庫分表 25
4.1.1 分庫 25
4.1.2 分表 26
4.2 為什么要進行分庫分表 27
4.2.1 吞吐量 27
4.2.2 索引 27
4.2.3 備份 28
4.2.4 其他風險 28
4.3 實現(xiàn)分庫分表 28
4.3.1 垂直分庫分表 29
4.3.2 水平分庫分表 30
4.4 分庫分表帶來的問題 32
4.4.1 全局唯一ID 32
4.4.2 關(guān)系數(shù)據(jù)庫的部分操作 33
4.4.3 事務(wù)支持 33
第5 章 數(shù)據(jù)庫優(yōu)化:讀寫分離 34
5.1 什么是讀寫分離 34
5.2 為什么要使用讀寫分離 35
5.2.1 何時需要使用讀寫分離 35
5.2.2 讀寫分離的好處 36
5.3 實現(xiàn)讀寫分離 37
5.3.1 中間件實現(xiàn) 37
5.3.2 應(yīng)用層實現(xiàn) 38
5.4 讀寫分離帶來的問題 39
5.4.1 副本的實時性 39
5.4.2 副本實時性的解決方案 39
5.4.3 成本問題 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)用場景 46
6.5.2 分布式緩存的架構(gòu)設(shè)計 47
6.6 緩存的問題 47
6.6.1 緩存過熱 47
6.6.2 緩存穿透 48
6.6.3 緩存雪崩 48
6.7 常見的緩存系統(tǒng) 49
6.7.1 MemCached 49
6.7.2 Redis 49
第7 章 動靜分離 50
7.1 動靜分離 50
7.1.1 動態(tài)數(shù)據(jù)和靜態(tài)數(shù)據(jù) 50
7.1.2 動靜分離的概念 52
7.1.3 動靜分離的作用 53
7.2 拆分動態(tài)數(shù)據(jù)和靜態(tài)數(shù)據(jù) 55
7.2.1 識別動態(tài)數(shù)據(jù)和靜態(tài)數(shù)據(jù) 55
7.2.2 改造數(shù)據(jù) 56
7.2.3 改造數(shù)據(jù)要注意的問題 60
7.3 動靜分離的架構(gòu)改造 62
7.3.1 動靜分離的緩存架構(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 頁面組裝 66
第8 章 負載均衡 67
8.1 什么是負載均衡 67
8.1.1 負載均衡的概念 67
8.1.2 負載均衡的類型 69
8.1.3 有負載均衡的網(wǎng)站架構(gòu) 69
8.1.4 反向代理 70
8.2 DNS 負載均衡 72
8.2.1 DNS 73
8.2.2 A 記錄 73
8.2.3 CName 73
8.2.4 配置DNS 負載均衡 74
8.2.5 DNS 負載均衡的優(yōu)缺點 75
8.3 硬件負載均衡 76
8.4 軟件負載均衡:LVS 77
8.4.1 LVS 架構(gòu) 77
8.4.2 LVS 的負載均衡方式 78
8.4.3 LVS 的負載均衡策略 80
8.4.4 LVS 的調(diào)整升級 81
8.4.5 LVS 的優(yōu)缺點 81
8.5 軟件負載均衡:Nginx 82
8.5.1 Nginx 架構(gòu) 82
8.5.2 Nginx 的工作原理 83
8.5.3 Nginx 的負載均衡策略 84
8.5.4 Nginx 的錯誤重試 85
8.5.5 Nginx 的調(diào)整升級 85
8.5.6 Nginx 的主要特點 86
8.5.7 Nginx 配置實戰(zhàn) 86
8.6 負載均衡的實踐流程 89
8.6.1 回顧流量基本概念 90
8.6.2 實踐流程 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)用場景 97
9.2.2 異步和非阻塞的架構(gòu) 102
9.2.3 異步的優(yōu)勢 103
9.3 實戰(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 異步和非阻塞帶來的問題 112
9.4.1 API 定義 113
9.4.2 線程池的擴容 113
第10 章 隊列 116
10.1 隊列及其相關(guān)概念 116
10.1.1 隊列 116
10.1.2 生產(chǎn)/消費、發(fā)布/訂閱與主題 117
10.2 隊列與網(wǎng)站的整合 119
10.2.1 發(fā)布者 119
10.2.2 訂閱者 120
10.2.3 訂閱者:推送模式 120
10.2.4 訂閱者:拉取/輪詢模式 122
10.3 隊列的應(yīng)用 123
10.3.1 流量控制 123
10.3.2 服務(wù)解耦 126
10.4 隊列存在的問題與解決方案 128
10.4.1 消息積壓 128
10.4.2 消息的可靠傳遞 130
10.4.3 消息重復(fù) 133
10.5 常見的隊列產(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ù)可用性的標準 141
11.3 冗余和隔離 142
11.3.1 擴容中的冗余 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)用場景 145
12.1.4 異地多活和負載均衡 147
12.2 異地多活的類型 147
12.2.1 同城異地多活 147
12.2.2 跨城市異地多活 148
12.2.3 跨地區(qū)異地多活 149
12.3 如何進行異地多活改造 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ù)降級 156
13.1 服務(wù)降級的基本概念 156
13.1.1 什么是服務(wù)降級 156
13.1.2 單點故障 158
13.2 微服務(wù)與服務(wù)拆分 160
13.2.1 什么是微服務(wù) 160
13.2.2 流量模式 161
13.2.3 如何拆分服務(wù) 162
13.3 系統(tǒng)分級 165
13.3.1 分析系統(tǒng)流程圖 165
13.3.2 一級系統(tǒng) 166
第14 章 限流 168
14.1 限流的基本概念 168
14.1.1 什么是限流 168
14.1.2 為什么需要限流 169
14.1.3 限流的幾種標準 171
14.1.4 限流的幾種思路 172
14.2 限流算法 176
14.2.1 令牌桶算法與漏桶算法 176
14.2.2 時間窗口算法 179
14.2.3 隊列法 182
14.3 服務(wù)限流需要考慮的問題 183
14.3.1 性能和準確性 183
14.3.2 如何進一步提升 184
14.4 實戰(zhàn):使用Nginx 限流 186
第15 章 下游錯誤處理 191
15.1 超時機制 191
15.2 錯誤分類 192
15.2.1 如何分類錯誤 192
15.2.2 早期失敗 194
15.2.3 默認值的作用 194
15.3 錯誤重試 195
15.3.1 錯誤重試的條件 196
15.3.2 錯誤重試帶來的問題 196
第16 章 測試 198
16.1 測試的類型 198
16.1.1 一般功能測試 198
16.1.2 黑盒和白盒測試 200
16.1.3 不同程度的功能測試 202
16.1.4 非功能的測試 204
16.2 測試用例的設(shè)計 206
16.2.1 模擬實際環(huán)境 206
16.2.2 包含錯誤情況 207
16.2.3 保證用例多樣性 209
16.2.4 驗證系統(tǒng)間的連接性 212
16.3 功能測試詳解 213
16.3.1 單元測試 213
16.3.2 集成測試 217
16.3.3 端到端測試 219
第17 章 上線準備 222
17.1 發(fā)布流程 222
17.1.1 規(guī)范化流程 222
17.1.2 結(jié)合測試的流程 224
17.1.3 自動化的流程 225
17.2 監(jiān)控 226
17.2.1 生產(chǎn)環(huán)境度量 226
17.2.2 監(jiān)控與警報 231
17.3 壓力測試 232
17.3.1 壓力測試的目的 233
17.3.2 如何進行壓力測試 233
17.4 灰度發(fā)布 237
17.4.1 什么是灰度發(fā)布 237
17.4.2 灰度發(fā)布的條件 239
17.5 維護人員 241
17.5.1 應(yīng)急預(yù)案 241
17.5.2 人工監(jiān)控 242

本目錄推薦

掃描二維碼
Copyright ? 讀書網(wǎng) m.ranfinancial.com 2005-2020, All Rights Reserved.
鄂ICP備15019699號 鄂公網(wǎng)安備 42010302001612號