fastbee/docs/knowledge-base/01-architecture.md
2026-05-25 09:10:32 +08:00

96 lines
4.8 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

# 整体架构
## 项目定位
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。