動態

詳情 返回 返回

XXL-MQ v1.4.0 | 輕量級分佈式消息隊列 - 動態 詳情

Release Notes:

  • 1、【重構】XXL-MQ 核心代碼重構,基於“存算分離”與“分區機制”設計思想。在輕量級、分佈式的基礎上,強化高吞吐、海量消息及水平擴展能力。;
  • 2、【新增】存算分離:消息中心(Broker)與消息存儲層(Store)解耦。消息中心 提供消息OpenApi以及消息控制枱管理能力;消息存儲層 提供消息存儲能力。得益於存算分離系統設計,消息中心支持水平擴展,支持線性提升消息吞吐及存儲能力。
  • 3、【新增】分區機制:針對消息數據進行分區路由計算及隔離,結合在線消費者進行 “分區動態平衡分配”(每個消費者分配負責分區區間),實現消費者與消息數據的靈活路由綁定。基於分區機制,靈活實現並行、串行、分片、Hash、廣播...等多消息類型,保障系統高吞吐特性。
  • 4、【增強】擴展支持多消息類型:

    • 並行消息:多個消費者並行消費數據,支持輪詢或隨機策略。適用於消息吞吐量較大的業務場景,如郵件發送、日誌記錄等。
    • 串行消息:同一時刻只有一個消費者消費數據,消息按照生產順序FIFO串行消費。適用於有串行消費訴求的業務場景,如秒殺、搶單等場景;
    • 分片消息:支持根據業務參數進行Hash分片,相同分片的消息數據路由至同一個消費者FIFO串行消費,不同分片的消息數據路由至不同消費者並行執行。適用於有根據業務參數分片消費的業務場景,如短信發送,可實現同一個手機號(業務參數)的消息路由至單個消費者串行消息,同時全局消息分片並行消費。
    • 廣播消息:消息發送後,廣播發送給相關主題全部在線消費者。適用於廣播消息場景,如廣播通知、廣播更新緩存等;
    • 延時消息:支持設置消息的延遲生效時間,到達設置的生效時間時該消息才會被消費。適用於延時消費場景,如訂單超時取消、定時發送郵件等;
    • 失敗重試消息:支持設置消息的失敗重試次數,自定義重試間隔側路,消息失敗時會主動進行重試消費,直至重試次數耗盡或者消費成功。
  • 5、【增強】海量消息:消息存儲基於DB實現,支持Mysql、TiDB多存儲介質;消息存儲進行冷熱設計,並滾動式清理歸檔,支持海量消息堆積(Mysql存儲支持千萬級;TiDB存儲支持10億級/理論無上限)。
  • 6、【新增】超時控制: 支持自定義消息超時時間,消息消費超時將會主動中斷;
  • 7、【新增】跨語言/OpenAPI:提供語言無關的消息中心 OpenAPI(RESTFUL 格式),提供消息生產、拉取及消費等能力,實現多語言支持;
  • 8、【增強】易用性提升: 一行代碼即可發佈一條消息,一行註解即可訂閲一個消息主題,接入靈活方便;
  • 9、【增強】消息可視化: 提供消息中心Web控制枱,可在線管理消息主題、消息數據,查看消費數據及消費軌跡等;
  • 10、【新增】容器化:提供官方Docker鏡像,並實時更新推送DockerHub,進一步實現產品開箱即用;

XXL-MQ 代碼接入示例:

步驟一:開發 “消費者(Consumer)” 代碼

@XxlMq("topic_sample")
public void consume() {    
    // 獲取消息內容;
    String messageData = XxlMqHelper.getMessageData();

    // 設置消息消費結果,可選;不設置時,默認為消費成功;
    XxlMqHelper.consumeSuccess();
}

步驟二:發送(生產)消息數據

// 簡單發送消息
XxlMqHelper.produce("topic_sample", "消息數據" );

// 指定延時生效時間
XxlMqHelper.produce("topic_sample", "消息數據", effectTime, );

步驟三:消息Topic管理 (可選)
登陸 “XXL-MQ消息中心” ,支持針對消息Topic進行管理維護,包括: “消息路由策略、歸檔清理策略、失敗重試策略、超時時間控制” 等信息管理維護。
(説明:該步驟為可選操作。消費者服務啓動後將會自動註冊生成 Topic信息,如果沒有Topic信息定製修改訴求,可忽略該步驟。)

XXL-MQ 消息中心:消息主題(Topic)管理;
在這裏插入圖片描述XXL-MQ 消息中心:消息主題(Topic)編輯;
在這裏插入圖片描述

步驟四:消息數據管理(可選)
登陸 “XXL-MQ消息中心” ,支持線上化管理維護消息數據,包括:“查詢消費軌跡”、“消息數據清理”、“消息數據歸檔” 等管理操作。
在這裏插入圖片描述

項目簡介:

XXL-MQ是一個輕量級分佈式消息隊列,具備“輕量級、分佈式、高吞吐(單機TPS 10W+)、海量消息(億級)” 等特性,支持 “並行消息、串行消息、分片消息、廣播消息、延遲消息、失敗重試消息”多消息類型,現已開放源代碼,開箱即用。

  • 中文文檔:https://www.xuxueli.com/xxl-mq/
  • Github:https://github.com/xuxueli/xxl-mq
    在這裏插入圖片描述

項目特性:

  • 1、簡單易用: 一行代碼即可發佈一條消息,一行註解即可訂閲一個消息主題,接入靈活方便;
  • 2、輕量級: 除存儲層(可選,支持MySQL/TiDB),無第三方依賴;部署及運維低成本、輕量級。
  • 3、水平擴展:得益於存算分離系統設計,消息中心為無狀態服務;消息中心(Broker)及消費者(Client)均支持集羣擴展部署,線形提升消息生產及吞吐能力;
  • 4、高可用/HA:消息中心內置註冊發現能力,支持Broker服務以及Topic消費者動態註冊;消息中心與消費者單節點故障時,可自動摘除故障節點,實現消息吞吐及消費故障轉移;
  • 5、高吞吐:消息生產及消費鏈路進行批量、並行及異步系統設計,消息存儲進行冷數據及時清理歸檔設計,實現消息高吞吐(Mysql存儲單機吞吐1W;TiDB存儲單機吞吐10W)。
  • 6、海量消息:消息存儲基於DB實現,支持Mysql、TiDB多存儲介質;消息存儲進行冷熱設計,並滾動式清理歸檔,支持海量消息堆積(Mysql存儲支持千萬級;TiDB存儲支持10億級/理論無上限)。
  • 7、存算分離:消息中心(Broker)設計為無狀態服務,提供主題及消息控制枱管理能力以及消息RPC服務能力,與消息存儲層解耦;
  • 8、跨語言/OpenAPI:提供語言無關的消息中心 OpenAPI(RESTFUL 格式),提供消息生產、拉取及消費等能力,實現多語言支持;
  • 9、實時性:消息中心與消費者基於JsonRpc進行吞吐消費,支持毫秒級生產投遞、秒級消費感知,延遲消息基於時間輪機制支持零延遲消費感知;
  • 10、消息持久化:消息數據默認持久化存儲,並支持Topic維度自定義清理歸檔策略,靈活控制消息數據滾動歸檔清理;
  • 11、分區路由策略:針對消息數據進行分區並路由消費者,提供豐富路由策略,包括:Hash、輪詢、隨機、第一個、最後一個、廣播;
  • 12、歸檔策略:針對已消費完成數據滾動歸檔及清理,提供豐富歸檔策略,包括:歸檔保留7天、歸檔保留30天、歸檔保留90天、歸檔永久保留、不歸檔直接清理;
  • 13、重試策略:針對消費失敗消息,支持設置豐富重試策略,包括:固定間隔、線性間隔、隨機間隔;
  • 14、失敗重試:針對消費失敗消息,支持自定義重試次數、以及重試間隔基數,結合重試策略支持靈活消費失敗重試,支持重試次數耗盡或者消費成功;
  • 15、超時控制: 支持自定義消息超時時間,消息消費超時將會主動中斷;
  • 16、多消息類型:

    • 並行消息:多個消費者並行消費數據,支持輪詢或隨機策略。適用於消息吞吐量較大的業務場景,如郵件發送、日誌記錄等。
    • 串行消息:同一時刻只有一個消費者消費數據,消息按照生產順序FIFO串行消費。適用於有串行消費訴求的業務場景,如秒殺、搶單等場景;
    • 分片消息:支持根據業務參數進行Hash分片,相同分片的消息數據路由至同一個消費者FIFO串行消費,不同分片的消息數據路由至不同消費者並行執行。適用於有根據業務參數分片消費的業務場景,如短信發送,可實現同一個手機號(業務參數)的消息路由至單個消費者串行消息,同時全局消息分片並行消費。
    • 廣播消息:消息發送後,廣播發送給相關主題全部在線消費者。適用於廣播消息場景,如廣播通知、廣播更新緩存等;
    • 延時消息:支持設置消息的延遲生效時間,到達設置的生效時間時該消息才會被消費。適用於延時消費場景,如訂單超時取消、定時發送郵件等;
    • 失敗重試消息:支持設置消息的失敗重試次數,自定義重試間隔側路,消息失敗時會主動進行重試消費,直至重試次數耗盡或者消費成功。
  • 17、消息可視化: 提供消息中心Web控制枱,可在線管理消息主題、消息數據,查看消費數據及消費軌跡等;
  • 18、消息軌跡: 消費生產及消費軌跡日誌會進行記錄,並支持在線查看,輔助排查業務問題;
  • 19、優先級:支持設置消息主題優先級,優先級越高,消費吞吐資源配置及保障越高;
  • 20、消息失敗告警:支持以Topic粒度監控消息,存在失敗消息時主動推送告警郵件;默認提供郵件方式失敗告警,同時預留擴展接口,可方面的擴展短信、釘釘等告警方式;
  • 21、容器化:提供官方Docker鏡像,並實時更新推送DockerHub,進一步實現產品開箱即用;
  • 22、訪問令牌(AccessToken):為提升系統安全性,消息中心和消費者客户端進行安全性校驗,校驗AccessToken合法性;
user avatar kohler21 頭像 eolink 頭像 java_study 頭像 cbuc 頭像 alijishu 頭像 gvison 頭像 yunpan-plus 頭像 xiaoal 頭像 fulade 頭像 wisdomqq 頭像 mecode 頭像 wb_64322745e6aa2 頭像
點贊 19 用戶, 點贊了這篇動態!
點贊

Add a new 評論

Some HTML is okay.