RobustMQ 在边缘场景的一些想法
最近在思考 RobustMQ 在边缘场景的适配度和定位。这不是说我们一定要做边缘平台,而是想搞清楚:RobustMQ 的设计理念和技术架构,在边缘场景中能扮演什么角色?有哪些可能的价值?
坦白说,我对边缘计算场景的了解还比较有限。本文更多是基于我们对边缘场景的初步调研和设想,去思考 RobustMQ 未来可能在边缘生态中占据什么位置。这些思考可能不够全面,也可能有理解偏差,欢迎大家讨论和指正。
边缘消息队列 vs 边缘数据处理平台
在深入边缘场景之前,先要搞清楚边缘消息队列和边缘数据处理平台的区别。
边缘消息队列的核心是轻量级部署、接收消息、本地缓存、可靠转发到云端、支持边缘协议。职责明确,就是消息传输的基础设施。
边缘数据处理平台则要复杂得多。除了消息队列,还要包括规则引擎(聚合、过滤)、协议网关(Modbus、OPC UA)、边缘计算框架(AI 推理、函数计算)、设备管理。这是一个完整的解决方案,覆盖从设备接入到数据处理到上云同步的全链路。
看看业界的产品就清楚了。EMQ X Edge 不只是 MQTT Broker,还有规则引擎和数据桥接。AWS IoT Greengrass 更是完整的边缘操作系统,包含容器运行时、Lambda 函数、消息路由、设备管理。Azure IoT Edge 也是类似定位。它们都不是单纯的消息队列,而是边缘数据处理平台。
RobustMQ 的定位应该是边缘消息队列,不是边缘数据处理平台。这不仅是职责边界的问题,也是资源和精力的现实考虑。我们要把核心的消息队列能力做好,而不是摊大饼做边缘平台。
边缘场景的真实需求(基于我们的理解)
虽然对边缘场景了解有限,但基于调研,我们认为边缘确实有一些共性需求。
边缘场景确实需要数据聚合处理。设备产生海量原始数据,全部上传不现实。工厂车间可能有 1000 个传感器,每秒 1 万条数据,原始数据 10MB/秒。如果边缘做了聚合,每秒计算平均值,过滤掉正常范围的数据,最后只上传 100 条聚合数据和异常值,数据量降低 100 倍。这不仅节省带宽成本,也降低云端处理压力。
网络环境是另一个关键因素。边缘网络不稳定,可能经常断连。工厂、门店、车辆,网络质量都不如数据中心。如果设备直连云端,网络抖动会导致数据丢失或服务中断。需要边缘侧的缓冲和本地自治能力。
实时性要求也很突出。设备间需要实时协调,如果数据要先上云再下来,延迟太高。比如工厂流水线的上下游设备,必须毫秒级响应。必须在本地完成通信,不能依赖云端中转。
资源受限是边缘的普遍特点。边缘可能是个小盒子或工控机,不能部署复杂的分布式系统。安装包要小、依赖要少、内存占用要低。
这些需求如果理解有偏差,欢迎指正。我们还在学习边缘场景的特点。
可组合的架构思路
理解了边缘需求后,问题变成了:聚合处理这件事,应该谁来做?
我的思路是:RobustMQ 提供消息队列能力,聚合处理由用户自己做或使用其他工具。
完整的边缘方案应该是可组合的。设备通过协议网关(比如开源的 Neuron)接入,转换成 MQTT。数据进入 RobustMQ,在本地缓存。用户的处理程序从 RobustMQ 订阅原始数据 topic,做自己的聚合、过滤、计算逻辑,然后把处理后的数据写回 RobustMQ 的另一个 topic。RobustMQ 的上云 Connector 订阅处理后数据,可靠同步到云端。
这个架构的关键是:RobustMQ 只做消息流转,处理逻辑用户自己写。用户可以用 Python、Go、Rust 任何语言,可以调用任何库和框架,完全自主。RobustMQ 不限制用户,不提供"规则引擎"这种框架式的东西。
当然,这个思路基于我们对边缘场景的理解。如果实际场景中,大部分用户都需要开箱即用的规则引擎,那我们的方向可能就错了。这也是为什么我说这是思考而非定论,需要在实践中验证。
为什么这样思考
这样设计背后有几个考虑。
第一是职责清晰。消息队列就做好消息队列的事,不要什么都想做。聚合处理是另一层的事,应该解耦。这样每个组件职责明确,容易理解和维护。
第二是避免功能蔓延。如果 RobustMQ 要做规则引擎、协议网关、边缘计算,开发量会非常大,而且这些领域都有专业产品。我们做不一定做得更好,反而分散精力,核心能力做不好。
第三是灵活性。用户自己写处理逻辑,可以用任何语言、任何框架,完全自主。规则引擎虽然降低门槛,但也限制了能力。复杂业务逻辑用规则引擎表达不了,还是要写代码。既然如此,不如一开始就给用户完全的控制权。
第四是生态集成。边缘计算生态已经很丰富,有各种协议网关、边缘 AI 框架、流处理引擎。RobustMQ 做好消息队列,和这些工具集成,而不是重新发明轮子。
当然,这些考虑是否符合实际,需要和真正做边缘的朋友交流验证。
边缘轻量部署的价值
即使不做数据处理平台,边缘轻量部署仍然有实际价值。
很多边缘场景不需要复杂的聚合,只需要可靠的消息传输。零售门店的收银数据,不需要边缘聚合,直接缓存后上传即可。但需要断网缓存能力,网络恢复后补发。RobustMQ 的 RocksDB 模式可以满足:轻量、持久化、可靠同步。
还有一些场景需要边缘设备间通信。工厂设备间的状态同步,这个通信在本地完成,延迟只有几毫秒。不需要复杂的聚合,只需要本地 Pub/Sub。
甚至一些场景只需要边缘缓存。设备数据先写到本地 RobustMQ,云端系统定期拉取,或者等网络空闲时批量上传。RobustMQ 作为边缘数据缓冲。
轻量级消息队列本身就有价值,不一定要做平台。但这个判断可能不够准确,实际场景可能更复杂。
可能的发展路径
基于目前的理解,RobustMQ 在边缘场景可能的发展路径是这样的。
第一步是把边缘消息队列的基础做好。单二进制、零依赖、小安装包、RocksDB 存储。支持 MQTT 协议。提供可靠的云端同步能力。这些做好了,RobustMQ 就可以作为边缘方案中的消息队列组件。
第二步可以提供一些轻量的内置能力。简单的消息过滤、批量打包、时间窗口聚合,都是配置级别的,不需要复杂的规则引擎。降低用户的开发成本,但不限制灵活性。
第三步如果边缘确实是战略方向,可以考虑边缘网关组件。但这应该是独立组件,专注协议转换,不耦合到消息队列核心。
但这些都是基于现有理解的设想,实际发展可能完全不同。需要在实践中验证,在和用户交流中调整。
总结
RobustMQ 在边缘计算的定位是边缘消息队列,不是边缘数据处理平台。
我们可能提供:轻量部署、MQTT 支持、本地缓存、可靠上云、设备间通信。
我们可能不提供:复杂规则引擎、协议网关、边缘计算框架、设备管理。这些通过生态组合。
可组合的架构:协议网关(可选、独立)-> RobustMQ(消息队列)-> 用户处理(自主)-> RobustMQ(流转)-> 云端。
这些思考基于我们对边缘场景有限的理解。边缘计算是个复杂领域,实际需求可能和我们的设想不同。我们还在学习,欢迎有边缘经验的朋友交流和指正。这些思考会随着我们对边缘场景理解的深入而调整。
关于 RobustMQ
RobustMQ 是一个用 Rust 编写的高性能消息队列,采用存算分离架构,支持云端集群和边缘轻量部署。我们在探索如何更好地服务不同场景,欢迎关注我们的 GitHub,参与技术讨论。
