🏙

全域运营平台

微服务架构技术分享

模块化架构设计 · 技术栈全景 · 最佳实践

Spring Boot 3.5 JDK 17 Maven 多模块 Flowable 7 IoT 网关 Docker

2026年5月 · 技术团队内部分享

项目概览

定位

面向城市运营管理的综合业务平台,覆盖园林养护、工单调度、IoT 设备管理、BPM 流程引擎等核心业务场景。

规模

4,525+
Java 源文件
15
框架 Starter
10+
业务模块

架构风格

模块化单体 向微服务演进中 — 通过 Maven 多模块 + API 契约层实现模块解耦,IoT 网关已独立部署。

核心能力

  • 多租户 SaaS 架构
  • Flowable 工作流引擎
  • IoT 设备接入网关 (MQTT/HTTP/TCP)
  • 分布式消息 & 定时任务
  • Spring AI 多模型接入

技术栈全景图

前端
Vue 3Element Plus Vben AdminVue 2 uni-appTypeScript
网关 & 接入
Vert.xMQTT HTTP/2TCP WebSocket
业务框架
Spring Boot 3.5Spring Security Flowable 7Quartz Spring AIPF4J
数据层
MyBatis PlusDruid MySQL 8Redis Sentinel RedissonDynamic DS
消息 & 集成
RocketMQKafka RabbitMQJustAuth UAA SSOS3
可观测性
SkyWalkingSBA Admin OpenTracingActuator Knife4j
部署 & DevOps
Dockerdocker-compose Eclipse Temurin 21Maven Git

系统架构总览

接入层 CLIENT LAYER Vue 3 Web uni-app 小程序 IoT 设备 第三方系统 网关与接入 GATEWAY LAYER UrbanOps Server :48081 IoT 网关 :8092 (独立部署) UAA SSO :28201 业务模块层 BUSINESS MODULES system 用户·权限·租户 garden 园林养护·巡检 workorder 工单·调度 bpm Flowable 流程 gloabl 全域运营·微信 API 契约层: garden-api · workorder-api (接口定义 + Feign 风格调用) 基础设施层 INFRASTRUCTURE: 15个Spring Boot Starter (Web · Security · MyBatis · Redis · MQ · Job · Excel · WebSocket · Monitor · Protection · Tenant · DataPermission · IP · Test) 数据层: MySQL 8 · Redis Sentinel · RocketMQ · Kafka · RabbitMQ · S3 · Druid · Redisson

模块依赖关系图

urbanops-dependencies (BOM) urbanops-framework common · web · security · mybatis · redis · mq · job · excel · websocket · monitor · protection · tenant · data-permission · ip · test module-infra module-system module-gloabl module-bpm module-garden module-workorder module-api (契约层) IoT 网关 (独立进程 :8092) Vert.x · MQTT · HTTP · TCP 核心业务域 基础服务 独立部署 API 契约调用

框架层 — 15 个 Spring Boot Starter

web

全局异常处理、API 访问日志、敏感数据脱敏、错误码体系

security

Spring Security + Token 认证、操作日志(bizlog)、权限校验

mybatis

MyBatis Plus + Join、动态数据源、多数据库适配

redis

Redis Sentinel 集群、Redisson 分布式锁、Spring Cache

mq

消息队列抽象层 — RocketMQ / Kafka / RabbitMQ 统一接口

job

Quartz 分布式定时任务、JDBC 持久化、集群调度

excel

FastExcel 导入导出、模板下载、大数据量流式处理

websocket

WebSocket 集群广播,支持 Redis/MQ 跨节点消息同步

monitor

Spring Boot Admin、SkyWalking 链路追踪、OpenTracing

protection

分布式锁(Lock4j)、幂等性、限流、API 签名校验

tenant

多租户数据隔离、租户上下文传递、SaaS 计费

data-permission

数据权限控制 — 部门/用户级数据隔离

ip

IP 归属地解析、地区库自动更新

test

单元测试工具、Mock 工具集

common

通用工具、枚举、基础类、Hutool + Guava 集成

数据流与通信架构

UrbanOps Server 核心业务处理引擎 MySQL 8 主从 + Druid 连接池 Redis Sentinel 缓存 · 分布式锁 · Token MQ 消息队列 RocketMQ · Kafka · RabbitMQ IoT 网关 :8092 Vert.x · MQTT · TCP IoT 设备层 传感器 · GPS · 控制器 对象存储 S3 文件 · 图片 · 附件 Flowable 7 工作流引擎 Quartz 调度 定时任务集群 WebSocket 实时消息推送

安全与认证架构

客户端 Web / 小程序 / App Security Filter Chain API 签名校验 限流 & 幂等 Token 认证 权限校验 数据脱敏 操作日志 认证与授权中心 JWT Token Redis 存储 · 自动续期 UAA SSO OAuth2 · 单点登录 JustAuth 社交登录 钉钉 · 企业微信 · 小程序 · 公众号 多租户数据隔离 (SaaS) 部门/用户级数据权限 (RBAC + Data Scope) 授权通过 业务模块: garden · workorder · bpm · gloabl · infra · system AJ Captcha 滑块验证 API 加密 AES 算法

部署架构

Docker Host urbanops-server Eclipse Temurin 21 JRE -Xms512m -Xmx512m Port 48081 Actuator /actuator 包含所有业务模块 (fat JAR) SpringDoc /v3/api-docs · Knife4j iot-gateway-server 独立部署 · Vert.x 引擎 Port 8092 协议: MQTT · HTTP · TCP 设备接入 · 数据采集 HTTP RPC → Server :48080 MySQL 8 :3306 主从读写分离 Redis Sentinel :26379 高可用集群 RocketMQ :9876 消息驱动 Kafka :9092 流式处理 urbanops-admin (前端 Nginx) :8080 可观测性: SkyWalking Agent · Spring Boot Admin · OpenTracing · Actuator · 日志采集 PF4J 插件目录: ../plugins (动态扩展) fat JAR 独立进程 数据服务 消息中间件

总结与架构演进

当前架构优势

  • Maven 多模块清晰分层,业务边界明确
  • 15 个框架 Starter 封装最佳实践
  • API 契约层实现模块间松耦合
  • IoT 网关已实现独立部署验证
  • 多租户 + 数据权限完备
  • 消息队列抽象层支持多中间件切换

演进方向

  • 服务拆分: garden / workorder -> 独立微服务
  • 注册中心: 引入 Nacos 实现服务发现与配置管理
  • API 网关: Spring Cloud Gateway 统一入口
  • 流量治理: Sentinel 限流熔断
  • 分布式事务: Seata 保障跨服务数据一致性
  • 容器编排: docker-compose -> Kubernetes

目标微服务架构

Nginx Gateway Nacos
garden-service workorder-service bpm-service system-service iot-gateway (已有)
Sentinel Seata SkyWalking

关键原则

模块化先行 → API 契约驱动 → 渐进式拆分 → 独立部署验证 → 全链路可观测