高並發系統實戰派:集群、Redis 緩存、海量存儲、Elasticsearch、RocketMQ、微服務、持續集成等

謝恩德

  • 出版商: 電子工業
  • 出版日期: 2022-09-01
  • 定價: $654
  • 售價: 8.5$556
  • 語言: 簡體中文
  • 頁數: 420
  • ISBN: 7121442043
  • ISBN-13: 9787121442049
  • 相關分類: 全文搜尋引擎 Full-text-searchMicroservices 微服務SOAKey-Value Store
  • 銷售排行: 🥉 2023/8 簡體中文書 銷售排行 第 3 名
    🥇 2022/12 簡體中文書 銷售排行 第 1 名
    🥉 2022/11 簡體中文書 銷售排行 第 3 名

    下單後立即進貨 (約2週~3週)

買這商品的人也買了...

商品描述

全書共5篇:第1篇,幫助讀者建立高並發系統的基本認知;第2篇,通過一個生產系統的搭建全流程,介紹了企業系統在技術框架層面及上線方面需要關註的點;第3篇,介紹了構建高並發系統的各項技術,包括應用集群化、緩存設計、存儲系統設計、搜索引擎、消息中間件設計、微服務設計、API網關設計等;第4篇,介紹了高並發系統設計原則及兩個完整的高並發項目,一方面幫助讀者對前面的內容進行鞏固和實操,另一方面也希望給讀者搭建自己的高並發系統以一定的啟發;第5篇,介紹了高並發系統的運維與監控。

目錄大綱

★★第1篇  高並發系統認知

★★第1章  什麼是高並發系統    2
1.1  什麼是高並發    2
1.2  高並發系統有哪些關鍵指標    3
1.2.1  響應時間(Response Time)    3
1.2.2  吞吐量(Throughput)    3
1.2.3  每秒請求數(QPS)    4
1.2.4  每秒事務數(TPS)    4
1.2.5  訪問量(PV)    5
1.2.6  獨立訪客(UV)    5
1.2.7  網路流量    5
1.3  為什麼要學習高並發系統    5
1.3.1  提升自身及企業核心競爭力    6
1.3.2  在面試中脫穎而出    6
1.4  對比單體系統、分佈式系統和微服務系統    7
1.4.1  單體系統之痛    7
1.4.2  高並發系統之分佈式架構    11
1.4.3  高並發系統之微服務架構    12

★★第2章  從剖析兩個高並發系統開始    20
2.1  案例一:千萬級流量“秒殺”系統    20
2.1.1  千萬級流量“秒殺”系統架構一覽    20
2.1.2  動靜分離方案設計    24
2.1.3  熱點數據處理    27
2.1.4  大流量的高效管控    30
2.1.5  扣減庫存的那些事    34
2.1.6  搭建千萬級流量“秒殺”系統需要哪些技術    39
2.2  案例二:C2C二手電商平臺的社會化治理子系統    40
2.2.1  C2C二手電商平臺的社會化治理子系統架構一覽    40
2.2.2  基礎服務治理    42
2.2.3  RPC框架服務通信    50
2.2.4  分佈式事務管理    55

★★第2篇  搭建生產級系統

★★第3章  生產級系統框架設計的細節    64
3.1  冪等性設計——保證數據的一致性    64
3.1.1  什麼是冪等性    64
3.1.2  如何避免重復提交    66
3.1.3  如何避免更新中的ABA問題    68
3.2  介面參數校驗——增強服務健壯性    70
3.2.1  【實戰】Spring結合validation進行介面參數校驗    70
3.2.2  【實戰】自定義參數校驗註解    73
3.3  統一異常設計——跟雜亂無章的異常信息說再見    75
3.3.1  Spring Boot默認的異常處理機制    75
3.3.2  【實戰】基於Spring Boot構建全局異常處理    76
3.4  統一封裝Response——智能的響應數據    83
3.4.1  介面響應數據的模型    83
3.4.2  【實戰】開發統一的響應數據模型,以應對不同業務    87
3.5  編寫高質量的異步任務    93
3.5.1  為什麼要編寫異步任務    93
3.5.2  【實戰】基於Spring開發高質量的異步任務    94
3.6  DTO與PO的互相轉換    98
3.6.1  什麼是DTO、PO    98
3.6.2  【實戰】實現DTO與PO的互相轉換    99
3.7  優雅的API設計——對接“清爽”,不出錯    102
3.7.1  最好採用“API先行”策略    103
3.7.2  API 的設計原則    104
3.7.3  RESTful API設計的規範    106
3.8  API治理——告別“介面滿天飛”    108
3.8.1  【實戰】基於Swagger構建可視化的API文檔    109
3.8.2  API調用鏈管理    112

★★第4章  快速部署上線    113
4.1  反向代理配置    113
4.1.1  什麼是反向代理,為什麼要使用反向代理    113
4.1.2  【實戰】使用Nginx配置線上服務    116
4.2  系統性能測試    120
4.2.1  【實戰】進行單元測試    120
4.2.2  【實戰】用AB工具做上線前的性能測試    131

★★第5章  生產環境監測    136
5.1  服務器性能日常監測    136
5.1.1  在運維中常說的“服務器平均負載”是什麼意思    136
5.1.2  為什麼經常被問到“CPU上下文切換”    138
5.1.3  【實戰】快速分析出CPU的性能瓶頸    141
5.2  優化服務器性能    144
5.2.1  CPU性能優化方法論    144
5.2.2  定位和處理內存泄漏問題    145
5.3  Java虛擬機(JVM)的生產調優    147
5.3.1  JVM內存模型分析    147
5.3.2  Java程式是如何在JVM中運行的    151
5.3.3  JVM優化的思路    152

第3篇  專項突破
★★第6章  應用集群化    158
6.1  為什麼要應用集群化    158
6.1.1  什麼是集群服務器    158
6.1.2  採用集群服務器有什麼好處    160
6.1.3  集群系統和分佈式系統有什麼區別    161
6.2  搭建應用集群    162
6.2.1  【實戰】使用反向代理搭建應用集群    163
6.2.2  【實戰】搭建Linux服務器集群    166

★★第7章  緩存設計    168
7.1  什麼是緩存    168
7.1.1  緩存的定義    168
7.1.2  緩存的常見分類    169
7.2  使用緩存    171
7.2.1  如何正確選擇緩存的讀寫策略    171
7.2.2  如何使用多級緩存來提升服務性能    173
7.2.3  多級緩存之痛    179
7.3  緩存架構設計    183
7.3.1  緩存組件的選擇    183
7.3.2  緩存數據結構的設計    187
7.3.3  緩存分佈的設計    187
7.3.4  緩存架構部署    190
7.3.5  緩存架構設計的關鍵點    190
7.4  用Redis構建生產級高性能分佈式緩存    192
7.4.1  Redis的常見數據類型    192
7.4.2  【實戰】通過Redis的讀寫分離抗住10萬以上的QPS    197
7.4.3  【實戰】在高並發場景下,緩存“雪崩”了該怎麼辦    201
7.4.4  【實戰】在高並發場景下,緩存“穿透”了該怎麼辦    204
7.4.5  【實戰】構建一個高性能、可擴展的Redis集群    206
7.4.6  【實戰】實現朋友圈的“點贊”功能    210
7.4.7  【實戰】實現App中的“查找附近的人”功能    212

★★第8章  存儲系統設計    213
8.1  池化技術    213
8.1.1  數據庫連接池是如何預分配連接的    213
8.1.2  線程池是如何工作的    214
8.1.3  協程池有什麼作用    216
8.2  數據庫採用主從架構——數據再也不會丟了    217
8.2.1  什麼是數據庫的主從架構    217
8.2.2  【實戰】配置MySQL主從架構    219
8.2.3  主從架構中的數據是如何實現同步的    221
8.3  數據庫讀寫分離——讀/寫數據再也不用爭搶了    222
8.3.1  數據庫讀寫分離能解決什麼問題    223
8.3.2  數據庫讀寫分離造成數據不一致,該怎麼辦    223
8.3.3  【實戰】在程式開發中實現讀寫分離    224
8.4  數據庫分庫分表——處理海量數據的“終極大招”    226
8.4.1  在什麼情況下需要分庫分表,如何分    226
8.4.2  【實戰】在分庫分表後,如何處理主鍵ID    229
8.4.3  【實戰】在程式開發中支持分庫分表    232
8.4.4  分庫分表會帶來什麼開發難題    233
8.4.5  【實戰】在分庫分表後實行項目無感上線    234
8.5  引入NoSQL數據庫    236
8.5.1  NoSQL數據庫是什麼,它和SQL數據庫有什麼區別    236
8.5.2  常用的NoSQL數據庫    237
8.5.3  利用NoSQL數據庫可以提升寫入性能    237
8.5.4  利用NoSQL數據庫可以提升擴展性    238

★★第9章  搜索引擎——讓查詢更便捷    240
9.1  為什麼需要搜索引擎    240
9.2  搜索引擎的通用演算法和架構    241
9.2.1  必須知道的倒排索引    241
9.2.2  網際網路搜索引擎的技術架構    243
9.2.3  Lucene與Elasticsearch的前世今生    245
9.3  用Elasticsearch搭建高性能的分佈式搜索引擎    247
9.3.1  Elasticsearch分佈式架構的原理    247
9.3.2  【實戰】將Elasticsearch應用在電商系統中    250
9.3.3  【實戰】快速實現Elasticsearch的搜索建議    253
9.3.4  【實戰】在海量數據下,提高Elasticsearch的查詢效率    254

★★第10章  消息中間件設計——解耦業務系統與核心系統    257
10.1  同步和異步    257
10.1.1  何為同步/異步    257
10.1.2  【實戰】使用回調函數獲取數據    258
10.2  為何要使用消息中間件    260
10.2.1  什麼是消息中間件,它有什麼作用    260
10.2.2  生產級消息中間件的選型    263
10.2.3  在高並發場景下如何處理請求    264
10.3  RocketMQ在項目中的使用    267
10.3.1  RocketMQ架構原理    267
10.3.2  【實戰】利用RocketMQ改造訂單系統,提升性能    269
10.4  引入消息中間件會帶來什麼問題    275
10.4.1  需要保證消息中間件的高可用    275
10.4.2  需要保證消息不被重復消費    277
10.4.3  需要保證消息的順序性    279
10.4.4  需要解決消息中間件中的消息延遲    280

★★第11章  微服務設計——將系統拆分    282
11.1  好好的系統為什麼要拆分    282
11.2  如何拆分服務    283
11.2.1  不可忽略的SOA架構    283
11.2.2  如何對已有系統進行微服務改造    284
11.2.3  微服務拆分的方式    287
11.2.4  有哪些好用的微服務開發框架    288
11.3  微服務設計參照模型    290
11.3.1  在開發中如何定義軟體分層    290
11.3.2  運用好“微服務的使用模式”可以事半功倍    292
11.4  引入微服務架構會帶來什麼問題及其解決方案    294
11.4.1  數據一致性問題    295
11.4.2  分佈式事務問題    296
11.4.3  復雜度問題    296
11.5  如何有效治理微服務    297
11.5.1  管理服務    298
11.5.2  治理服務    298
11.5.3  監控服務    298
11.5.4  定位問題    299
11.5.5  查詢日誌    299
11.5.6  運維服務    299

★★第12章  API網關設計——讓服務井然有序    300
12.1  為什麼要引入API網關    300
12.1.1  什麼是API網關    300
12.1.2  API網關的作用    301
12.2  API網關的通用設計方案    302
12.2.1  設計API網關要考慮哪些關鍵點    302
12.2.2  API網關的選型    304
12.3  將API網關應用到生產項目中    305
12.3.1  【實戰】基於Zuul搭建生產級API網關    305
12.3.2  【實戰】基於Spring Cloud Gateway搭建生產級API網關    308

★★第4篇  高並發項目設計及實戰

★★第13章  高並發系統設計原則    316
13.1  高並發系統的通用設計原則    316
13.1.1  利用負載均衡分散流量    316
13.1.2  利用分佈式緩存扛住“讀”流量    322
13.1.3  實現數據庫的讀寫分離    322
13.1.4  實現數據庫分庫分表    323
13.1.5  使用NoSQL、消息隊列及搜索引擎技術    324
13.1.6  將大應用拆為小應用    325
13.2  提升系統性能的策略    325
13.2.1  垂直伸縮    325
13.2.2  水平伸縮    326

★★第14章  【項目實戰】搭建千萬級流量“秒殺”系統    327
14.1  搭建“秒殺”系統工程    327
14.1.1  技術選型    327
14.1.2  工程搭建    329
14.2  分析“秒殺”業務    331
14.2.1  “秒殺”業務場景分析    331
14.2.2  “秒殺”痛點分析    334
14.3  具體設計與開發    335
14.3.1  數據庫層的設計與開發    335
14.3.2  業務服務層的設計與開發    335
14.3.3  動靜分離的實現    339
14.3.4  優化系統以應對千萬級流量    340

★★第15章  【項目實戰】搭建C2C二手電商平臺的社會化治理系統    342
15.1  搭建系統工程    342
15.1.1  技術棧列表    342
15.1.2  工程搭建    343
15.2  分析系統業務    343
15.2.1  C2C二手電商平臺社會化治理系統的業務介紹    343
15.2.2  C2C二手電商平臺社會化治理系統的痛點分析    343
15.3  整體架構設計    344
15.3.1  整體架構圖    344
15.3.2  場景分析    345
15.4  微服務設計開發    345
15.4.1  服務拆分及高可用註冊中心搭建    345
15.4.2  服務間通信框架選擇    349
15.4.3  平臺服務開發    349
15.5  服務治理開發    351
15.5.1  鏈路追蹤的設計與開發    351
15.5.2  引入分佈式事務框架    352
15.5.3  平臺限流熔斷的設計與開發    354
15.5.4  引入API網關    357
15.5.5  基於Nacos搭建環境隔離配置中心    358

★★第5篇  運維監控

★★第16章  運維之術——告別加班    360
16.1  什麼是CI/CD    360
16.2  為什麼要CI/CD    361
16.3  搭建適合自己公司的CI/CD    362
16.3.1  【實戰】基於GitLab搭建代碼管理平臺    362
16.3.2  【實戰】基於Jenkins搭建持續集成與編譯平臺    363
16.3.3  【實戰】基於Ansible搭建自動化部署平臺    366
16.4  服務器通用運維    366
16.4.1  優化硬體    366
16.4.2  分析性能瓶頸    367
16.4.3  【實戰】處理服務器丟包問題    369
16.4.4  【實戰】分析服務吞吐量突然下降的原因    373

★★第17章  監控之術——天使之眼    374
17.1  如何定義系統監控    374
17.1.1  需要監控哪些系統指標    374
17.1.2  如何採集監控指標    375
17.1.3  如何存儲監控指標    375
17.2  搭建一套可靠的監控系統    375
17.2.1  【實戰】基於ELK搭建集中化日誌監控平臺    375
17.2.2  【實戰】基於Prometheus搭建系統指標監控預警平臺    378
17.3  鏈路追蹤——不漏過任何一個異常服務    385
17.3.1  什麼是鏈路追蹤    385
17.3.2  常用的開源鏈路追蹤系統    386
17.3.3  【實戰】在微服務架構中加入鏈路追蹤系統SkyWalking    386