??今天是2025/04/14?21:58 day 20
總路線請移步主頁Java大綱相關文章
今天進行RocketMQ 6,7,8 個模塊的歸納
最近在忙畢設,更新有點慢,見諒
首先是RocketMQ 的相關內容概括的思維導圖
6. 安全機制
6.1 ACL 訪問控制
-
核心功能
-
權限分級:通過用戶(User)和密鑰(AccessKey/SecretKey)實現身份驗證,支持細粒度權限控制(如發布、訂閱、管理權限)。
-
資源隔離:可針對 Topic、Consumer Group 等資源設置訪問權限(白名單/黑名單)。
-
IP 白名單:限制 Broker 或客戶端的訪問 IP,防止未授權節點接入。
-
-
配置示例
# Broker 開啟 ACL aclEnable=true # 配置 ACL 規則文件路徑 aclFile=/path/to/acl.yml
6.2 傳輸加密
-
TLS/SSL 加密
-
通信加密:支持客戶端與 Broker 之間、Broker 主從節點之間的 TLS 加密傳輸。
-
證書管理:需配置 CA 證書、服務端證書和私鑰,防止中間人攻擊。
-
-
配置步驟
-
生成證書(使用 OpenSSL 或購買商業證書)。
-
Broker 配置 TLS:
# 啟用 TLS tlsEnable=true tlsServerCertPath=/path/to/server.crt tlsServerKeyPath=/path/to/server.key
-
客戶端配置 TLS:在 Producer/Consumer 代碼中加載信任證書鏈。
-
6.3 審計與日志安全
-
操作審計:記錄關鍵操作(如 Topic 創建、權限變更),支持對接日志分析系統(如 ELK)。
-
敏感信息脫敏:日志中自動隱藏 AccessKey 等敏感字段。
7. 典型應用場景
7.1 流量削峰填谷
-
場景說明
-
應對突發流量(如電商秒殺、搶購活動),將瞬時高并發請求轉為異步消息,由下游服務按處理能力消費。
-
-
RocketMQ 優勢
-
高吞吐(單機百萬級 TPS)和堆積能力(支持億級消息堆積)。
-
動態擴展 Consumer 實例數量,快速消化積壓消息。
-
7.2 系統異步解耦
-
場景說明
-
微服務架構中,通過消息隊列解耦服務依賴(如訂單服務完成支付后,通知庫存服務扣減庫存)。
-
-
實現模式
-
事件驅動架構(EDA):服務間通過消息事件通信,提升系統彈性。
-
最終一致性:結合事務消息保障跨服務操作的最終一致性。
-
7.3 分布式事務一致性
-
場景說明
-
解決跨數據庫、跨服務的分布式事務問題(如銀行轉賬:A 賬戶扣款成功后,B 賬戶需同步到賬)。
-
-
RocketMQ 方案
-
事務消息機制:
-
發送 Half 消息(預提交)。
-
執行本地事務(如更新數據庫)。
-
根據本地事務結果提交或回滾消息。
-
-
事務回查:若 Producer 未及時提交狀態,Broker 主動回查事務結果,確保數據一致性。
-
7.4 大數據實時管道
-
場景說明
-
將業務系統數據實時同步到大數據平臺(如 Flink、Hadoop、Elasticsearch)。
-
-
技術實現
-
RocketMQ Connect:內置多種數據源插件(MySQL、Kafka、HBase),實現低代碼數據同步。
-
與 Flink 集成:通過 RocketMQ-Flink Connector 實現流式計算。
-
8. 生態集成
8.1 Spring/Spring Boot 整合
-
核心依賴
<dependency><groupId>org.apache.rocketmq</groupId><artifactId>rocketmq-spring-boot-starter</artifactId><version>2.2.3</version> </dependency>
-
關鍵配置
rocketmq:name-server: 127.0.0.1:9876producer:group: my-producer-groupconsumer:group: my-consumer-group
-
注解驅動開發
-
@RocketMQMessageListener
:快速定義 Consumer。 -
RocketMQTemplate
:簡化消息發送(支持同步/異步/事務消息)。
-
8.2 RocketMQ Connect
-
功能定位
-
實現 RocketMQ 與異構系統(數據庫、文件系統、其他消息隊列)的數據雙向同步。
-
-
核心組件
-
Source Connector:從外部系統拉取數據寫入 RocketMQ。
-
Sink Connector:從 RocketMQ 消費數據寫入外部系統。
-
-
使用場景
-
MySQL Binlog 實時同步到 Elasticsearch。
-
Kafka 數據遷移到 RocketMQ。
-
8.3 RocketMQ Streams
-
輕量級流處理引擎
-
支持類 SQL 語法實時處理消息流(過濾、聚合、Join 等操作)。
-
與 Flink 對比:
特性 RocketMQ Streams Apache Flink 部署復雜度 輕量級,內嵌于 RocketMQ 需獨立集群,運維成本高 功能范圍 基礎流處理(適合簡單 ETL) 完整流批一體計算(復雜場景)
-
-
示例:統計訂單金額
SELECT order_id, SUM(amount) FROM orders GROUP BY TUMBLE(proctime, INTERVAL '1' MINUTE), order_id