Skip to content

架构设计

**本文引用的文件** - [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)

目录

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

引言

本架构设计文档面向 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,提供跨业务域的通用服务。

图表来源

章节来源

核心组件

  • 网关 Gateway

    • 统一入口,集中鉴权与路由;内置白名单路径忽略列表,支持限流配置占位;对接 Nacos 服务发现与配置中心。
    • 关键配置参考:bootstrap.yml 路由与忽略列表:13-80
  • 认证与授权

    • 提供统一认证与授权能力,作为下游服务的前置安全层。
  • 通用框架

    • 封装数据源切换、Excel 导入导出、通用服务治理等能力,降低重复开发成本。
  • 业务域服务

    • dm-common:设备管理相关公共能力与接口。
    • dm-device:设备生命周期、台账、状态变更等。
    • dm-store:库存、出入库、盘点等。
    • dm-workflow:基于 Flowable 的工作流编排与执行。
  • 任务调度

    • 独立的任务执行器与调度模块,避免与业务服务耦合。
  • 公共服务

    • 跨域通用能力,如消息、缓存、通知等。

章节来源

架构总览

整体采用“网关 + 多业务域微服务”的分层架构。Gateway 作为统一入口,通过 Nacos 进行服务注册与发现,结合配置中心实现动态配置下发。各业务域服务之间通过 Feign 或内部 RPC 调用,必要时引入消息中间件实现异步解耦。认证与授权贯穿入口层,确保访问控制一致。

图表来源

详细组件分析

网关组件(Gateway)

  • 角色与职责
    • 统一入口、鉴权、路由转发、限流与熔断(策略预留)。
    • 通过 Nacos 发现下游服务实例,动态路由。
  • 关键点
    • 忽略路径清单用于放行登录、公钥获取、静态资源等。
    • 支持优雅停机与管理端点暴露。
  • 启动类

图表来源

章节来源

认证与授权服务

  • 角色与职责
    • 提供统一认证与授权,作为网关前置安全层。
  • 集成点
    • 与 Gateway 协作完成令牌校验与权限判定。

章节来源

通用框架(lemes-framework)

  • 角色与职责
    • 封装数据源切换、Excel 工具、通用服务治理等,提升复用度与一致性。
  • 价值
    • 降低重复开发,统一异常与日志规范。

章节来源

业务域服务(dm-common、dm-device、dm-store、dm-workflow)

图表来源

章节来源

数据流与负载均衡

  • 数据流设计
    • 客户端请求经 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 配置;检查命名空间与组是否匹配。
  • 认证失败
    • 核对认证服务可用性与令牌有效性;检查网关与认证服务之间的网络连通性。
  • 性能问题
    • 关注网关限流与熔断配置;检查服务间调用链路与数据库慢查询。

章节来源

结论

DeviceMate 微服务架构以 Gateway 为统一入口,结合 Nacos 实现服务发现与配置管理,围绕 dm-common、dm-device、dm-store、dm-workflow 四大业务域构建清晰的服务边界。通过通用框架与共享模块提升复用度,配合限流、熔断与优雅停机等容错机制,兼顾可扩展性、性能与维护性。建议在生产环境中持续完善监控与告警体系,结合压测结果优化网关与服务层性能参数。

附录