1. 程式人生 > >XXL-MQ v1.2.0,分散式訊息佇列

XXL-MQ v1.2.0,分散式訊息佇列

Release Notes

  • 1、client端與Broker長鏈初始化優化,防止重複建立連線。
  • 2、POM多項依賴升級;
  • 3、UI元件升級;
  • 4、規範專案目錄結構;
  • 6、超時控制;
  • 5、通訊遷移至 xxl-rpc;
  • 6、除了springboot型別示例;新增無框架示例專案 "xxl-mq-samples-frameless"。不依賴第三方框架,只需main方法即可啟動執行;
  • 7、訊息生產,相容“非同步批量多執行緒生產”+“同步生產”兩種方式,提升訊息傳送效能;
  • 8、底層通訊全非同步化:訊息新增 + 訊息新增接受 + 訊息回撥 + 訊息回撥接受;僅批量PULL訊息與鎖訊息非非同步;
  • 9、序列消費優化,舊版本固定第一臺消費,導致其壓力過大;新版支援自定義shardingId從而實現序列訊息的負載均衡,緩解單臺壓力;
  • 10、廣播訊息優化,舊版本不支援訊息持久化,新版本支援訊息持久化,而且廣播支援與序列結合實用,更加靈活;
  • 11、併發訊息、序列訊息、廣播訊息全部優化重構,底層邏輯統一,方便後續維護擴充套件;

    • 序列:取消ZK依賴,廢棄舊版ZK鎖方式;優化為通過訊息 shardingId 結合消費者排序取模方式;相同 shardingId 的訊息將會固定被同一個消費者消費;
    • 並行:沿用舊版消費者排序取模方式,不過取模引數新增支援 shardingId 引數;確保訊息平均分配給線上消費者;
    • 廣播:取消ZK依賴,廢棄舊版ZK方式;優化為通過訊息 group 屬性群發方式;每個group都會消費該訊息,但相同group下訊息僅被消費一次;
  • 12、Broker服務支援自定義指定註冊IP等資訊,位置 "XxlMqBrokerImpl.initServer";
  • 13、Topic自動發現:訊息中心支援動態發現Topic,並展示在訊息主題列表,延時1min;
  • 14、執行報表:支援展示線上業務線、訊息主題、訊息記錄等資訊、可線上檢視訊息日期分佈圖,成功分佈圖等;
  • 15、業務線管理:支援設定業務線,用於分組管理訊息主題;
  • 16、訊息主題管理:支援線上管理訊息主題,自動發現訊息主題;並支援完善訊息主題擴充套件資訊,如業務線、負責人、告警郵箱等;
  • 17、訊息記錄介面,互動優化重構,進一步優化訊息篩選、管理互動;
  • 18、自動重試優化,任務重試時,生效時間重置為1min之後,重試次數減一;
  • 19、記住密碼功能優化,選中時永久記住;非選中時關閉瀏覽器即登出;
  • 20、事務開關:支援設定訊息事務開關,開啟時事務保證訊息精準消費一次;未開啟時小概率存在重複消費,僅依靠註冊中心分片檢測避免重複,但效能略高;
  • 21、告警功能:支援以Topic粒度監控訊息,存在失敗訊息時主動推送告警郵件;
  • 22、軌跡Log優化,新增、更新時記錄核心資料;訊息日誌格式統一;
  • 23、訊息線上清理:在訊息記錄介面,支援線上清理訊息資料;
  • 24、過期訊息自動清理:訊息中心新增引數 “xxl-mq.log.logretentiondays”設定訊息過期天數,過期成功訊息將會自動清理;
  • 25、超時強化,除了客戶端支援超時控制外;服務端新增執行緒掃描,主動處理超時訊息;訊息超過 "生效時間 + 超時時間 + 1HOUT" 之後仍然未結束,將會主動標記為失敗;
  • 26、左側選單規範:執行報表(業務線,主題數,訊息記錄數;總訊息成功率,日分佈柱狀圖,總分佈餅圖) + 訊息主題 + 訊息記錄 + 使用教程;
  • 27、註冊中心遷移至DB,基於 "long polling" 實現註冊機器實時感知;註冊中心程式碼及邏輯來源自“XXL-RPC原生輕量級註冊中心”;
  • 28、輕量級改造,移除對ZK依賴,僅依賴DB即可完整叢集方式提供服務;缺點,非強一致性可能導致重複消費,開啟事務開關可以避免該問題;
  • 29、文件示例完善,包括:併發訊息、序列訊息、廣播訊息、延遲訊息、失敗重試訊息、超時控制訊息等;
  • 30、文件完善:訊息模型說明,延時訊息說明、事務訊息說明、失敗重試、超時控制說明,

簡介

XXL-MQ是一款輕量級分散式訊息佇列,支援 "併發訊息、序列訊息、廣播訊息、延遲訊息、事務訊息、失敗重試、超時控制" 等訊息特性。現已開放原始碼,開箱即用。

輸入圖片說明

特性:

  • 1、簡單易用: 一行程式碼即可釋出一條訊息; 一行註解即可訂閱一個訊息主題;
  • 2、輕量級: 部署簡單,不依賴第三方服務,一分鐘上手;
  • 3、訊息中心HA:訊息中心支援叢集部署,可大大提高系統可用性,以及訊息吞吐能力;
  • 4、消費者HA:消費者支援叢集部署,保證消費者可用性;
  • 5、三種訊息模式:

    • 並行訊息:訊息平均分配在該主題線上消費者,分片方式並行消費;適用於吞吐量較大的訊息場景,如郵件傳送、簡訊傳送等業務邏輯
    • 序列訊息:訊息固定分配給該主題線上消費者中其中一個,FIFO方式序列消費;適用於嚴格限制併發的訊息場景,如秒殺、搶單等排隊業務邏輯;
    • 廣播訊息:訊息將會廣播發送給該主題線上消費者分組,全部分組都會消費該訊息,但是一個分組下只會消費一次;適用於廣播場景,如廣播更新快取等
  • 6、延時訊息: 支援設定訊息的延遲生效時間, 到達設定的生效時間時該訊息才會被消費;適用於延時消費場景,如訂單超時取消等;
  • 7、事務性: 消費者開啟事務開關後,訊息事務性保證只會成功執行一次;
  • 8、失敗重試: 支援設定訊息的重試次數, 在訊息執行失敗後將會按照設定的值進行訊息重試執行,直至重試次數耗盡或者執行成功;
  • 9、超時控制: 支援自定義訊息超時時間,訊息消費超時將會主動中斷;
  • 10、吞吐量: 依賴於部署的消費中心叢集和DB效能;DB可藉助多表提升效能,不考慮DB的情況下,吞吐量可以無限橫向擴充套件;
  • 11、訊息可見: 系統中每一條訊息可通過Web介面線上檢視,甚至支援編輯訊息內容和訊息狀態;
  • 12、訊息可追蹤: 支援追蹤每一條訊息的執行路徑, 便於排查業務問題;
  • 13、容器化:提供官方docker映象,並實時更新推送dockerhub,進一步實現產品開箱即用;
  • 14、訊息失敗告警:支援以Topic粒度監控訊息,存在失敗訊息時主動推送告警郵件;預設提供郵件方式失敗告警,同時預留擴充套件介面,可方面的擴充套件簡訊、釘釘等告警方式;

文件地址

技術交流