整体架构
项目定位
FastBee 是基于若依 v3.8.5 改造的物联网平台,覆盖设备接入、产品/物模型管理、数据采集、规则引擎、通知、视频监控、SCADA/GoView 可视化和移动端。
技术栈
| 层 |
技术 |
| 后端框架 |
Spring Boot 2.5.14, Spring Security, JWT |
| ORM/数据访问 |
MyBatis Plus, MyBatis XML Mapper, PageHelper |
| 数据源 |
MySQL 主库,动态数据源,可选 TDengine |
| 缓存/锁 |
Redis, Redisson, Lock4j |
| 协议接入 |
Netty MQTT/TCP/UDP/HTTP/CoAP, SIP GB28181 |
| 规则引擎 |
LiteFlow, Groovy 脚本 |
| 消息通道 |
本地 LinkedBlockingQueue 队列族,MQTT/EMQX 或内嵌 Broker |
| 前端 |
Vue 2 + Element UI, Vue 3 + Vite + Naive UI, UniApp + uView |
后端模块分层
fastbee-admin
-> fastbee-framework
-> fastbee-open-api
-> fastbee-server/boot-strap
-> fastbee-service/*
-> fastbee-iot-data
-> fastbee-mq
-> fastbee-notify/*
-> fastbee-plugs/*
-> fastbee-common
| 模块 |
职责 |
fastbee-admin |
Spring Boot 主入口,端口默认 8080,聚合 Web/API/协议/插件依赖。 |
fastbee-framework |
若依框架层:安全、鉴权、Web 配置、数据源、拦截器、通用基础设施。 |
fastbee-common |
公共 DTO、枚举、工具、注解、Redis Key、MQ 消息模型、协议通用模型。 |
fastbee-open-api |
对外 REST Controller,覆盖设备、产品、物模型、规则、视频、通知等业务 API。 |
fastbee-service/fastbee-system-service |
系统管理服务:用户、角色、菜单、部门、字典、参数、日志。 |
fastbee-service/fastbee-iot-service |
IoT 核心业务:产品、设备、物模型、场景、规则、告警、Modbus、网关、固件。 |
fastbee-server |
Netty/SIP 协议服务集合:基础 Server、MQTT Broker、TCP/UDP/HTTP/CoAP/SIP、启动装配。 |
fastbee-protocol |
协议抽象和具体编解码实现,如 Modbus、JSON、自定义采集协议、OTA 包。 |
fastbee-iot-data |
设备数据处理层:上报处理、下发处理、规则触发、TDengine 日志、OTA、设备消息发布。 |
fastbee-mq |
设备消息通道封装,当前核心是 JVM 内本地阻塞队列和消息生产入口。 |
fastbee-notify |
通知配置、模板、日志和发送通道实现,包含邮件、短信、微信、钉钉等。 |
fastbee-plugs |
插件能力:Quartz、代码生成、OSS、Forest HTTP、OAuth、MQTT Client、LiteFlow 扩展、支付。 |
fastbee-record |
独立视频录像/回调服务,入口 ZlmRecordApplication,与 ZLMediaKit 配合使用。 |
启动入口与条件装配
- 主应用入口:
fastbee-admin/src/main/java/com/fastbee/FastBeeApplication.java。
@SpringBootApplication 扫描 com.fastbee 包下所有模块 Bean。
@ForestScan(basePackages = "com.fastbee") 扫描 Forest HTTP 客户端。
- 协议服务由
fastbee-server/boot-strap 按配置条件创建 Netty Server Bean:
server.broker.enabled=true:启动内嵌 MQTT Broker 和 WebSocket MQTT。
server.tcp.enabled=true:启动 TCP 服务,默认 8888。
server.http.enabled=true:启动 HTTP 设备接入服务,默认 8081。
server.coap.enabled=true:启动 CoAP 服务,默认 5683。
sip.enabled=true:启动 GB28181 视频接入。
前端组成
| 应用 |
目录 |
技术 |
角色 |
| 管理后台 |
yack-web |
Vue 2, Element UI, Vuex |
运维/管理端,覆盖系统、设备、产品、规则、告警等后台功能。 |
| 低代码可视化 |
yack-view |
Vue 3, TypeScript, Vite, Naive UI, Pinia |
GoView 风格大屏和项目可视化编辑器。 |
| 移动端 |
yack-app |
UniApp, uView 2.0, MQTT.js |
App/小程序/H5 设备查看、控制和移动操作。 |
配置中心
| 文件 |
重点 |
fastbee-admin/src/main/resources/application.yml |
端口、协议服务开关、JWT、MyBatis Plus、Redisson、Forest、LiteFlow SQL 规则源。 |
fastbee-admin/src/main/resources/application-dev.yml |
本地 MySQL、Redis、MQTT、EMQX、SIP、Swagger 配置。 |
fastbee-admin/src/main/resources/application-prod.yml |
生产环境覆盖配置。 |
fastbee-admin/src/main/resources/application-sql.yml |
SQL 相关配置。 |
数据与依赖边界
Controller(open-api/admin/plugs)
-> Service(fastbee-iot-service/system-service/notify/sip/oss)
-> Mapper XML
-> MySQL / TDengine
Protocol Server(Netty/SIP/MQTT)
-> fastbee-mq queue
-> fastbee-iot-data handler
-> IoT Service + Rule Engine + Log Service
-> MQTT/WebSocket/DB/Notify
fastbee-common 不应反向依赖业务模块;fastbee-framework 提供框架装配;业务 Controller 优先调用 Service 接口,不直接写复杂 SQL。