企業級消息平臺化構建思路

一、背景

一般大型企業都有中間件開發團隊,不管是自研還是對開源的消息隊列產品進行二次開發,開源的消息隊列是無法滿足大企業需要。

二、消息平臺核心功能

  1. 高可用
  2. 多節點數據一致性(paxos)
  3. 自適應rebalance
  4. 高性能事務消息
  5. 高性能順序消費
  6. 通用冪等抽象
  7. 任意時間延遲隊列
  8. 消息重放
  9. 死信隊列
  10. 消息堆積
  11. 低延遲

三、常見的開源消息中間件

  1. ActiveMQ
  2. ZeroMQ
  3. RabbitMQ
  4. Kafka
  5. RocketMQ
  6. Pulsar
  7. QMQ
  8. nsq

以上產品並沒有滿足企業級消息平臺的需求 ActiveMQ已經淘汰,ZeroMQ並不是一個消息隊列產品,最多算一個Rpc,RabbitMQKafka不支持事務消息、任意延遲隊列、順序消息rehash、RabbitMQ進行二次開發難度大,沒有集羣分片方案,依賴鏡像保證可靠性。

四、改造思路

  1. 客戶端改造
  • 統一抽象消息隊列的客戶端,提供事務消息、延遲消息、順序消息、單向消息、通用冪等處理器的SDK。
  • 在client層代理,提供發送前事件、發送後事件、發送異常事件,給予客戶端一定的擴展性
  • 統一抽象過濾器,由客戶端實現對消息的過濾或者增強
  • 基於OpenTracing提供TraceContext信息的傳遞和上報
  • 替換底層Rpc框架
  1. 服務端(平臺層)改造
  • 統一抽象消息存儲,基於Kafka、TiDB對消息進行持久化
  • 元數據管理
  • 一致性rebalance
  • 基於RocksDB的事務消息、延遲消息、死信消息臨時存儲
  • 秒級時間輪定時任務,負責二段事務消息的回調、延遲隊列重新投遞
  1. 監控控制檯
  • 生產消費情況
  • 消息堆積
  • 接入客戶端
  • 硬件信息
  • 死信消息重新投遞
  • 重置offset消息重放
  • 新增節點
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章