IoT 平台项目规划

1. 项目定位

以本司硬件设备数字化交付为起点,建立产品、物模型、设备身份、用户绑定、设备消息、远程控制、告警和审计的统一平台。第一阶段采用模块化单体快速完成业务闭环,业务和吞吐边界稳定后再演进微服务。

2. 已确定技术路线

范围选型
管理后台Vue 3 + TypeScript + Vite
后端Java 17 + Spring Boot 3 模块化单体
用户端原生微信小程序
数据库MySQL + Flyway
登录/缓存Redis
消息总线Kafka
MQTT BrokerEMQX
设备消息边界后端只消费和发布 Kafka Topic,不直连 MQTT

3. 当前数据链路

上行:设备 → MQTT → EMQX → Kafka → Spring Boot → MySQL/Redis
下行:管理后台/小程序 → Spring Boot → Kafka → EMQX → MQTT → 设备
回执:设备 → EMQX → Kafka command.ack → Spring Boot → MySQL

EMQX 管理设备连接和 MQTT ACL;Kafka 作为后端与 EMQX 的唯一设备消息边界。设备消息 Topic 名称、Key、JSON Schema 和版本由双方共同维护。

4. 分阶段交付

阶段目标交付
当前单体一期本司设备闭环Vue 管理后台、Spring Boot API、小程序、MySQL/Redis/Kafka/EMQX 集成
一期增强稳定生产运行ACK 超时重试、Outbox、批量注册、OTA、监控、备份恢复
二期客户设备开放多租户、物模型自助、接入 SDK、API Key/Webhook
三期企业 SaaS企业后台、设备组、工单履约、OEM/ERP OpenAPI
微服务阶段独立扩缩容和发布优先拆消息接入、控制和告警服务

5. 单体优先原则

  • 所有业务模块先在一个 Spring Boot 工程和一个发布单元内实现。
  • 包结构按领域分层,禁止 Controller 直接操作 Repository。
  • Kafka 消息 DTO 独立版本化,未来拆服务不改变设备侧协议。
  • MySQL 表明确模块所有权;跨模块修改通过应用服务完成。
  • 微服务拆分必须有容量、故障隔离或团队协作的真实驱动。

6. 待补配置

中间件均已部署,等待地址文档后补充:

  • MySQL JDBC URL、库名、账号和 TLS 参数。
  • Redis 地址、密码、DB、Sentinel/Cluster 模式。
  • Kafka bootstrap servers、SASL/TLS、Topic 分区、副本和 ACL。
  • EMQX Dashboard/API 地址、Kafka Connector/Bridge 名称、MQTT Topic 映射。
  • 各环境域名、证书、网络访问策略和密钥托管方式。

源码已经通过环境变量预留全部地址,不需要再次改代码。

7. 当前完成标准

Vue TypeScript 生产构建通过;Spring Boot H2/内存适配测试通过;真实配置不入库;后端不存在 MQTT 客户端依赖;Kafka 上行、事件、下行和 ACK 主题契约明确;小程序继续复用同一 API。