概述
分布式消息队列是物联网平台处理海量设备数据的核心基础设施,承担"数据总线"角色。设备通过接入网关上报的数据,经网关发布到Kafka、RocketMQ等消息队列的Topic,规则引擎、数据微服务、实时分析、日志系统等作为消费者独立订阅,各取所需。这种架构实现了设备数据与下游系统的解耦:新增一个消费者(如新的告警规则)无需改动数据生产方;消费者可独立扩缩容;消息持久化支持回溯与重复消费,便于故障恢复与数据重放。
物联网场景下,消息量可达每秒数十万甚至百万级。单机MQ无法支撑,需采用分布式消息队列。Kafka、RocketMQ、Pulsar等通过分区(Partition)、副本(Replica)、消费者组(Consumer Group)机制,实现水平扩展与高可用。Topic设计通常按设备类型、产品、租户分区,便于隔离与扩展。
核心特性
高吞吐与分区
分区并行写入,单分区顺序写盘,多分区可多机并行。单集群可支撑百万级消息/秒。物联网设备数据按设备ID或产品ID哈希到不同分区,保证同一设备数据有序,不同设备可并行。
持久化与回溯
消息落盘,保留期可配置(如7天)。支持按offset回溯消费,便于新消费者追历史、故障重放。物联网数据有时需事后分析、审计,持久化不可或缺。
消费组与Exactly-once
消费组内多消费者负载均衡,单分区仅被组内一消费者消费。支持水平扩展。事务消息、幂等写入配合可实现Exactly-once语义,保证数据不重不丢。物联网数据入库、告警触发等场景对一致性要求高。
物联网典型应用
设备数据采集:接入网关将设备上报发布到iot-data Topic,数据微服务消费写入时序库,规则引擎消费进行阈值判断。
日志聚合:设备日志、平台日志统一写入日志Topic,供日志系统、审计系统消费。
事件驱动:设备上线、离线、告警等事件发布到事件Topic,触发工作流、通知、工单等下游动作。
数据同步:跨区域、跨租户的数据同步,通过消息队列异步传递。
Topic设计建议
按业务域划分:iot-data(设备数据)、iot-events(设备事件)、iot-alerts(告警)。按租户或产品分Topic可实现多租户隔离。分区数建议为消费者数的整数倍,保证负载均衡。消息体采用JSON或Protobuf,包含设备ID、时间戳、数据、元数据等。