分佈式中間件技術實戰:Java版
內容描述
本書站在初學者的角度,介紹了幾款比較流行的分佈式中間件,帶領讀者從零開始一步一個腳印地學習Java企業級應用開發。書中在講解必要的理論知識和應用場景後都給出了實際項目案例,可以提高讀者的開發水平和項目實戰能力。
本書共10章,分為3篇。第1篇開發工具準備,介紹了分佈式系統架構的相關知識要點,包括其功能、作用及演進歷程,並由此引出了分佈式中間件的相關介紹。第2篇開發實戰,全面介紹了目前在實際開發中應用比較廣泛的幾款Java中間件,包括緩存中間件Redis、消息中間件RabbitMQ、統一協調管理中間件ZooKeeper和綜合中間件Redisson等,重點介紹了這幾款中間件的基本概念、典型應用場景及相應的功能組件等。第3篇總結,對相關內容做了重點回顧與總結。值得一提的是,本書在介紹幾款中間件的理論知識時,還以Spring Boot微服務框架作為奠基,整合了相關中間件之間的依賴,並結合作者的實際項目經驗進行了代碼實戰。
本書特別適合中間件實踐經驗為零的開發者閱讀;對於有一定Java應用開發經驗的工程師而言,通過閱讀本書可以瞭解中間件在構建企業級應用過程中所提供的思路和解決方案;IT培訓機構的學員,也可以通過本書系統地學習中間件技術。
編輯推薦:
CSDN博客專家、51CTO學院/CSDN學院/網易雲課堂知名講師力作
結合近30個案例及88幅流程圖,全面介紹分佈式中間件的原理及應用
容易上手:手把手帶領讀者從零開始逐步學習常用的分佈式中間件技術
圖文並茂:結合88幅流程圖進行講解,可以加深讀者對中間件原理的理解
註重實戰:結合大量簡潔、優雅的高質量代碼實例進行開發實踐,提高讀者的開發水平
案例豐富:結合近30個實際項目中的典型業務場景案例進行講解,讓讀者身臨其境
分佈式系統架構的演進歷程是怎麽樣的?
有哪些常用的典型分佈式中間件?其作用又是什麽?
Redis的作用及其典型應用場景有哪些?
如何基於微服務項目使用Redis?
如何設計一款可扛住高並發的紅包系統?
RabbitMQ的作用以及有哪些典型的應用場景?
如何基於微服務使用RabbitMQ?
什麽是延遲/死信隊列以及有哪些應用場景?
如何基於Spring Boot項目實戰死信隊列?
什麽是分佈式鎖以及有哪些實現方式?
如何基於微服務項目使用Redisson?
如何基於微服務項目使用ZooKeeper?
如何實現模仿微博高並發量的點贊、評論等常規操作?
如何基於Spring Boot整合中間件實現業務功能?
… …
通過閱讀本書,你將瞭解這些問題的確切答案,甚至你都可以舉一反三,自主學習掌握更多的技術進行實現。
目錄大綱
第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學院及網易云課堂等知名教育平台講師,教授學員上萬人。
追求技術,熱愛分享,相信技術改變生活,技術成就夢想,一直在不斷地學習和積累新知識,秉承修羅之道,花名阿修羅。