基于 Spring Cloud Alibaba 的分布式企业系统架构实践

基于 Spring Cloud Alibaba 的分布式企业系统架构实践

在现代化企业管理中,ERP 系统作为支撑财务、人力、供应链的核心,其架构的安全性与性能审计至关重要。本项目(erp-platform)采用 Java 8 + Spring Cloud Alibaba + Redis + MySQL,构建了一套具备“金融级”防护能力的分布式后台管理体系。

一、 系统架构设计:高内聚与服务自治

系统遵循微服务拆分原则,将复杂的企业业务解耦为独立的服务单元,确保了系统的可扩展性。

模块化分层

  • **erp-common**:系统底座。统一封装 Redis 操作、JWT 鉴权工具类、全局异常处理及核心配置。
  • **erp-pojo**:全域数据模型。涵盖 Staff(员工)、Department(部门)、PurchaseOrder(采购单)等 DTO 与 VO。
  • **erp-gateway**:安全边界。实现统一路由分发与非对称加密令牌校验。

二、 核心技术闭环:身份透传与多级鉴权

ERP 系统对用户信息极度敏感,系统通过 “网关解密 + 拦截器挂载” 实现了高效且安全的用户上下文管理。

无状态认证与数据路由(SecurityFilterJWT)

网关作为唯一入口,对进入系统的流量进行身份判定。

  • 多角色路由:通过前缀(Admin/Staff/Supplier)识别不同的用户体系,利用 JWTUtils 验证令牌合法性。
  • 数据注入:校验通过后,网关通过 mutate() 将解密后的员工信息注入 Header,消除下游微服务的重复认证开销。

线程级上下文管理(JWTCurrentUserInterceptor)

在业务微服务内部,利用 ThreadLocal 实现用户信息的零参数传递。

  • 自动化装载:拦截器在 preHandle 阶段将 Header 里的 JSON 序列化为 Users/Admin 对象。
  • 内存安全:在 afterCompletion 阶段强制 remove,彻底规避了高并发场景下线程池复用导致的内存泄漏。

三、 生产级防护:分布式限流与防刷

ERP 系统常面临内部接口误用或外部爬虫。系统构建了“网关+业务”双重防御体系:

  1. 全局访问控制 (IPLimitFilter):基于 Redis 滑动窗口算法。若检测到某一 IP 在 20s 内对财务或人事接口发起高频请求,系统将自动触发熔断,封禁该 IP 访问,有效抵御自动化爬虫。
  2. 业务敏感操作保护 (SMSInterceptor):针对二次验证码发送、订单审核等高频变动接口,在业务层设置冷却计时器,利用 Redis 原子性操作确保 60s 冷却限制,保障业务逻辑的连贯性。

四、 数字化审计:基于 AOP 的性能监控

ERP 系统的业务链路长(如从采购到入库),为了准确定位响应延迟,系统引入了 ServiceLogAspect

  • 无侵入监控:使用 @Around 环绕通知,拦截所有业务逻辑执行路径。
  • 耗时分级预警:配合 Spring StopWatch 对每个 Service 方法进行颗粒度计时。
    • 耗时 > 3s:标记为 Error 级别日志。通常意味着复杂的报表查询需要优化索引,或远程 Feign 调用存在网络波动。
    • 耗时统计图表:利用 prettyPrint 输出分段计时,帮助架构师快速判断是“数据库查询慢”还是“业务计算慢”。

五、 数据持久化与动态治理

  • 高效持久化:采用 MyBatis-Plus,结合 AutoFill 自动填充审计字段(创建者、修改时间),满足 ERP 系统的合规性审计需求。
  • 动态配置中心:所有核心参数(限流阈值、令牌密钥、数据源配置)均托管于 Nacos。支持动态刷新,确保在不重启系统的前提下,实时调整业务规则。

六、 总结:为什么这套架构适合 ERP?

  1. 高安全性:从 IP 拦截到 JWT 校验,构建了多层安全屏障。
  2. 低耦合性:业务层只需从 ThreadLocal 拿取员工信息,不关心认证细节。
  3. 可观测性:通过 AOP 审计,让每一个慢方法无所遁形。

结语: 这套架构不仅支撑了 ERP 的基础功能,更为后续引入分布式事务(Seata)和全链路监控(Skywalking)打下了坚实的底座。


  • 在 ERP 项目中设计了一套基于网关身份透传的 ThreadLocal 方案。它解决了微服务间用户信息传递的冗余问题,同时结合 Redis 实现分布式限流,保障了敏感接口的安全。此外,我利用 AOP 切面 构建了全自动的性能审计组件,能主动发现并定位系统中的慢方法。