華為雲 IoT × Pulsar:構建高可靠訂閲推送服務_數據

Pulsar Developer Day 2025 將於 12.6(週六)下午 13:30-18:00 在 北京·麗亭華苑酒店 舉辦。戳👇報名!

本文整理自 Zhangjian He 在 Community Over Code Asia 2025 上的主題演講。一起來看華為雲如何使用 Pulsar 構建高可靠訂閲和推送服務!

1

華為雲 IoT 架構

華為雲 IoT 服務採用分層的 Service on Service 架構。底層是基於 ECS 和 K8s 的雲底座,在此之上是物聯網基礎服務層,提供設備接入、IoT 邊緣等核心能力;再向上是行業平台層,服務於工業物聯、數字工廠等特定領域;頂層通過與 RDS、MySQL 等雲服務的組合,形成完整的行業解決方案。

為適應大模型技術的發展,平台對物聯網數據進行了分類處理:結構化的物模型數據存入知識圖譜,行業文檔等非結構化數據進入向量數據庫,時序數據則通過 MCP 方式供給大模型使用,實現了物聯網數據與大模型的高效協同。該服務的顯著特點是提供端到端的一站式開發能力,能夠有效支撐工業物聯平台、智慧交通平台等垂直行業解決方案的快速構建。

華為雲 IoT × Pulsar:構建高可靠訂閲推送服務_物聯網_02

2

訂閲推送服務

華為雲 IoT × Pulsar:構建高可靠訂閲推送服務_物聯網_03

訂閲推送服務的業務模型圍繞幾個核心概念展開:

  • Tenant(租户)維度設計用於支持海量租户場景,單個租户能夠配置多個訂閲。
  • EventRule(事件規則)定義了事件的過濾條件,例如處理開户、銷户或地域變更等業務事件。
  • Action(動作)則指明瞭消息推送的目的地,可以是 OBS、遊戲服務器或 HTTP Server 等。

這套業務模型支持基於條件的過濾和多目的地分發,典型應用場景是將用户系統事件推送給第三方應用。一個訂閲單元被定義為一條 EventRule 與一個 Action 的組合,從而實現精細化的事件路由。

3

基於 Pulsar 的技術實現

基於 Pulsar 的 Function 和 Pulsar I/O 組件來構建訂閲推送功能,初始方案是利用 Pulsar Function 實現規則引擎的過濾邏輯,通過 Pulsar I/O Sink 完成消息的最終推送(Action 執行)。這一方案的優勢在於開箱即用,能夠快速實現核心功能。在生產環境實踐中,針對出現的挑戰迭代形成了優化方案。

華為雲 IoT × Pulsar:構建高可靠訂閲推送服務_數據_04

計費和規格

核心挑戰

過濾計算本身消耗實際的 CPU 和內存資源,但客户通常不願為被過濾掉、未成功推送的數據付費。在極端情況下,單個租户配置 10 條規則可能導致消息內部放大 10 倍。

優化方案

  • 合併消費者:將 N 個規則消費者合併為 1 個,以大幅減少內部流量放大。
  • 性能隔離:用兩層 Worker 設計,由 Receive Worker 負責接收,Push Worker 負責推送,有效隔離了不同業務的影響。

Topic 老化機制

Topic 老化是必要的,其目的在於防止 Topic 數量達到上限導致新訂閲創建失敗,並避免非活躍消費組持續佔用磁盤資源。

在業務側進行了針對性適配,實現了“不存在則創建”的容錯邏輯,並補充了定時任務來觸發未使用 Topic 的老化。一個關鍵的注意事項是,只有被 ledger 處理過的 Topic 才會被納入老化機制。

私有云場景

在硬件環境相對較差的私有云場景中,偶現低概率的 entrylog 文件損壞問題(年均 1-2 次)。解決方案經歷了三個階段演進:第一階段嘗試跳過損壞文件,但需在消息丟失與恢復速度之間權衡;第二階段優化為優先讀取其他副本的數據;最終階段定位到 entrylog 寫入時的併發問題根源(相關修復代碼後續計劃貢獻給社區)。

定時任務處理

通過定時任務處理了幾類典型問題:

  • 腦裂檢測:通過對比各節點 lookup 結果識別異常 topic
  • 殭屍 ledger:清理已刪除但殘留的 ledger 元數據
  • 分區不一致:修復 managed-ledger 與 admin 數據不同步

針對相關問題形成了通用的容錯策略:

  • 重試機制+成功率監控:當成功率低於 80% 時觸發重建;
  • 消費者健康檢查:當生產速率持續高於消費速率且積壓大於零時進行干預。

4

總結

華為雲 IoT × Pulsar:構建高可靠訂閲推送服務_#華為雲_05

關鍵設計

  • 規則引擎與推送模塊物理隔離
  • 採用 listener 模式+合理超時配置(推薦 ackTimeout≥2h)
  • 生產失敗時內存重試 1-2 次,超過閾值觸發 relocate

監控指標:精簡為 3 個核心指標(message in/out、積壓大小)

最佳實踐:開啓消費者自動老化,配置 retryLetterTopic 實現死信處理


華為雲 IoT × Pulsar:構建高可靠訂閲推送服務_#華為雲_06