跳到主要内容

技术栈概览

引用文件

本文引用的文件

目录

  1. 简介
  2. 项目结构
  3. 核心组件
  4. 架构总览
  5. 详细组件分析
  6. 依赖关系分析
  7. 性能考量
  8. 故障排查指南
  9. 结论
  10. 附录

简介

本概览面向 yudao-cloud 项目,系统梳理并解释项目采用的核心技术栈:Spring Boot 3.4.1、Spring Cloud Alibaba、MyBatis Plus、Nacos、Redis、MySQL、TDengine、Kafka、Netty、LiteFlow 等。文档从技术选型动机、组件职责、使用场景、版本兼容与升级路径等方面展开,帮助开发者快速理解项目的技术基础与架构理念。

项目结构

yudao-cloud 采用多模块聚合工程,顶层 POM 管理版本与插件,yudao-dependencies 作为 BOM 统一依赖版本,各业务模块(如 system、infra、device、launcher、task、rule、blacklist)与网关模块(gateway)协同工作。系统强调微服务架构与中间件集成,围绕注册/配置中心(Nacos)、缓存(Redis)、消息队列(Kafka)、时序数据库(TDengine)与规则引擎(LiteFlow)构建。

Mermaid Diagram Code:

graph TB
Root["yudao-cloud 根 POM"]
Deps["yudao-dependencies BOM"]
GW["yudao-gateway 网关"]
SYS["yudao-module-system 系统模块"]
INFRA["yudao-module-infra 基础设施模块"]
DEV["yudao-module-device 设备模块"]
LAUNCH["yudao-module-launcher 运营模块"]
BLK["yudao-module-blacklist 黑名单模块"]
TASK["yudao-module-task 任务/OTA 模块"]
RULE["yudao-module-rule 规则引擎模块"]
Root --> Deps
Root --> GW
Root --> SYS
Root --> INFRA
Root --> DEV
Root --> LAUNCH
Root --> BLK
Root --> TASK
Root --> RULE

章节来源

核心组件

本节从“技术选型动机 + 组件职责 + 使用场景 + 版本兼容性”四个维度,系统阐述核心组件。

架构总览

yudao-cloud 采用“网关 + 微服务 + 中间件”的整体架构。网关统一接入与灰度发布,服务间通过 Nacos 注册与配置,缓存层使用 Redis,消息层使用 Kafka,存储层采用 MySQL + TDengine 的混合策略,规则引擎 LiteFlow 提供动态决策能力。

Mermaid Diagram Code:

graph TB
User["Web/App 用户"] --> GW["yudao-gateway 网关"]
Device["智能终端设备"] --> GW
subgraph "微服务集群"
GW --> SYS["yudao-system"]
GW --> INFRA["yudao-infra"]
GW --> DEV["yudao-device"]
GW --> LAUNCH["yudao-launcher"]
GW --> BLK["yudao-blacklist"]
GW --> TASK["yudao-task"]
GW --> RULE["yudao-rule"]
end
subgraph "中间件与存储"
NACOS["Nacos 注册/配置中心"]
REDIS["Redis 缓存"]
MYSQL["MySQL 业务库"]
TD["TDengine 时序库"]
KAFKA["Kafka 消息队列"]
end
SYS -.-> NACOS
DEV -.-> TD
TASK -.-> TD
BLK -.-> KAFKA
GW -.-> REDIS

章节来源

详细组件分析

组件 A:规则引擎(LiteFlow)

  • 核心职责:规则定义、EL 表达式管理、缓存与分布式锁、业务绑定与审批。
  • 关键流程:规则获取(Redis 缓存 + 分布式锁 + 数据库兜底)→ 规则链执行(LiteFlow)→ 业务绑定(RuleBusinessApiServiceImpl)。
  • 优势:可视化设计器、动态编排、高性能执行、强一致与高可用保障。

Mermaid Diagram Code:

sequenceDiagram
participant Admin as 管理端
participant Biz as 规则业务服务
participant Redis as Redis 缓存
participant DB as MySQL 数据库
participant Engine as LiteFlow 引擎
Admin->>Biz : 创建/更新规则
Biz->>Redis : 写入规则缓存
Admin->>Biz : 触发规则匹配
Biz->>Redis : 查询规则缓存
alt 命中
Redis-->>Biz : 返回规则
else 未命中
Biz->>Biz : 获取分布式锁
Biz->>Redis : 再次查询缓存
alt 仍未命中
Biz->>DB : 查询规则详情
DB-->>Biz : 返回规则
Biz->>Redis : 写入缓存
end
end
Biz->>Engine : 执行规则链EL 表达式
Engine-->>Biz : 返回执行结果
Biz-->>Admin : 返回匹配结果

图示来源

章节来源

组件 B:设备 TCP 通信(Netty)

  • 核心职责:设备与服务端的 TCP 通信、消息编解码、客户端 Demo。
  • 关键流程:客户端连接 → 消息编解码(Json + 换行符分隔)→ 服务端处理 → 响应返回。
  • 优势:高性能、低延迟、可扩展的消息协议。

Mermaid Diagram Code:

sequenceDiagram
participant Client as UotaTcpClient
participant Netty as Netty 服务端
participant Codec as TcpMessageCodec
participant Handler as UotaTcpClientHandler
Client->>Netty : 建立 TCP 连接
Netty->>Codec : 注册编解码器
Client->>Netty : 发送消息Json
Netty->>Codec : 解码消息
Codec-->>Netty : 解析为 TcpMessage
Netty->>Handler : 处理消息
Handler-->>Client : 返回响应Json

图示来源

章节来源

组件 C:WebSocket 消息广播(Kafka + Redis)

  • 核心职责:跨实例广播 WebSocket 消息,避免粘性会话。
  • 关键流程:消息发送(Kafka)→ 消费者(广播消费,UUID 分组)→ 本地发送至客户端。
  • 优势:水平扩展友好、消息可靠、解耦服务实例。

Mermaid Diagram Code:

sequenceDiagram
participant Producer as 业务服务
participant Kafka as Kafka
participant Consumer as KafkaWebSocketMessageConsumer
participant Sender as KafkaWebSocketMessageSender
participant Session as WebSocketSessionManager
participant Client as 客户端
Producer->>Kafka : 发送 KafkaWebSocketMessage
Kafka-->>Consumer : 拉取消息
Consumer->>Sender : 转发消息
Sender->>Session : 查找并发送消息
Session-->>Client : 推送 WebSocket 消息

图示来源

章节来源

组件 D:缓存配置与过期策略(Redis)

  • 核心职责:统一缓存前缀、JSON 序列化、自定义过期时间(name#ttl)。
  • 关键流程:配置类设置 TTL 与序列化 → CacheManager 自定义过期 → 网关缓存管理。
  • 优势:灵活 TTL、避免键冲突、提升缓存命中率。

Mermaid Diagram Code:

flowchart TD
Start(["进入缓存"]) --> Parse["解析缓存名<br/>name#ttl"]
Parse --> Split{"是否包含 # ?"}
Split --> |否| Default["使用默认 TTL"]
Split --> |是| Calc["解析 TTL 单位(d/h/m/s)"]
Calc --> Apply["应用自定义 TTL"]
Default --> Save["保存缓存"]
Apply --> Save
Save --> End(["退出缓存"])

图示来源

章节来源

组件 E:数据存储与多数据源(MySQL + TDengine)

  • 核心职责:业务数据(MySQL)与时间序列数据(TDengine)分离存储。
  • 关键流程:业务模块写 MySQL → 设备/任务模块写 TDengine → 归档库备份。
  • 优势:成本更低、查询更快、扩展性更好。

Mermaid Diagram Code:

flowchart TD
App["业务应用"] --> |CRUD| MySQL["MySQL 业务库"]
Device["设备/任务模块"] --> |高频写入| TD["TDengine 时序库"]
TD --> Archive["TDengine 归档库"]
Cache["Redis 缓存"] --> App

图示来源

章节来源

依赖关系分析

  • 版本管理:yudao-dependencies 作为 BOM,统一管理 Spring Boot、Spring Cloud、Spring Cloud Alibaba、MyBatis Plus、Netty、LiteFlow 等版本。
  • 模块依赖:各业务模块依赖 yudao-dependencies,同时引入 yudao-spring-boot-starter-* 组件(web、security、redis、mq、job、monitor、rpc 等)。
  • 环境与 API 版本:设备模块通过 HTTP Header(api-version)与 SDK 版本进行兼容控制。

Mermaid Diagram Code:

graph TB
BOM["yudao-dependencies BOM"]
SB["Spring Boot 3.4.1"]
SC["Spring Cloud 2024.0.0"]
SCA["Spring Cloud Alibaba 2023.0.3.2"]
MB["MyBatis Plus"]
NETTY["Netty"]
LF["LiteFlow"]
KF["Kafka"]
REDIS["Redis"]
TD["TDengine"]
NACOS["Nacos"]
BOM --> SB
BOM --> SC
BOM --> SCA
BOM --> MB
BOM --> NETTY
BOM --> LF
BOM --> KF
BOM --> REDIS
BOM --> TD
BOM --> NACOS

图示来源

章节来源

性能考量

  • 缓存策略:Redis 默认 TTL 1 小时,支持 name#ttl 自定义过期;scan 批量策略减少阻塞。
  • 数据库写入:TDengine 在时间有序写入场景下具备极高压缩率与写入性能;避免乱序写入导致的压缩比恶化与磁盘膨胀。
  • 消息队列:Kafka 用于异步解耦与削峰填谷,WebSocket 广播通过 Kafka + Redis 实现跨实例广播。
  • 网络通信:Netty 提供低延迟、高吞吐的 TCP 通信,适用于设备侧协议。

章节来源

故障排查指南

  • 规则引擎:检查 Redis 缓存是否命中、分布式锁是否获取成功、数据库是否存在规则数据。
  • WebSocket 广播:确认 Kafka 消费组是否唯一(UUID 后缀)以实现广播、Topic 配置是否正确。
  • 设备通信:确认 Netty 编解码器是否正确、消息分隔符(换行符)是否一致、客户端/服务端版本兼容。
  • 缓存过期:核对 name#ttl 格式与单位(d/h/m/s),避免 TTL 解析错误。
  • 配置中心:确认 Nacos 命名空间、分组、配置内容是否正确,应用是否正确加载。

章节来源

结论

yudao-cloud 以 Spring Boot 3.4.1 为基础,结合 Spring Cloud Alibaba 实现微服务治理,围绕 Nacos、Redis、MySQL、TDengine、Kafka、Netty、LiteFlow 构建现代化企业级解决方案。通过多数据源策略、规则引擎与消息广播机制,系统在性能、扩展性与可维护性方面取得良好平衡。建议在后续版本升级中关注 Spring 生态的 LTS 版本与中间件兼容性,持续优化缓存与时序数据写入策略。

附录

  • 版本兼容性与升级路径建议
    • Spring Boot:优先选择 LTS 版本(如 3.4.x),与 Spring Cloud 2024.0.0、Spring Cloud Alibaba 2023.0.3.2 协同升级。
    • MyBatis Plus:与 Spring Boot 3.x 兼容,建议与数据库驱动版本保持一致。
    • Netty:按需升级,注意编解码器与消息协议兼容。
    • LiteFlow:按业务需求升级,关注规则链与组件迁移。
    • 中间件:Nacos、Redis、Kafka、TDengine 各自遵循官方 LTS 或稳定版本,确保配置与 API 兼容。

章节来源

用户文档
AI 助手
Agent 列表
请选择一个 Agent 开始对话
AI 问答