Appearance
架构设计
**本文引用的文件** - [lemes-cloud/pom.xml](file://lemes-cloud/pom.xml) - [lemes-business-devicemate/lemes-service-dm-common/pom.xml](file://lemes-cloud/lemes-business-devicemate/lemes-service-dm-common/pom.xml) - [lemes-business-devicemate/lemes-service-dm-device/pom.xml](file://lemes-cloud/lemes-business-devicemate/lemes-service-dm-device/pom.xml) - [lemes-business-devicemate/lemes-service-dm-store/pom.xml](file://lemes-cloud/lemes-business-devicemate/lemes-service-dm-store/pom.xml) - [lemes-business-devicemate/lemes-service-dm-workflow/pom.xml](file://lemes-cloud/lemes-business-devicemate/lemes-service-dm-workflow/pom.xml) - [lemes-gateway/src/main/resources/bootstrap.yml](file://lemes-cloud/lemes-gateway/src/main/resources/bootstrap.yml) - [lemes-service-dm-common-server/src/main/resources/bootstrap.yml](file://lemes-cloud/lemes-business-devicemate/lemes-service-dm-common/lemes-service-dm-common-server/src/main/resources/bootstrap.yml) - [lemes-service-dm-device-server/src/main/resources/bootstrap.yml](file://lemes-cloud/lemes-business-devicemate/lemes-service-dm-device/lemes-service-dm-device-server/src/main/resources/bootstrap.yml) - [lemes-service-dm-store-server/src/main/resources/bootstrap.yml](file://lemes-cloud/lemes-business-devicemate/lemes-service-dm-store/lemes-service-dm-store-server/src/main/resources/bootstrap.yml) - [lemes-service-dm-workflow-server/src/main/resources/bootstrap.yml](file://lemes-cloud/lemes-business-devicemate/lemes-service-dm-workflow/lemes-service-dm-workflow-server/src/main/resources/bootstrap.yml) - [LemesGatewayApplication.java](file://lemes-cloud/lemes-gateway/src/main/java/com/lenovo/lemes/gateway/LemesGatewayApplication.java) - [LemesServiceDmCommonServerApplication.java](file://lemes-cloud/lemes-business-devicemate/lemes-service-dm-common/lemes-service-dm-common-server/src/main/java/com/lenovo/lemes/service/dm/common/LemesServiceDmCommonServerApplication.java) - [LemesServiceDmDeviceServerApplication.java](file://lemes-cloud/lemes-business-devicemate/lemes-service-dm-device/lemes-service-dm-device-server/src/main/java/com/lenovo/lemes/service/dm/device/LemesServiceDmDeviceServerApplication.java) - [LemesServiceDmStoreServerApplication.java](file://lemes-cloud/lemes-business-devicemate/lemes-service-dm-store/lemes-service-dm-store-server/src/main/java/com/lenovo/lemes/service/dm/store/LemesServiceDmStoreServerApplication.java) - [LemesServiceDmWorkflowServerApplication.java](file://lemes-cloud/lemes-business-devicemate/lemes-service-dm-workflow/lemes-service-dm-workflow-server/src/main/java/com/lenovo/lemes/service/dm/workflow/LemesServiceDmWorkflowServerApplication.java)目录
引言
本架构设计文档面向 DeviceMate 微服务化后端系统,聚焦于基于 Spring Cloud 生态的微服务架构设计与落地实践。重点阐述服务拆分策略(dm-common、dm-device、dm-store、dm-workflow)、服务间交互模式、Spring Cloud 组件在系统中的职责(Nacos 服务发现与配置、Gateway 网关路由、RabbitMQ 消息传递等)、数据流与负载均衡策略、容错机制,并给出系统拓扑图与组件关系图。同时,对技术决策进行权衡分析,覆盖可扩展性、性能与维护性维度,为架构师与高级开发者提供深入的技术洞察。
项目结构
DeviceMate 后端采用多模块聚合工程组织,顶层父工程统一管理版本与依赖,子模块按业务域划分,形成清晰的微服务边界与复用层:
- 顶层聚合工程:统一版本与依赖管理,定义 profile 以适配不同环境的 Nacos 地址与命名空间。
- 网关模块:lemes-gateway,负责统一入口、鉴权与路由转发。
- 权限认证模块:lemes-auth,提供认证与授权能力。
- 通用框架模块:lemes-framework,封装通用能力(数据源、Excel、服务治理等)。
- 业务域模块:lemes-business-devicemate,按领域进一步拆分为 dm-common、dm-device、dm-store、dm-workflow 四个子模块,每个子模块包含 server 与 common 两部分,server 提供对外服务,common 提供共享实体、DTO、Mapper、Feign 客户端等。
- 任务调度模块:lemes-job-devicemate,独立的任务执行与调度能力。
- 公共服务模块:lemes-service-common,提供跨业务域的通用服务。
图表来源
- lemes-cloud/pom.xml:15-28
- lemes-business-devicemate/lemes-service-dm-common/pom.xml:14-17
- lemes-business-devicemate/lemes-service-dm-device/pom.xml:14-17
- lemes-business-devicemate/lemes-service-dm-store/pom.xml:14-17
- lemes-business-devicemate/lemes-service-dm-workflow/pom.xml:18-21
章节来源
- lemes-cloud/pom.xml:15-28
- lemes-business-devicemate/lemes-service-dm-common/pom.xml:14-17
- lemes-business-devicemate/lemes-service-dm-device/pom.xml:14-17
- lemes-business-devicemate/lemes-service-dm-store/pom.xml:14-17
- lemes-business-devicemate/lemes-service-dm-workflow/pom.xml:18-21
核心组件
网关 Gateway
- 统一入口,集中鉴权与路由;内置白名单路径忽略列表,支持限流配置占位;对接 Nacos 服务发现与配置中心。
- 关键配置参考:bootstrap.yml 路由与忽略列表:13-80。
认证与授权
- 提供统一认证与授权能力,作为下游服务的前置安全层。
通用框架
- 封装数据源切换、Excel 导入导出、通用服务治理等能力,降低重复开发成本。
业务域服务
- dm-common:设备管理相关公共能力与接口。
- dm-device:设备生命周期、台账、状态变更等。
- dm-store:库存、出入库、盘点等。
- dm-workflow:基于 Flowable 的工作流编排与执行。
任务调度
- 独立的任务执行器与调度模块,避免与业务服务耦合。
公共服务
- 跨域通用能力,如消息、缓存、通知等。
章节来源
架构总览
整体采用“网关 + 多业务域微服务”的分层架构。Gateway 作为统一入口,通过 Nacos 进行服务注册与发现,结合配置中心实现动态配置下发。各业务域服务之间通过 Feign 或内部 RPC 调用,必要时引入消息中间件实现异步解耦。认证与授权贯穿入口层,确保访问控制一致。
图表来源
- lemes-gateway/src/main/resources/bootstrap.yml:13-50
- lemes-service-dm-common-server/src/main/resources/bootstrap.yml:10-27
- lemes-service-dm-device-server/src/main/resources/bootstrap.yml:10-27
- lemes-service-dm-store-server/src/main/resources/bootstrap.yml:10-27
- lemes-service-dm-workflow-server/src/main/resources/bootstrap.yml:10-27
详细组件分析
网关组件(Gateway)
- 角色与职责
- 统一入口、鉴权、路由转发、限流与熔断(策略预留)。
- 通过 Nacos 发现下游服务实例,动态路由。
- 关键点
- 忽略路径清单用于放行登录、公钥获取、静态资源等。
- 支持优雅停机与管理端点暴露。
- 启动类
图表来源
章节来源
认证与授权服务
- 角色与职责
- 提供统一认证与授权,作为网关前置安全层。
- 集成点
- 与 Gateway 协作完成令牌校验与权限判定。
章节来源
通用框架(lemes-framework)
- 角色与职责
- 封装数据源切换、Excel 工具、通用服务治理等,提升复用度与一致性。
- 价值
- 降低重复开发,统一异常与日志规范。
章节来源
业务域服务(dm-common、dm-device、dm-store、dm-workflow)
- 服务拆分策略
- 按业务域划分,每个域包含 server 与 common 两部分:
- server:对外提供 HTTP/REST 接口,承载业务逻辑。
- common:共享模型、Mapper、DTO、Feign 客户端等,避免重复。
- 按业务域划分,每个域包含 server 与 common 两部分:
- 服务发现与配置
- 各服务均通过 Nacos 进行服务注册与配置拉取,支持多环境 profile 切换。
- 启动类
图表来源
- LemesGatewayApplication.java
- LemesServiceDmCommonServerApplication.java
- LemesServiceDmDeviceServerApplication.java
- LemesServiceDmStoreServerApplication.java
- LemesServiceDmWorkflowServerApplication.java
章节来源
- lemes-business-devicemate/lemes-service-dm-common/pom.xml:14-17
- lemes-business-devicemate/lemes-service-dm-device/pom.xml:14-17
- lemes-business-devicemate/lemes-service-dm-store/pom.xml:14-17
- lemes-business-devicemate/lemes-service-dm-workflow/pom.xml:18-21
- lemes-service-dm-common-server/src/main/resources/bootstrap.yml:10-27
- lemes-service-dm-device-server/src/main/resources/bootstrap.yml:10-27
- lemes-service-dm-store-server/src/main/resources/bootstrap.yml:10-27
- lemes-service-dm-workflow-server/src/main/resources/bootstrap.yml:10-27
数据流与负载均衡
- 数据流设计
- 客户端请求经 Gateway 进入系统,网关根据路由规则选择目标服务;服务内部通过 Feign 或本地调用访问共享模块与数据库;必要时通过消息中间件实现异步解耦。
- 负载均衡策略
- 基于 Nacos 的客户端侧负载均衡,默认轮询策略;可通过配置调整策略或启用重试与熔断。
- 容错机制
- 网关层支持优雅停机与限流配置占位;服务层通过超时、重试与熔断(如 Hystrix/Resilience4j)提升可用性。
章节来源
技术决策权衡
- 可扩展性
- 通过模块化与多环境 profile,便于快速扩展新域或新环境;服务拆分明确,利于团队自治。
- 性能
- Gateway 作为单点入口,需关注限流与熔断策略;服务间调用建议使用连接池与超时控制;数据库层通过动态数据源与读写分离优化吞吐。
- 维护性
- 通用框架与共享模块降低重复代码;统一的日志与监控配置提升可观测性;Nacos 配置中心便于灰度与热更新。
依赖分析
- 版本与依赖管理
- 顶层 POM 使用 Spring Cloud、Spring Boot 与 Spring Cloud Alibaba 版本坐标进行统一管理,确保依赖一致性。
- Nacos 客户端版本与配置中心、服务发现版本配套。
- 环境配置
- 通过 Maven Profile 切换不同环境的 Nacos 地址与命名空间,满足多环境部署需求。
图表来源
章节来源
性能考虑
- 网关层
- 合理设置忽略路径,减少不必要的鉴权开销;限流与熔断策略需结合压测结果动态调整。
- 服务层
- 控制 Feign 调用超时与重试次数;数据库访问使用连接池与批量操作;缓存热点数据。
- 基础设施
- Nacos 与配置中心的网络延迟与可用性直接影响服务启动与配置拉取;建议就近部署与高可用配置。
故障排查指南
- 网关无法访问
- 检查网关配置中的忽略路径与路由规则;确认 Nacos 地址与命名空间正确。
- 服务未注册或注册失败
- 核对服务端 bootstrap.yml 中 Nacos discovery 与 config 配置;检查命名空间与组是否匹配。
- 认证失败
- 核对认证服务可用性与令牌有效性;检查网关与认证服务之间的网络连通性。
- 性能问题
- 关注网关限流与熔断配置;检查服务间调用链路与数据库慢查询。
章节来源
- lemes-gateway/src/main/resources/bootstrap.yml:13-50
- lemes-service-dm-common-server/src/main/resources/bootstrap.yml:10-27
- lemes-service-dm-device-server/src/main/resources/bootstrap.yml:10-27
- lemes-service-dm-store-server/src/main/resources/bootstrap.yml:10-27
- lemes-service-dm-workflow-server/src/main/resources/bootstrap.yml:10-27
结论
DeviceMate 微服务架构以 Gateway 为统一入口,结合 Nacos 实现服务发现与配置管理,围绕 dm-common、dm-device、dm-store、dm-workflow 四大业务域构建清晰的服务边界。通过通用框架与共享模块提升复用度,配合限流、熔断与优雅停机等容错机制,兼顾可扩展性、性能与维护性。建议在生产环境中持续完善监控与告警体系,结合压测结果优化网关与服务层性能参数。
附录
- 术语
- Nacos:服务发现与配置中心
- Gateway:API 网关
- Flowable:开源工作流引擎
- Profile:Maven 环境配置集
- 参考文件
- lemes-cloud/pom.xml
- lemes-business-devicemate/lemes-service-dm-common/pom.xml
- lemes-business-devicemate/lemes-service-dm-device/pom.xml
- lemes-business-devicemate/lemes-service-dm-store/pom.xml
- lemes-business-devicemate/lemes-service-dm-workflow/pom.xml
- lemes-gateway/src/main/resources/bootstrap.yml
- lemes-service-dm-common-server/src/main/resources/bootstrap.yml
- lemes-service-dm-device-server/src/main/resources/bootstrap.yml
- lemes-service-dm-store-server/src/main/resources/bootstrap.yml
- lemes-service-dm-workflow-server/src/main/resources/bootstrap.yml
- LemesGatewayApplication.java
- LemesServiceDmCommonServerApplication.java
- LemesServiceDmDeviceServerApplication.java
- LemesServiceDmStoreServerApplication.java
- LemesServiceDmWorkflowServerApplication.java