億級流量網站架構核心技術 — 跟開濤學搭建高可用高並發系統
張開濤
- 出版商: 電子工業
- 出版日期: 2017-04-01
- 定價: $594
- 售價: 8.5 折 $505
- 語言: 簡體中文
- 頁數: 477
- 裝訂: 平裝
- ISBN: 7121309548
- ISBN-13: 9787121309540
-
相關分類:
DevOps
-
相關翻譯:
百億造訪還能正常運作:全球最大購物網站技術公開 (繁中版)
立即出貨(限量) (庫存=1)
買這商品的人也買了...
-
$480$379 -
$580$493 -
$403大型分佈式網站架構設計與實踐
-
$352大型IT系統性能測試入門經典
-
$449大型網站性能監測、分析與優化
-
$505HTTPS 權威指南:在服務器和 Web 應用上部署 SSL/TLS 和 PKI
-
$454Spring Cloud 微服務實戰
-
$790$616 -
$450$356 -
$590$460 -
$450$356 -
$390$332 -
$403Tomcat 架構解析
-
$265Web API 的設計與開發 (Web API : the Good Parts)
-
$760$646 -
$520$411 -
$551高可用架構(第1捲)
-
$474$450 -
$403游戲服務器架構與優化
-
$580$452 -
$620$484 -
$620$484 -
$454超大流量分佈式系統架構解決方案:人人都是架構師2.0
-
$520大型網站運維:從系統管理到 SRE
-
$580$458
相關主題
商品描述
《億級流量網站架構核心技術——跟開濤學搭建高可用高並發系統》內容提要 《億級流量網站架構核心技術》一書總結並梳理了億級流量網站高可用和高並發原則,通過實例詳細介紹瞭如何落地這些原則。本書分為四部分:概述、高可用原則、高並發原則、案例實戰。從負載均衡、限流、降級、隔離、超時與重試、回滾機制、壓測與預案、緩存、池化、異步化、擴容、隊列等多方面詳細介紹了億級流量網站的架構核心技術,讓讀者看後能快速運用到實踐項目中。 不管是軟件開發人員,還是運維人員,通過閱讀《億級流量網站架構核心技術》都能系統地學習實現億級流量網站的架構核心技術,並收獲解決系統問題的思路和方法。
目錄大綱
第1部分概述1
1、交易型系統設計的一些原則2
1.1高並發原則3
1.1.1無狀態3
1.1.2拆分3
1.1.3服務化4
1.1.4消息隊列4
1.1.5數據異構6
1.1.6緩存銀彈7
1.1.7並發化9
1.2高可用原則10
1.2.1降級10
1.2.2限流11
1.2.3切流量12
1.2.4可回滾12
1.3業務設計原則12
1.3.1防重設計13
1.3.2冪等設計13
1.3.3流程可定義13
1.3.4狀態與狀態機13
1.3.5後台系統操作可反饋14
1.3.6後台系統審批化14
1.3.7文檔和註釋14
1.3.8備份14
1.4總結14
第2部分高可用17
2、負載均衡與反向代理18
2.1 upstream配置20
2.2負載均衡算法21
2.3失敗重試23
2.4健康檢查24
2.4.1 TCP心跳檢查24
2.4.2 HTTP心跳檢查25
2.5其他配置25
2.5.1域名上游服務器25
2.5.2備份上游服務器26
2.5.3不可用上游服務器26
2.6長連接26
2.7 HTTP反向代理示例29
2.8 HTTP動態負載均衡30
2.8.1 Consul+Consul-template 31
2.8.2 Consul+OpenResty 35
2.9 Nginx四層負載均衡39
2.9.1靜態 負載均衡39
2.9.2動態負載均衡41
參考資料42
3、隔離術43
3.1線程隔離43
3.2進程隔離45
3.3集群隔離45
3.4機房隔離46
3.5讀寫隔離47
3.6動靜隔離48
3.7爬蟲隔離49
3.8熱點隔離50
3.9資源隔離50
3.10使用Hystrix實現隔離51
3.10.1 Hystrix簡介51
3.10.2隔離示例52
3.11基於Servlet 3實現請求隔離56
3.11.1請求解析和業務處理線程池分離57
3.11.2業務線程池隔離58
3.11.3業務線程池監控/運維/降級58
3.11.4如何使用Servlet 3異步化59
3.11.5一些Servlet 3異步化壓測數據64
4、限流詳解66
4.1限流算法67
4.1.1令牌桶算法67
4.1.2漏桶算法68
4.2應用級限流69
4.2.1限流總並發/連接/請求數69
4.2.2限流總資源數70
4.2.3限流某個接口的總並發/請求數70
4.2.4限流某個接口的時間窗請求數70
4.2.5平滑限流某個接口的請求數71
4.3分佈式限流75
4.3.1 Redis+Lua實現76
4.3.2 Nginx+Lua實現77
4.4接入層限流78
……
參考資料92
5、降級特技93
5.1降級預案93
5.2自動開關降級95
5.2.1超時降級95
5.2.2統計失敗次數降級95
5.2.3故障降級95
5.2.4限流降級95
5.3人工開關降級96
5.4讀服務降級96
5.5寫服務降級97
5.6多級降級98
5.7配置中心100
5.7.1應用層API封裝100
5.7.2配置文件實現開關配置101
5.7.3配置中心實現開關配置102
5.8使用Hystrix實現降級106
5.9使用Hystrix實現熔斷108
5.9.1熔斷機制實現108
5.9.2配置示例112
5.9.3採樣統計113
6、超時與重試機制117
6.1簡介117
6.2代理層超時與重試119
6.2.1 Nginx 119
6.2.2 Twemproxy 126
6.3 Web容器超時127
6.4中間件客戶端超時與重試127
6.5數據庫客戶端超時131
6.6 NoSQL客戶端超時134
6.7業務超時135
6.8前端Ajax超時135
6.9總結136
6.10參考資料137
7回滾機制139
7.1事務回滾139
7.2代碼庫回滾140
7.3部署版本回滾141
7.4數據版本回滾142
7.5靜態資源版本回滾143
8、壓測與預案145
8.1系統 測145
8.1.1線下壓測146
8.1.2線上壓測146
8.2系統優化和容災147
8.3應急預案148
第3部分高並發153
9、應用級緩存154
9.1緩存簡介154
9.2緩存命中率155
9.3緩存回收策略155
9.3.1基於空間155
9.3.2基於容量155
9.3.3基於時間155
9.3.4基於Java對象引用156
9.3.5回收算法156
9.4 Java緩存類型156
9.4.1堆緩存158
9.4.2堆外緩存162
9.4.3磁盤緩存162
9.4.4分佈式緩存164
9.4.5多級緩存166
9.5應用級緩存示例167
9.5.1多級緩存API封裝167
9.5.2 NULL Cache 170
9.5.3強制獲取最新數據170
9.5.4失敗統計171
9.5.5延遲報警171
9.6緩存使用模式實踐172
9.6.1 Cache-Aside 173
9.6.2 Cache-As-SoR 174
9.6.3 Read-Through 174
9.6.4 Write-Through 176
9.6.5 Write-Behind 177
9.6.6 Copy Pattern 181
9.7性能測試181
9.8參考資料182
10、HTTP緩存183
10.1簡介183
10.2 HTTP緩存184
10.2.1 Last-Modified 184
10.2.2 ETag 190
10.2.3總結192
10.3 HTT PClient客戶端緩存192
10.3.1主流程195
10.3.2清除無效緩存195
10.3.3查找緩存196
10.3.4緩存未命中198
10.3.5緩存命中198
10.3.6緩存內容陳舊需重新驗證202
10.3.7緩存內容無效需重新執行請求205
10.3.8緩存響應206
10.3.9緩存頭總結207
10.4 Nginx HTTP緩存設置208
10.4.1 expires 208
10.4.2 if-modified-since 209
10.4.3 nginx proxy_pass 209
10.5 Nginx代理層緩存212
10.5.1 Nginx代理層緩存配置212
10.5.2清理緩存215
10.6一些經驗216
參考資料217
11、多級緩存218
11.1多級緩存介紹218
11.2如何緩存數據220
11.2.1過期與不過期220
11.2.2維度化緩存與增量緩存221
11.2 .3大Value緩存221
11.2.4熱點緩存221
11.3分佈式緩存與應用負載均衡222
11.3.1緩存分佈式222
11.3.2應用負載均衡222
11.4熱點數據與更新緩存223
11.4.1單機全量緩存+主從223
11.4.2分佈式緩存+應用本地熱點224
11.5更新緩存與原子性225
11.6緩存崩潰與快速修復226
11.6.1取模226
11.6.2一致性哈希226
11. 6.3快速恢復226
12、連接池線程池詳解227
12.1數據庫連接池227
12.1.1 DBCP連接池配置228
12.1.2 DBCP配置建議233
12.1.3數據庫驅動超時實現234
12.1.4連接池使用的一些建議235
12.2 HTT PClient連接池236
12.2.1 HTT PClient 4.5.2配置236
12.2.2 HTT PClient連接池源碼分析240
12.2.3 HTT PClient 4.2.3配置241
12.2.4問題示例243
12.3線程池244
12.3.1 Java線程池245
12.3.2 Tomcat線程池配置248
13、異步並發實戰250
13.1同步阻塞調用251
13.2異步Future 252
13.3異步Callback 253
13.4異步編排CompletableFuture 254
13.5異步Web服務實現257
13.6請求緩存259
13.7請求合併261
14、如何擴容266
14.1單體應用垂直擴容267
14.2單體應用水平擴容267
14.3應用拆分268
14.4數據庫拆分271
14.5數據庫分庫分錶示例275
14.5.1應用層還是中間件層275
14.5.2分庫分錶策略277
14.5.3使用sharding-jdbc分庫分錶279
14.5.4 sharding-jdbc分庫分錶配置279
14.5.5使用sharding-j dbc讀寫分離283
14.6數據異構284
14.6.1查詢維度異構284
14.6.2聚合數據異構285
14.7任務系統擴容285
14.7.1簡單任務285
14.7.2分佈式任務287
14.7.3 Elastic-Job簡介287
14.7.4 Elastic-Job-Lite功能與架構287
14.7.5 Elastic-Job-Lite示例288
15、隊列術295
15.1應用場景295
15.2緩衝隊列296
15.3任務隊列297
15.4消息隊列297
15.5請求隊列299
15.6數據總線隊列300
15.7混合隊列301
15.8其他隊列302
15.9 Disruptor+Redis隊列303
15.9.1簡介303
15.9.2 XML配置304
15.9.3 EventWorker 305
15.9.4 EventPublishThread 307
15.9.5 EventHandler 308
15.9.6 EventQueue 308
15.10下單系統水平可擴展架構311
15.10.1下單服務313
15.10.2同步Worker 313
15.11基於Canal實現數據異構314
15.11.1 Mysql主從復制315
15.11.2 Canal簡介316
15.11.3 Canal示例318
第4部分案例323
16、構建需求響應式億級商品詳情頁324
16.1商品詳情頁是什麼324
16.2商品詳情頁前端結構325
16.3我們的性能數 327
16.4單品頁流量特點327
16.5單品頁技術架構發展327
16.5.1架構1.0 328
16.5.2架構2.0 328
16.5.3架構3.0 330
16.6詳情頁架構設計原則332
16.6.1數據閉環332
16.6.2數據維度化333
16.6.3拆分系統334
16.6.4 Worker無狀態化+任務化334
16.6.5異步化+並發化335
16.6.6多級緩存化335
16.6.7動態化336
16.6.8彈性化336
16.6.9降級開關336
16.6.10多機房多活337
16.6.11多種壓測方案338
16.7遇到的一些坑和問題339
16.7.1 SSD性能差339
16.7.2鍵值存儲選型壓測340
16.7.3數據量大時JIMDB同步不動342
16.7.4切換主從342
16.7.5分片配置342
16.7.6模板元數據存儲HTML 342
16.7.7庫存接口訪問量600w/分鐘343
16.7.8微信接口調用量暴增344
16.7.9開啟Nginx Proxy Cache性能不升反降344
16.7.10配送至讀服務因依賴太多,響應時間偏慢344
16.7.11網絡抖動時,返回502錯誤346
16.7. 12機器流量太大346
16.8其他347
17、京東商品詳情頁服務閉 環實踐348
17.1為什麼需要統一服務348
17.2整體架構349
17.3一些架構思路和總結350
17.3.1兩種讀服務架構模式351
17.3.2本地緩存352
17.3.3多級緩存353
17.3.4統一入口/服務閉環354
17.4引入Nginx接入層354
17.4.1數據校驗/過濾邏輯前置354
17.4.2緩存前置355
17.4.3業務邏輯前置355
17.4.4降級開關前置355
17.4.5 AB測試356
17.4.6灰度發布/流量切換356
17.4.7監控服務質量356
17.4.8限流356
17.5前端業務邏輯後置356
17.6前端接口服務端聚合357
17.7服務隔離359
18、使用OpenResty開發高性能Web應用360
18.1 OpenResty簡介361
18.1.1 Nginx優點361
18.1.2 Lua的優點361
18.1.3什麼是ngx_lua 361
18.1.4開發環境362
18.1.5 OpenResty生態362
18.1.6場景362
18.2基於OpenResty的常用架構模式363
18.2 .1負載均衡363
18.2.2單機閉環364
18.2.3分佈式閉環367
18.2.4接入網關368
18.2.5核心接入Nginx功能369
18.2.6業務Nginx功能369
18.2.7 Web應用370
18.3如何使用OpenResty開發Web應用371
18.3.1項目搭建371
18.3.2啟停腳本372
18.3.3配置文件372
18.3.4 nginx.conf配置文件373
18.3.5 Nginx項目配置文件373
18.3.6業務代碼374
18.3.7模板374
18.3.8公共Lua庫375
18.3.9功能開發375
18.4基於OpenResty的常用功能總結375
18.5一些問題376
19、應用數據靜態化架構高性能單頁Web應用377
19.1整體架構378
19.1.1 CMS系統379
19.1.2前端展示系統380
19.1.3控制系統380
19.2數據和模板動態化381
19.3多版本機制381
19.4異常問題382
20、使用OpenResty開發Web服務383
20.1架構383
20.2單DB架構384
20.2.1 DB+Cache/數據庫讀寫分離架構384
20.2.2 OpenResty+Local Redis+Mysql集群架構385
20.2.3 OpenResty+Redis集群+Mysql集群架構386
20.3實現387
20.3.1後台邏輯388
20.3.2前台邏輯388
20.3 .3項目搭建389
20.3.4 Redis+Twemproxy配置389
20.3.5 Mysql+Atlas配置390
20.3.6 Java+Tomcat安裝394
20.3.7 Java+Tomcat邏輯開發395
20.3.8 Nginx+ Lua邏輯開發401
21、使用OpenResty開發商品詳情頁405
21.1技術選型407
21.2核心流程408
21.3項目搭建408
21.4數據存儲實現410
21.4.1商品基本信息SSDB集群配置410
21.4.2商品介紹SSDB集群配置413
21.4 .3其他信息Redis配置417
21.4.4集群測試418
21.4.5 Twemproxy配置419
21.5動態服務實現422
21.5.1項目搭建422
21.5.2項目依賴422
21.5.3核心代碼423
21.5.4基本信息服務424
21.5 .5商品介紹服務426
21.5.6其他信息服務426
21.5.7輔助工具427
21.5.8 web.xml配置428
21.5.9打WAR包428
21.5.10配置Tomcat 428
21.5.11測試429
21.5.12 Nginx配置429
21.5.13綁定hosts測試430
21.6前端展示實現430
21.6.1基礎組件430
21.6.2商品介紹432
21.6.4前端展示434
21.6.5測試442
21.6.6優化442