《分散式中間件技術實戰(Java版)》由鐘林森編寫,由機械工業出版社出版發行。
基本介紹
- 中文名:分散式中間件技術實戰(Java版)
- 作者:鐘林森
- 類別:計算機Java類
- 出版社:機械工業出版社
- 出版時間:2019年
- 頁數:448 頁
- 定價:129 元
- 開本:16 開
- 裝幀:平裝
- ISBN:9787111641513
內容簡介,圖書目錄,作者簡介,
內容簡介
本書站在初學者的角度,介紹了幾款比較流行的分散式中間件,帶領讀者從零開始一步一個腳印地學習Java企業級套用開發。書中在講解必要的理論知識和套用場景後都給出了實際項目案例,可以提高讀者的開發水平和項目實戰能力。
本書共10章,分為3篇。第1篇開發工具準備,介紹了分散式系統架構的相關知識要點,包括其功能、作用及演進歷程,並由此引出了分散式中間件的相關介紹。第2篇開發實戰,全面介紹了目前在實際開發中套用比較廣泛的幾款Java中間件,包括快取中間件Redis、訊息中間件RabbitMQ、統一協調管理中間件ZooKeeper和綜合中間件Redisson等,重點介紹了這幾款中間件的基本概念、典型套用場景及相應的功能組件等。第3篇總結,對相關內容做了重點回顧與總結。值得一提的是,本書在介紹幾款中間件的理論知識時,還以Spring Boot微服務框架作為奠基,整合了相關中間件之間的依賴,並結合作者的實際項目經驗進行了代碼實戰。
本書特別適合中間件實踐經驗為零的開發者閱讀;對於有一定Java套用開發經驗的工程師而言,通過閱讀本書可以了解中間件在構建企業級套用過程中所提供的思路和解決方案;IT培訓機構的學員,也可以通過本書系統地學習中間件技術。
圖書目錄
第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
作者簡介
鐘林森 網名debug,Java高級後端工程師。目前在國內某網際網路公司擔任開發組長,負責公司Java套用後端開發,並參與公司IT基礎架構體系的研發。CSDN部落格專家,發表了大量的原創部落格文字,部落格訪問量達百萬人次。51CTO學院、CSDN學院及網易雲課堂等知名教育平台講師,教授學員上萬人。追求技術,熱愛分享,相信技術改變生活,技術成就夢想,一直在不斷地學習和積累新知識,秉承修羅之道,花名“阿修羅”。