前言
第1篇 開發工具準備
第1章 走進分布式中間件 2
1.1 分布式係統概述 2
1.1.1 白話分布式係統 3
1.1.2 分布式係統發展曆程 3
1.1.3 分布式係統特性 6
1.1.4 分布式係統常見問題 7
1.2 分布式中間件概述 7
1.2.1 白話分布式中間件 7
1.2.2 常見中間件介紹 8
1.3 本書核心知識要點 9
1.4 本書實戰要求與建議 10
第2章 搭建微服務項目 11
2.1 Spring Boot概述 11
2.1.1 什麼是Spring Boot 11
2.1.2 Spring Boot的優勢 12
2.1.3 Spring Boot的幾大特性 13
2.2 搭建規範與搭建流程 13
2.2.1 Spring Boot項目搭建規範 14
2.2.2 Spring Boot項目搭建流程 14
2.2.3 寫個Hello World吧 26
2.3 總結 28
第2篇 開發實戰
第3章 緩存中間件Redis 30
3.1 Redis概述與典型應用場景介紹 30
3.2 Redis的使用 32
3.2.1 快速安裝Redis 32
3.2.2 在Windows環境下使用Redis 34
3.2.3 Spring Boot項目整閤Redis 37
3.2.4 Redis自定義注入Bean組件配置 38
3.2.5 RedisTemplate實戰 39
3.2.6 StringRedisTemplate實戰 43
3.3 Redis常見數據結構實戰 45
3.3.1 字符串 45
3.3.2 列錶 47
3.3.3 集閤 48
3.3.4 有序集閤 50
3.3.5 哈希Hash存儲 52
3.3.6 Key失效與判斷是否存在 54
3.4 Redis實戰場景之緩存穿透 56
3.4.1 什麼是緩存穿透 57
3.4.2 緩存穿透的解決方案 58
3.4.3 實戰過程 58
3.4.4 其他典型問題介紹 65
3.5 總結 66
第4章 Redis典型應用場景實戰之搶紅包係統 67
4.1 整體業務流程介紹 67
4.1.1 搶紅包係統業務流程 68
4.1.2 業務流程分析 68
4.1.3 業務模塊劃分 70
4.2 數據庫錶設計與環境搭建 71
4.2.1 數據庫錶設計 71
4.2.2 開發環境搭建 73
4.2.3 開發流程介紹 83
4.3 “紅包金額”隨機生成算法實戰 85
4.3.1 隨機數算法 86
4.3.2 紅包隨機金額生成算法要求 86
4.3.3 二倍均值法簡介 87
4.3.4 紅包隨機金額生成算法實戰 88
4.3.5 紅包隨機金額生成算法自測 90
4.4 “發紅包”模塊實戰 91
4.4.1 業務模塊分析 92
4.4.2 整體流程實戰 93
4.4.3 業務模塊自測 99
4.5 “搶紅包”模塊實戰 101
4.5.1 業務模塊分析 101
4.5.2 整體流程 102
4.5.3 業務模塊自測 105
4.5.4 總結 109
4.6 Jmeter壓力測試高並發搶紅包 110
4.7 問題分析與優化方案 116
4.7.1 問題分析 117
4.7.2 優化方案介紹 118
4.7.3 優化方案之Redis分布式鎖實戰 118
4.7.4 不足之處 122
4.8 總結 122
第5章 消息中間件RabbitMQ 124
5.1 RabbitMQ簡介 124
5.1.1 認識RabbitMQ 125
5.1.2 典型應用場景介紹 126
5.1.3 RabbitMQ後端控製颱介紹 132
5.1.4 基於Spring的事件驅動模型實戰 133
5.2 Spring Boot項目整閤RabbitMQ 137
5.2.1 RabbitMQ相關詞匯介紹 138
5.2.2 Spring Boot項目整閤RabbitMQ 139
5.2.3 自定義注入配置Bean相關組件 140
5.2.4 RabbitMQ發送、接收消息實戰 142
5.2.5 其他發送接收消息方式實戰 147
5.3 RabbitMQ多種消息模型實戰 152
5.3.1 基於FanoutExchange的消息模型實戰 152
5.3.2 基於DirectExchange的消息模型實戰 160
5.3.3 基於TopicExchange的消息模型實戰 165
5.4 RabbitMQ確認消費機製 171
5.4.1 消息高可用和確認消費 172
5.4.2 常見的確認消費模式介紹 174
5.4.3 基於自動確認消費模式實戰 176
5.4.4 基於手動確認消費模式實戰 182
5.5 典型應用場景實戰之用戶登錄成功寫日誌 188
5.5.1 整體業務流程介紹與分析 188
5.5.2 數據庫錶設計 189
5.5.3 開發環境搭建 197
5.5.4 基於TopicExchange構建日誌消息模型 200
5.5.5 異步發送接收登錄日誌消息實戰 201
5.5.6 整體業務模塊自測實戰 205
5.6 總結 208
第6章 死信隊列/延遲隊列實戰 209
6.1 死信隊列概述 209
6.1.1 死信隊列簡介與作用 209
6.1.2 典型應用場景介紹 212
6.2 RabbitMQ死信隊列實戰 213
6.2.1 死信隊列專有詞匯介紹 214
6.2.2 死信隊列消息模型實戰 215
6.2.3 死信隊列延遲發送消息實戰 221
6.3 典型應用場景實戰之商城平颱訂單支付超時 226
6.3.1 整體業務場景介紹 227
6.3.2 整體業務流程分析 228
6.3.3 數據庫設計 229
6.3.4 構建RabbitMQ死信隊列消息模型 236
6.3.5 Controller層開發用戶下單及訂單失效功能 240
6.3.6 “用戶下單支付超時”延遲發送接收實戰 246
6.3.7 “用戶下單支付超時”整體功能自測 250
6.4 總結 254
第7章 分布式鎖實戰 256
7.1 分布式鎖概述 256
7.1.1 鎖機製 257
7.1.2 分布式鎖登場 263
7.1.3 典型應用場景介紹 265
7.1.4 小結 268
7.2 基於數據庫實現分布式鎖 268
7.2.1 樂觀鎖簡介 268
7.2.2 樂觀鎖實戰 269
7.2.3 Jmeter高並發測試樂觀鎖 280
7.2.4 悲觀鎖簡介 286
7.2.5 悲觀鎖實戰 288
7.2.6 Jmeter高並發測試悲觀鎖 290
7.2.7 小結 291
7.3 基於Redis實現分布式鎖 292
7.3.1 Redis溫故而知新 292
7.3.2 分布式鎖的實現流程與原理分析 294
7.3.3 基於Redis實戰實現分布式鎖 295
7.3.4 Jmeter高並發測試 303
7.3.5 小結 307
7.4 基於ZooKeeper實現分布式鎖 308
7.4.1 ZooKeeper簡介與作用 308
7.4.2 分布式鎖的實現流程與原理分析 310
7.4.3 Spring Boot整閤ZooKeeper 312
7.4.4 基於ZooKeeper實現分布式鎖 315
7.4.5 Jmeter高並發測試 317
7.4.6 小結 319
7.5 典型應用場景之書籍搶購模塊設計與實戰 319
7.5.1 整體業務流程介紹與分析 319
7.5.2 數據庫錶設計與用例設計 321
7.5.3 書籍搶購核心業務邏輯開發實戰 324
7.5.4 Jmeter重現“庫存超賣”的問題 328
7.5.5 采用分布式鎖解決問題 330
7.5.6 小結 334
7.6 總結 334
第8章 綜閤中間件Redisson 336
8.1 Redisson概述 336
8.1.1 Redisson簡介與作用 337
8.1.2 Redisson的功能特性 339
8.1.3 典型應用場景之布隆過濾器與主題 340
8.1.4 典型應用場景之延遲隊列與分布式鎖 345
8.1.5 Spring Boot整閤Redisson 348
8.2 Redisson常見功能組件實戰 352
8.2.1 布隆過濾器 352
8.2.2 發布-訂閱式主題 355
8.2.3 數據結構之映射Map 361
8.2.4 數據結構之集閤Set 366
8.2.5 隊列Queue實戰 370
8.2.6 延遲隊列Delayed Queue實戰1 374
8.2.7 延遲隊列Delayed Queue實戰2 381
8.3 分布式鎖實戰 385
8.3.1 重溫分布式鎖 385
8.3.2 分布式鎖之一次性鎖實戰 387
8.3.3 分布式鎖之可重入鎖實戰 392
8.4 總結 398
第9章 Redisson典型應用場景實戰之高性能點贊 399
9.1 整體業務流程介紹與分析 399
9.1.1 業務背景介紹 400
9.1.2 業務流程介紹與分析 401
9.1.3 業務模塊劃分與數據庫設計 404
9.2 “點贊與取消點贊”操作模塊實戰 409
9.2.1 “點贊與取消點贊”業務流程分析 409
9.2.2 Controller層接收請求信息 412
9.2.3 Service層插入、更新並緩存記錄信息 415
9.2.4 業務模塊自測 421
9.3 “排行榜”業務模塊實戰 424
9.3.1 “排行榜”業務流程分析 425
9.3.2 接收前端請求並觸發緩存排行榜 426
9.3.3 業務模塊自測 428
9.4 總結 432
第3篇 總結
第10章 總結與迴顧 434
· · · · · · (
收起)