华为云 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 方式供给大模型使用,实现了物联网数据与大模型的高效协同。该服务的显著特点是提供端到端的一站式开发能力,能够有效支撑工业物联平台、智慧交通平台等垂直行业解决方案的快速构建。

2

订阅推送服务

订阅推送服务的业务模型围绕几个核心概念展开:

  • Tenant(租户)维度设计用于支持海量租户场景,单个租户能够配置多个订阅。

  • EventRule(事件规则)定义了事件的过滤条件,例如处理开户、销户或地域变更等业务事件。

  • Action(动作)则指明了消息推送的目的地,可以是 OBS、游戏服务器或 HTTP Server 等。

这套业务模型支持基于条件的过滤和多目的地分发,典型应用场景是将用户系统事件推送给第三方应用。一个订阅单元被定义为一条 EventRule 与一个 Action 的组合,从而实现精细化的事件路由。

3

基于 Pulsar 的技术实现

基于 Pulsar 的 Function 和 Pulsar I/O 组件来构建订阅推送功能,初始方案是利用 Pulsar Function 实现规则引擎的过滤逻辑,通过 Pulsar I/O Sink 完成消息的最终推送(Action 执行)。这一方案的优势在于开箱即用,能够快速实现核心功能。在生产环境实践中,针对出现的挑战迭代形成了优化方案。

计费和规格

核心挑战

过滤计算本身消耗实际的 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

总结

关键设计

  • 规则引擎与推送模块物理隔离

  • 采用 listener 模式+合理超时配置(推荐 ackTimeout≥2h)

  • 生产失败时内存重试 1-2 次,超过阈值触发 relocate

监控指标:精简为 3 个核心指标(message in/out、积压大小)

最佳实践:开启消费者自动老化,配置 retryLetterTopic 实现死信处理

Apache Pulsar 作为一个高性能、分布式的发布-订阅消息系统,正在全球范围内获得越来越多的关注和应用。如果你对分布式系统、消息队列或流处理感兴趣,欢迎加入我们!

Github:

https://github.com/apache/pulsar

扫码加入 Pulsar 社区交流群

最佳实践

互联网

腾讯BiFang | 腾讯云 | 微信 | 腾讯 | BIGO | 360 | 滴滴 | 腾讯互娱 | 腾讯游戏 | vivo| 科大讯飞 | 新浪微博 | 金山云 | STICORP | 雅虎日本 | Nutanix Beam | 智联招聘 | 达达 | 小红书

金融/计费

腾讯计费 | 平安证券 | 拉卡拉 | Qraft | 甜橙金融

电商

Flipkart | 谊品生鲜 | Narvar | Iterable

机器学习

腾讯Angel PowerFL | Discord

物联网

云兴科技智慧城市 | 科拓停车 | 华为云 | 清华大学能源互联网创新研究院 | 涂鸦智能

通信

江苏移动 | 移动云

教育

网易有道 | 传智教育

推荐阅读

免费可视化集群管控 | 资料合集 | 实现原理 | BookKeeper储存架构解析 | Pulsar运维 | MQ设计精要 | Pulsar vs Kafka | 从RabbitMQ 到 Pulsar | 内存使用原理 | 从Kafka到Pulsar | 跨地域复制 | Spring + Pulsar | Doris + Pulsar | SpringBoot + Pulsar

相关推荐
三佛科技-1341638421228 分钟前
LP3799FAC/LP3799FBC--非标60W(24V2.5A)电源芯片恒压恒流方案分析(电路图,PCB设计)
嵌入式硬件·物联网·智能家居·pcb工艺
红目香薰30 分钟前
Ascend C 算子:Sigmoid 函数原理深入解析与工程化构建及验证
c语言·开发语言·华为·华为云·昇腾·cann·modelarts
物联网平台31 分钟前
ThingsKit Edge 边缘计算平台评测
物联网·物联网平台
珠海西格电力33 分钟前
红区光伏与零碳园区:管理系统如何破解分布式光伏并网困局
大数据·人工智能·分布式·物联网·能源
Kingexpand_com37 分钟前
物联网 App 开发实战(下)—— 数据采集、远程控制与完整案例
物联网·物联网app·软件定制开发·物联网app定制开发
Kingexpand_com40 分钟前
物联网 App 开发实战(上)—— 协议选型、跨平台开发与设备连接
物联网·app·app定制开发·物联网app开发·物联网app制作
拓端研究室1 小时前
2026中国医疗健康行业趋势报告:投融资回暖、AI渗透与产业链提价|附100+份报告PDF、数据、可视化模板汇总下载
人工智能·物联网·microsoft
雅斯驰1 小时前
电流模式控制+快速瞬态响应:LTM4650AY的FPGA供电技术解析
stm32·单片机·嵌入式硬件·物联网·fpga开发·汽车
雪兽软件2 小时前
物联网连接指南
物联网
UTP协同自动化测试11 小时前
物联网模组测试难点 |APP指令下发+UART 响应+GPIO 电平变化,如何一次性验证?
功能测试·嵌入式硬件·物联网·模块测试