《分布式中間件技術實戰(zhàn)(Java版)》站在初學者的角度,介紹了幾款比較流行的分布式中間件,帶領讀者從零開始一步一個腳印地學習Java企業(yè)級應用開發(fā)。書中在講解必要的理論知識和應用場景后都給出了實際項目案例,可以提高讀者的開發(fā)水平和項目實戰(zhàn)能力。
《分布式中間件技術實戰(zhàn)(Java版)》共10章,分為3篇。第1篇開發(fā)工具準備,介紹了分布式系統(tǒng)架構的相關知識要點,包括其功能、作用及演進歷程,并由此引出了分布式中間件的相關介紹。第2篇開發(fā)實戰(zhàn),全面介紹了目前在實際開發(fā)中應用比較廣泛的幾款Java中間件,包括緩存中間件Redis、消息中間件RabbitMQ、統(tǒng)一協(xié)調管理中間件ZooKeeper和綜合中間件Redisson等,重點介紹了這幾款中間件的基本概念、典型應用場景及相應的功能組件等。第3篇總結,對相關內容做了重點回顧與總結。值得一提的是,《分布式中間件技術實戰(zhàn)(Java版)》在介紹幾款中間件的理論知識時,還以Spring Boot微服務框架作為奠基,整合了相關中間件之間的依賴,并結合作者的實際項目經(jīng)驗進行了代碼實戰(zhàn)。
《分布式中間件技術實戰(zhàn)(Java版)》特別適合中間件實踐經(jīng)驗為零的開發(fā)者閱讀;對于有一定Java應用開發(fā)經(jīng)驗的工程師而言,通過閱讀《分布式中間件技術實戰(zhàn)(Java版)》可以了解中間件在構建企業(yè)級應用過程中所提供的思路和解決方案;IT培訓機構的學員,也可以通過《分布式中間件技術實戰(zhàn)(Java版)》系統(tǒng)地學習中間件技術。
為什么要寫這《分布式中間件技術實戰(zhàn)(Java版)》
互聯(lián)網(wǎng)、移動互聯(lián)網(wǎng)時代的到來,不僅給企業(yè)業(yè)務的擴展帶來了巨大的挑戰(zhàn),同時也在某種層面上給開發(fā)者帶來了重大機遇。這一機遇主要是由具有高并發(fā)、高可用、高擴展等功能特性的分布式系統(tǒng)架構帶來的。然而,分布式系統(tǒng)架構的構建其實是一個相當復雜的過程,在這個過程中毫無疑問是需要有一系列的功能組件加以支撐的。其中,最為典型的當屬中間件,它在構建分布式系統(tǒng)架構的過程中起到了至關重要的作用。因此,想要進軍分布式系統(tǒng)架構領域,學習并實戰(zhàn)分布式中間件的相關知識,以及掌握其在實際典型業(yè)務場景中的使用,都是很有必要的。
目前,國內圖書市場上關于Java中間件的圖書不少,但是真正從初學者的角度,基于實際項目,通過各種典型業(yè)務模塊和案例來指導讀者提高開發(fā)水平的圖書卻很少。《分布式中間件技術實戰(zhàn)(Java版)》便是以實戰(zhàn)為主,配合必要的理論知識,介紹了幾款比較流行的分布式中間件,包括其理論層面的知識要點及在實際業(yè)務場景中的實戰(zhàn)過程,讓讀者幾乎可以從零開始一步一個腳印地學習Java企業(yè)級應用開發(fā)的各種常用中間件,從而提高實際開發(fā)水平和項目實戰(zhàn)能力。
《分布式中間件技術實戰(zhàn)(Java版)》有何特色
1.詳解Java企業(yè)級應用構建所涉及的常用中間件
《分布式中間件技術實戰(zhàn)(Java版)》主要介紹了Java企業(yè)級應用構建所涉及的各種常見中間件,包括Redis、RabbitMQ、ZooKeeper和Redisson等,不僅介紹了其理論要點,還介紹了其功能組件底層基礎架構的執(zhí)行過程。
2.基于Spring Boot微服務框架作為實戰(zhàn)中間件的奠基
《分布式中間件技術實戰(zhàn)(Java版)》采用了目前比較流行的Spring Boot微框架作為實戰(zhàn)中間件的奠基,在整合中間件的相關依賴并實踐其相關功能組件時,還介紹了Spring Boot、Spring MVC、MyBatis、Redis、RabbitMQ、ZooKeeper、Redisson和MySQL等熱門技術。
3.詳解實際生產(chǎn)環(huán)境中的各種典型應用案例,實用性強
《分布式中間件技術實戰(zhàn)(Java版)》不僅以大量圖文相結合的方式介紹了相關中間件的理論知識,而且還重點介紹了實際生產(chǎn)環(huán)境中各種中間件的典型應用場景,并給出了實現(xiàn)代碼,有很強的實用性。而且這些中間件之間也相互獨立,開發(fā)人員可以作為手冊隨時查閱和參考。
4.案例典型,有較高的應用價值
《分布式中間件技術實戰(zhàn)(Java版)》在介紹完每個中間件的理論要點后,都會介紹一個典型的業(yè)務場景,甚至以實際的應用系統(tǒng)作為實戰(zhàn)案例。這些案例來源于作者所開發(fā)的實際項目,具有較高的應用價值和參考性。而且這些案例分別使用不同的中間件實現(xiàn),便于讀者融會貫通地理解書中所講解的相關理論知識。
《分布式中間件技術實戰(zhàn)(Java版)》內容及知識體系
第1篇 開發(fā)工具準備
本篇包括第1、2章,主要介紹了分布式系統(tǒng)架構的演進歷程,并詳細介紹了分布式中間件的重要性,重點介紹了常見中間件的功能特性、作用及其典型應用場景。除此之外,本篇還介紹了如何基于Spring Boot微服務框架搭建微服務項目,并系統(tǒng)地介紹了各種相關的開發(fā)工具。
第2篇 開發(fā)實戰(zhàn)
本篇包括第3~9章,是全書的核心,介紹了目前在構建分布式系統(tǒng)架構中經(jīng)常使用的典型分布式中間件,包括緩存中間件Redis、消息中間件RabbitMQ、統(tǒng)一協(xié)調管理中間件ZooKeeper、綜合中間件Redisson等。本篇在介紹完每個中間件的相關理論要點后,都給出了相應中間件在實際應用場景和業(yè)務模塊中的實戰(zhàn)案例,以充分鞏固和加深讀者對每個中間件的理解,從而提高實際的項目開發(fā)水平。
第3篇 總結
本篇包括第10章,對全書內容做了總結,并對核心篇章,特別是對實際應用系統(tǒng)的設計、開發(fā)與實戰(zhàn)等章節(jié)做了重點回顧,并對讀者使用書中提供的樣例代碼提出了幾點建議。
配套資源獲取方式
《分布式中間件技術實戰(zhàn)(Java版)》涉及的源代碼文件及開發(fā)工具等配套資源需要讀者自行下載。請在華章公司的網(wǎng)站www.hzbook.com上搜索到本書,然后單擊資料下載按鈕,即可在本書頁面上找到配書資源下載鏈接,單擊該鏈接即可下載。另外,讀者也可以從Git倉庫中下載這些資料,網(wǎng)址為https://gitee.com/steadyjack/middleware.git。
適合閱讀《分布式中間件技術實戰(zhàn)(Java版)》的讀者
? 需要全面學習分布式中間件技術的人員;
? Java和Java Web開發(fā)程序員;
? Java EE開發(fā)工程師;
? 希望提高項目開發(fā)水平的開發(fā)人員;
? 希望鞏固和提升開發(fā)水平的系統(tǒng)架構師;
? 需要一本案頭必備查詢手冊的人員;
? 相關專業(yè)的高校學生和社會培訓學員。
閱讀《分布式中間件技術實戰(zhàn)(Java版)》的建議
? 讀者需要有一定的Java編程基礎和Spring Boot微服務框架使用經(jīng)驗;
? 有Java EE框架使用經(jīng)驗的讀者可以根據(jù)實際情況有重點地選擇閱讀各個中間件及其案例;
? 對于每個典型應用場景的實戰(zhàn)案例,先自己思考一下實現(xiàn)的思路,然后再閱讀,學習效果更好;
? 先對各種中間件的應用場景做必要的了解和學習,然后再結合提供的案例源代碼進行應用實戰(zhàn),理解起來更加容易,也更加深刻。
《分布式中間件技術實戰(zhàn)(Java版)》作者
《分布式中間件技術實戰(zhàn)(Java版)》由鐘林森主筆編寫。作為一個Java后端工程師,作者曾任職于國內某知名互聯(lián)網(wǎng)公司,擔任開發(fā)組長,并長期活躍于CSDN和51CTO學院等技術社區(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章 搭建微服務項目 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 總結 28
第2篇 開發(fā)實戰(zhàn)
第3章 緩存中間件Redis 30
3.1 Redis概述與典型應用場景介紹 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ù)結構實戰(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 總結 66
第4章 Redis典型應用場景實戰(zhàn)之搶紅包系統(tǒng) 67
4.1 整體業(yè)務流程介紹 67
4.1.1 搶紅包系統(tǒng)業(yè)務流程 68
4.1.2 業(yè)務流程分析 68
4.1.3 業(yè)務模塊劃分 70
4.2 數(shù)據(jù)庫表設計與環(huán)境搭建 71
4.2.1 數(shù)據(jù)庫表設計 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è)務模塊分析 92
4.4.2 整體流程實戰(zhàn) 93
4.4.3 業(yè)務模塊自測 99
4.5 搶紅包模塊實戰(zhàn) 101
4.5.1 業(yè)務模塊分析 101
4.5.2 整體流程 102
4.5.3 業(yè)務模塊自測 105
4.5.4 總結 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 總結 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的事件驅動模型實戰(zhàn) 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發(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 典型應用場景實戰(zhàn)之用戶登錄成功寫日志 188
5.5.1 整體業(yè)務流程介紹與分析 188
5.5.2 數(shù)據(jù)庫表設計 189
5.5.3 開發(fā)環(huán)境搭建 197
5.5.4 基于TopicExchange構建日志消息模型 200
5.5.5 異步發(fā)送接收登錄日志消息實戰(zhàn) 201
5.5.6 整體業(yè)務模塊自測實戰(zhàn) 205
5.6 總結 208
第6章 死信隊列/延遲隊列實戰(zhàn) 209
6.1 死信隊列概述 209
6.1.1 死信隊列簡介與作用 209
6.1.2 典型應用場景介紹 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 典型應用場景實戰(zhàn)之商城平臺訂單支付超時 226
6.3.1 整體業(yè)務場景介紹 227
6.3.2 整體業(yè)務流程分析 228
6.3.3 數(shù)據(jù)庫設計 229
6.3.4 構建RabbitMQ死信隊列消息模型 236
6.3.5 Controller層開發(fā)用戶下單及訂單失效功能 240
6.3.6 用戶下單支付超時延遲發(fā)送接收實戰(zhàn) 246
6.3.7 用戶下單支付超時整體功能自測 250
6.4 總結 254
第7章 分布式鎖實戰(zhàn) 256
7.1 分布式鎖概述 256
7.1.1 鎖機制 257
7.1.2 分布式鎖登場 263
7.1.3 典型應用場景介紹 265
7.1.4 小結 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 小結 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 小結 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 小結 319
7.5 典型應用場景之書籍搶購模塊設計與實戰(zhàn) 319
7.5.1 整體業(yè)務流程介紹與分析 319
7.5.2 數(shù)據(jù)庫表設計與用例設計 321
7.5.3 書籍搶購核心業(yè)務邏輯開發(fā)實戰(zhàn) 324
7.5.4 Jmeter重現(xiàn)庫存超賣的問題 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常見功能組件實戰(zhàn) 352
8.2.1 布隆過濾器 352
8.2.2 發(fā)布-訂閱式主題 355
8.2.3 數(shù)據(jù)結構之映射Map 361
8.2.4 數(shù)據(jù)結構之集合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 總結 398
第9章 Redisson典型應用場景實戰(zhàn)之高性能點贊 399
9.1 整體業(yè)務流程介紹與分析 399
9.1.1 業(yè)務背景介紹 400
9.1.2 業(yè)務流程介紹與分析 401
9.1.3 業(yè)務模塊劃分與數(shù)據(jù)庫設計 404
9.2 點贊與取消點贊操作模塊實戰(zhàn) 409
9.2.1 點贊與取消點贊業(yè)務流程分析 409
9.2.2 Controller層接收請求信息 412
9.2.3 Service層插入、更新并緩存記錄信息 415
9.2.4 業(yè)務模塊自測 421
9.3 排行榜業(yè)務模塊實戰(zhàn) 424
9.3.1 排行榜業(yè)務流程分析 425
9.3.2 接收前端請求并觸發(fā)緩存排行榜 426
9.3.3 業(yè)務模塊自測 428
9.4 總結 432
第3篇 總結
第10章 總結與回顧 434