為什么要寫這《分布式中間件技術(shù)實戰(zhàn)(Java版)》
互聯(lián)網(wǎng)、移動互聯(lián)網(wǎng)時代的到來,不僅給企業(yè)業(yè)務(wù)的擴展帶來了巨大的挑戰(zhàn),同時也在某種層面上給開發(fā)者帶來了重大機遇。這一機遇主要是由具有高并發(fā)、高可用、高擴展等功能特性的分布式系統(tǒng)架構(gòu)帶來的。然而,分布式系統(tǒng)架構(gòu)的構(gòu)建其實是一個相當復(fù)雜的過程,在這個過程中毫無疑問是需要有一系列的功能組件加以支撐的。其中,最為典型的當屬中間件,它在構(gòu)建分布式系統(tǒng)架構(gòu)的過程中起到了至關(guān)重要的作用。因此,想要進軍分布式系統(tǒng)架構(gòu)領(lǐng)域,學習并實戰(zhàn)分布式中間件的相關(guān)知識,以及掌握其在實際典型業(yè)務(wù)場景中的使用,都是很有必要的。
目前,國內(nèi)圖書市場上關(guān)于Java中間件的圖書不少,但是真正從初學者的角度,基于實際項目,通過各種典型業(yè)務(wù)模塊和案例來指導(dǎo)讀者提高開發(fā)水平的圖書卻很少。《分布式中間件技術(shù)實戰(zhàn)(Java版)》便是以實戰(zhàn)為主,配合必要的理論知識,介紹了幾款比較流行的分布式中間件,包括其理論層面的知識要點及在實際業(yè)務(wù)場景中的實戰(zhàn)過程,讓讀者幾乎可以從零開始一步一個腳印地學習Java企業(yè)級應(yīng)用開發(fā)的各種常用中間件,從而提高實際開發(fā)水平和項目實戰(zhàn)能力。
《分布式中間件技術(shù)實戰(zhàn)(Java版)》有何特色
1.詳解Java企業(yè)級應(yīng)用構(gòu)建所涉及的常用中間件
《分布式中間件技術(shù)實戰(zhàn)(Java版)》主要介紹了Java企業(yè)級應(yīng)用構(gòu)建所涉及的各種常見中間件,包括Redis、RabbitMQ、ZooKeeper和Redisson等,不僅介紹了其理論要點,還介紹了其功能組件底層基礎(chǔ)架構(gòu)的執(zhí)行過程。
2.基于Spring Boot微服務(wù)框架作為實戰(zhàn)中間件的奠基
《分布式中間件技術(shù)實戰(zhàn)(Java版)》采用了目前比較流行的Spring Boot微框架作為實戰(zhàn)中間件的奠基,在整合中間件的相關(guān)依賴并實踐其相關(guān)功能組件時,還介紹了Spring Boot、Spring MVC、MyBatis、Redis、RabbitMQ、ZooKeeper、Redisson和MySQL等熱門技術(shù)。
3.詳解實際生產(chǎn)環(huán)境中的各種典型應(yīng)用案例,實用性強
《分布式中間件技術(shù)實戰(zhàn)(Java版)》不僅以大量圖文相結(jié)合的方式介紹了相關(guān)中間件的理論知識,而且還重點介紹了實際生產(chǎn)環(huán)境中各種中間件的典型應(yīng)用場景,并給出了實現(xiàn)代碼,有很強的實用性。而且這些中間件之間也相互獨立,開發(fā)人員可以作為手冊隨時查閱和參考。
4.案例典型,有較高的應(yīng)用價值
《分布式中間件技術(shù)實戰(zhàn)(Java版)》在介紹完每個中間件的理論要點后,都會介紹一個典型的業(yè)務(wù)場景,甚至以實際的應(yīng)用系統(tǒng)作為實戰(zhàn)案例。這些案例來源于作者所開發(fā)的實際項目,具有較高的應(yīng)用價值和參考性。而且這些案例分別使用不同的中間件實現(xiàn),便于讀者融會貫通地理解書中所講解的相關(guān)理論知識。
《分布式中間件技術(shù)實戰(zhàn)(Java版)》內(nèi)容及知識體系
第1篇 開發(fā)工具準備
本篇包括第1、2章,主要介紹了分布式系統(tǒng)架構(gòu)的演進歷程,并詳細介紹了分布式中間件的重要性,重點介紹了常見中間件的功能特性、作用及其典型應(yīng)用場景。除此之外,本篇還介紹了如何基于Spring Boot微服務(wù)框架搭建微服務(wù)項目,并系統(tǒng)地介紹了各種相關(guān)的開發(fā)工具。
第2篇 開發(fā)實戰(zhàn)
本篇包括第3~9章,是全書的核心,介紹了目前在構(gòu)建分布式系統(tǒng)架構(gòu)中經(jīng)常使用的典型分布式中間件,包括緩存中間件Redis、消息中間件RabbitMQ、統(tǒng)一協(xié)調(diào)管理中間件ZooKeeper、綜合中間件Redisson等。本篇在介紹完每個中間件的相關(guān)理論要點后,都給出了相應(yīng)中間件在實際應(yīng)用場景和業(yè)務(wù)模塊中的實戰(zhàn)案例,以充分鞏固和加深讀者對每個中間件的理解,從而提高實際的項目開發(fā)水平。
第3篇 總結(jié)
本篇包括第10章,對全書內(nèi)容做了總結(jié),并對核心篇章,特別是對實際應(yīng)用系統(tǒng)的設(shè)計、開發(fā)與實戰(zhàn)等章節(jié)做了重點回顧,并對讀者使用書中提供的樣例代碼提出了幾點建議。
配套資源獲取方式
《分布式中間件技術(shù)實戰(zhàn)(Java版)》涉及的源代碼文件及開發(fā)工具等配套資源需要讀者自行下載。請在華章公司的網(wǎng)站www.hzbook.com上搜索到本書,然后單擊資料下載按鈕,即可在本書頁面上找到配書資源下載鏈接,單擊該鏈接即可下載。另外,讀者也可以從Git倉庫中下載這些資料,網(wǎng)址為https://gitee.com/steadyjack/middleware.git。
適合閱讀《分布式中間件技術(shù)實戰(zhàn)(Java版)》的讀者
? 需要全面學習分布式中間件技術(shù)的人員;
? Java和Java Web開發(fā)程序員;
? Java EE開發(fā)工程師;
? 希望提高項目開發(fā)水平的開發(fā)人員;
? 希望鞏固和提升開發(fā)水平的系統(tǒng)架構(gòu)師;
? 需要一本案頭必備查詢手冊的人員;
? 相關(guān)專業(yè)的高校學生和社會培訓學員。
閱讀《分布式中間件技術(shù)實戰(zhàn)(Java版)》的建議
? 讀者需要有一定的Java編程基礎(chǔ)和Spring Boot微服務(wù)框架使用經(jīng)驗;
? 有Java EE框架使用經(jīng)驗的讀者可以根據(jù)實際情況有重點地選擇閱讀各個中間件及其案例;
? 對于每個典型應(yīng)用場景的實戰(zhàn)案例,先自己思考一下實現(xiàn)的思路,然后再閱讀,學習效果更好;
? 先對各種中間件的應(yīng)用場景做必要的了解和學習,然后再結(jié)合提供的案例源代碼進行應(yīng)用實戰(zhàn),理解起來更加容易,也更加深刻。
《分布式中間件技術(shù)實戰(zhàn)(Java版)》作者
《分布式中間件技術(shù)實戰(zhàn)(Java版)》由鐘林森主筆編寫。作為一個Java后端工程師,作者曾任職于國內(nèi)某知名互聯(lián)網(wǎng)公司,擔任開發(fā)組長,并長期活躍于CSDN和51CTO學院等技術(shù)社區(qū),寫作了大量原創(chuàng)博客,訪問量達百萬人次。作者還作為CSDN學院、網(wǎng)易云課堂等知名教育平臺的講師,授課學員超過萬人。
……
第1篇 開發(fā)工具準備
第1章 走進分布式中間件 2
1.1 分布式系統(tǒng)概述 2
1.1.1 白話分布式系統(tǒng) 3
1.1.2 分布式系統(tǒng)發(fā)展歷程 3
1.1.3 分布式系統(tǒng)特性 6
1.1.4 分布式系統(tǒng)常見問題 7
1.2 分布式中間件概述 7
1.2.1 白話分布式中間件 7
1.2.2 常見中間件介紹 8
1.3 本書核心知識要點 9
1.4 本書實戰(zhàn)要求與建議 10
第2章 搭建微服務(wù)項目 11
2.1 Spring Boot概述 11
2.1.1 什么是Spring Boot 11
2.1.2 Spring Boot的優(yōu)勢 12
2.1.3 Spring Boot的幾大特性 13
2.2 搭建規(guī)范與搭建流程 13
2.2.1 Spring Boot項目搭建規(guī)范 14
2.2.2 Spring Boot項目搭建流程 14
2.2.3 寫個Hello World吧 26
2.3 總結(jié) 28
第2篇 開發(fā)實戰(zhàn)
第3章 緩存中間件Redis 30
3.1 Redis概述與典型應(yīng)用場景介紹 30
3.2 Redis的使用 32
3.2.1 快速安裝Redis 32
3.2.2 在Windows環(huán)境下使用Redis 34
3.2.3 Spring Boot項目整合Redis 37
3.2.4 Redis自定義注入Bean組件配置 38
3.2.5 RedisTemplate實戰(zhàn) 39
3.2.6 StringRedisTemplate實戰(zhàn) 43
3.3 Redis常見數(shù)據(jù)結(jié)構(gòu)實戰(zhàn) 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實戰(zhàn)場景之緩存穿透 56
3.4.1 什么是緩存穿透 57
3.4.2 緩存穿透的解決方案 58
3.4.3 實戰(zhàn)過程 58
3.4.4 其他典型問題介紹 65
3.5 總結(jié) 66
第4章 Redis典型應(yīng)用場景實戰(zhàn)之搶紅包系統(tǒng) 67
4.1 整體業(yè)務(wù)流程介紹 67
4.1.1 搶紅包系統(tǒng)業(yè)務(wù)流程 68
4.1.2 業(yè)務(wù)流程分析 68
4.1.3 業(yè)務(wù)模塊劃分 70
4.2 數(shù)據(jù)庫表設(shè)計與環(huán)境搭建 71
4.2.1 數(shù)據(jù)庫表設(shè)計 71
4.2.2 開發(fā)環(huán)境搭建 73
4.2.3 開發(fā)流程介紹 83
4.3 紅包金額隨機生成算法實戰(zhàn) 85
4.3.1 隨機數(shù)算法 86
4.3.2 紅包隨機金額生成算法要求 86
4.3.3 二倍均值法簡介 87
4.3.4 紅包隨機金額生成算法實戰(zhàn) 88
4.3.5 紅包隨機金額生成算法自測 90
4.4 發(fā)紅包模塊實戰(zhàn) 91
4.4.1 業(yè)務(wù)模塊分析 92
4.4.2 整體流程實戰(zhàn) 93
4.4.3 業(yè)務(wù)模塊自測 99
4.5 搶紅包模塊實戰(zhàn) 101
4.5.1 業(yè)務(wù)模塊分析 101
4.5.2 整體流程 102
4.5.3 業(yè)務(wù)模塊自測 105
4.5.4 總結(jié) 109
4.6 Jmeter壓力測試高并發(fā)搶紅包 110
4.7 問題分析與優(yōu)化方案 116
4.7.1 問題分析 117
4.7.2 優(yōu)化方案介紹 118
4.7.3 優(yōu)化方案之Redis分布式鎖實戰(zhàn) 118
4.7.4 不足之處 122
4.8 總結(jié) 122
第5章 消息中間件RabbitMQ 124
5.1 RabbitMQ簡介 124
5.1.1 認識RabbitMQ 125
5.1.2 典型應(yīng)用場景介紹 126
5.1.3 RabbitMQ后端控制臺介紹 132
5.1.4 基于Spring的事件驅(qū)動模型實戰(zhàn) 133
5.2 Spring Boot項目整合RabbitMQ 137
5.2.1 RabbitMQ相關(guān)詞匯介紹 138
5.2.2 Spring Boot項目整合RabbitMQ 139
5.2.3 自定義注入配置Bean相關(guān)組件 140
5.2.4 RabbitMQ發(fā)送、接收消息實戰(zhàn) 142
5.2.5 其他發(fā)送接收消息方式實戰(zhàn) 147
5.3 RabbitMQ多種消息模型實戰(zhàn) 152
5.3.1 基于FanoutExchange的消息模型實戰(zhàn) 152
5.3.2 基于DirectExchange的消息模型實戰(zhàn) 160
5.3.3 基于TopicExchange的消息模型實戰(zhàn) 165
5.4 RabbitMQ確認消費機制 171
5.4.1 消息高可用和確認消費 172
5.4.2 常見的確認消費模式介紹 174
5.4.3 基于自動確認消費模式實戰(zhàn) 176
5.4.4 基于手動確認消費模式實戰(zhàn) 182
5.5 典型應(yīng)用場景實戰(zhàn)之用戶登錄成功寫日志 188
5.5.1 整體業(yè)務(wù)流程介紹與分析 188
5.5.2 數(shù)據(jù)庫表設(shè)計 189
5.5.3 開發(fā)環(huán)境搭建 197
5.5.4 基于TopicExchange構(gòu)建日志消息模型 200
5.5.5 異步發(fā)送接收登錄日志消息實戰(zhàn) 201
5.5.6 整體業(yè)務(wù)模塊自測實戰(zhàn) 205
5.6 總結(jié) 208
第6章 死信隊列/延遲隊列實戰(zhàn) 209
6.1 死信隊列概述 209
6.1.1 死信隊列簡介與作用 209
6.1.2 典型應(yīng)用場景介紹 212
6.2 RabbitMQ死信隊列實戰(zhàn) 213
6.2.1 死信隊列專有詞匯介紹 214
6.2.2 死信隊列消息模型實戰(zhàn) 215
6.2.3 死信隊列延遲發(fā)送消息實戰(zhàn) 221
6.3 典型應(yīng)用場景實戰(zhàn)之商城平臺訂單支付超時 226
6.3.1 整體業(yè)務(wù)場景介紹 227
6.3.2 整體業(yè)務(wù)流程分析 228
6.3.3 數(shù)據(jù)庫設(shè)計 229
6.3.4 構(gòu)建RabbitMQ死信隊列消息模型 236
6.3.5 Controller層開發(fā)用戶下單及訂單失效功能 240
6.3.6 用戶下單支付超時延遲發(fā)送接收實戰(zhàn) 246
6.3.7 用戶下單支付超時整體功能自測 250
6.4 總結(jié) 254
第7章 分布式鎖實戰(zhàn) 256
7.1 分布式鎖概述 256
7.1.1 鎖機制 257
7.1.2 分布式鎖登場 263
7.1.3 典型應(yīng)用場景介紹 265
7.1.4 小結(jié) 268
7.2 基于數(shù)據(jù)庫實現(xiàn)分布式鎖 268
7.2.1 樂觀鎖簡介 268
7.2.2 樂觀鎖實戰(zhàn) 269
7.2.3 Jmeter高并發(fā)測試樂觀鎖 280
7.2.4 悲觀鎖簡介 286
7.2.5 悲觀鎖實戰(zhàn) 288
7.2.6 Jmeter高并發(fā)測試悲觀鎖 290
7.2.7 小結(jié) 291
7.3 基于Redis實現(xiàn)分布式鎖 292
7.3.1 Redis溫故而知新 292
7.3.2 分布式鎖的實現(xiàn)流程與原理分析 294
7.3.3 基于Redis實戰(zhàn)實現(xiàn)分布式鎖 295
7.3.4 Jmeter高并發(fā)測試 303
7.3.5 小結(jié) 307
7.4 基于ZooKeeper實現(xiàn)分布式鎖 308
7.4.1 ZooKeeper簡介與作用 308
7.4.2 分布式鎖的實現(xiàn)流程與原理分析 310
7.4.3 Spring Boot整合ZooKeeper 312
7.4.4 基于ZooKeeper實現(xiàn)分布式鎖 315
7.4.5 Jmeter高并發(fā)測試 317
7.4.6 小結(jié) 319
7.5 典型應(yīng)用場景之書籍搶購模塊設(shè)計與實戰(zhàn) 319
7.5.1 整體業(yè)務(wù)流程介紹與分析 319
7.5.2 數(shù)據(jù)庫表設(shè)計與用例設(shè)計 321
7.5.3 書籍搶購核心業(yè)務(wù)邏輯開發(fā)實戰(zhàn) 324
7.5.4 Jmeter重現(xiàn)庫存超賣的問題 328
7.5.5 采用分布式鎖解決問題 330
7.5.6 小結(jié) 334
7.6 總結(jié) 334
第8章 綜合中間件Redisson 336
8.1 Redisson概述 336
8.1.1 Redisson簡介與作用 337
8.1.2 Redisson的功能特性 339
8.1.3 典型應(yīng)用場景之布隆過濾器與主題 340
8.1.4 典型應(yīng)用場景之延遲隊列與分布式鎖 345
8.1.5 Spring Boot整合Redisson 348
8.2 Redisson常見功能組件實戰(zhàn) 352
8.2.1 布隆過濾器 352
8.2.2 發(fā)布-訂閱式主題 355
8.2.3 數(shù)據(jù)結(jié)構(gòu)之映射Map 361
8.2.4 數(shù)據(jù)結(jié)構(gòu)之集合Set 366
8.2.5 隊列Queue實戰(zhàn) 370
8.2.6 延遲隊列Delayed Queue實戰(zhàn)1 374
8.2.7 延遲隊列Delayed Queue實戰(zhàn)2 381
8.3 分布式鎖實戰(zhàn) 385
8.3.1 重溫分布式鎖 385
8.3.2 分布式鎖之一次性鎖實戰(zhàn) 387
8.3.3 分布式鎖之可重入鎖實戰(zhàn) 392
8.4 總結(jié) 398
第9章 Redisson典型應(yīng)用場景實戰(zhàn)之高性能點贊 399
9.1 整體業(yè)務(wù)流程介紹與分析 399
9.1.1 業(yè)務(wù)背景介紹 400
9.1.2 業(yè)務(wù)流程介紹與分析 401
9.1.3 業(yè)務(wù)模塊劃分與數(shù)據(jù)庫設(shè)計 404
9.2 點贊與取消點贊操作模塊實戰(zhàn) 409
9.2.1 點贊與取消點贊業(yè)務(wù)流程分析 409
9.2.2 Controller層接收請求信息 412
9.2.3 Service層插入、更新并緩存記錄信息 415
9.2.4 業(yè)務(wù)模塊自測 421
9.3 排行榜業(yè)務(wù)模塊實戰(zhàn) 424
9.3.1 排行榜業(yè)務(wù)流程分析 425
9.3.2 接收前端請求并觸發(fā)緩存排行榜 426
9.3.3 業(yè)務(wù)模塊自測 428
9.4 總結(jié) 432
第3篇 總結(jié)
第10章 總結(jié)與回顧 434