96 lines
4.8 KiB
Markdown
96 lines
4.8 KiB
Markdown
# 整体架构
|
||
|
||
## 项目定位
|
||
|
||
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 |
|
||
|
||
## 后端模块分层
|
||
|
||
```text
|
||
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 相关配置。 |
|
||
|
||
## 数据与依赖边界
|
||
|
||
```text
|
||
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。
|