企业应用架构下模块化架构与审批流数据传输设计 - 第1节

1.1 企业应用架构演进史:从单体到网格

企业应用架构的演进并非技术驱动的线性更替,而是业务复杂度与组织规模共同作用下的必然结果。理解这一演进脉络,是判断模块边界拆分时机与审批流设计策略的前提。

阶段 架构形态 核心特征 典型问题
第一阶段 单体巨石 (Monolith) 所有功能耦合在单一进程中,共享数据库 构建慢、部署风险高、团队协作冲突
第二阶段 面向服务架构 (SOA) ESB 总线集成,服务以接口暴露 ESB 成为单点瓶颈,治理成本高
第三阶段 微服务架构 (MSA) 独立部署、去中心化数据管理、轻量通信 分布式事务、服务间调用链、数据一致性
第四阶段 服务网格 + 事件驱动 基础设施下沉、异步编排、最终一致性 运维复杂度转移、可观测性要求高
关键洞察: 每一次架构演进都在解决上一阶段的痛点,但同时也引入了新的复杂度。审批流作为企业核心业务流程,其设计必须与当前架构形态相匹配,否则会成为系统解耦的阻碍。
企业应用架构演进路线图 单体巨石 2000s 前 SOA 2005-2015 微服务 2015-2020 服务网格+事件驱动 2020+ 演进驱动力 • 业务复杂度:从单一 ERP 到多业务线、多租户、跨国合规 • 组织规模:从 1 个团队到 10+ 独立产品团队,康威定律生效 • 技术成熟度:容器化、编排、可观测性工具链逐步完善 • 数据需求:从 CRUD 到实时分析、事件溯源、CQRS

1.2 模块化与微服务的关系:边界即战略

模块化是微服务架构的底层逻辑,而非可选项。微服务本质上是模块化思想在分布式环境下的极致体现。两者的关系可以用以下维度对比:

维度 模块化 (Modularization) 微服务 (Microservices)
粒度 逻辑单元,可大可小 独立进程,通常较小
通信 进程内方法调用 网络 RPC / 消息队列
数据 共享数据库或 Schema 数据库 per service
部署 统一部署单元 独立部署、独立扩缩
耦合度 低耦合、高内聚(理想) 完全解耦(理想)
适用阶段 单体内部重构、模块拆分 独立服务治理、多团队协作
实践建议: 不要为了微服务而微服务。如果模块边界划分不清晰,强行拆分为微服务只会将模块间的复杂耦合转化为网络间的混乱调用。先做好模块化,再考虑微服务化。
模块化 → 微服务:边界拆分演进 模块化单体 订单模块 支付模块 审批模块 通知模块 微服务架构 订单服务 独立 DB 支付服务 独立 DB 审批服务 独立 DB 通知服务 消息队列

1.3 审批流在企业系统中的核心地位

审批流(Approval Workflow)是企业应用中最具代表性的长事务流程之一。它跨越多个模块、多个角色、多个状态,是检验模块边界划分是否合理的试金石。

审批流的典型特征

  • 跨模块性: 一个采购审批可能涉及订单、预算、库存、供应商、财务等多个模块。
  • 状态复杂: 待提交、审批中、已驳回、已通过、已撤回、已作废,状态转换规则繁多。
  • 数据一致性要求高: 审批通过后需要同步更新多个模块的数据,分布式环境下极易出现不一致。
  • 审计与合规: 每一步操作都需要记录操作人、时间、意见,形成不可篡改的审计轨迹。
常见误区: 很多团队将审批流设计为一个独立的“审批中心”微服务,试图让所有审批都经过该服务。这种做法会导致审批中心与所有业务模块产生双向依赖,反而成为架构中最难解耦的“超级服务”。正确的做法是:审批流是业务逻辑的一部分,其边界应随业务模块的边界自然划分。
审批流在企业系统中的核心位置 审批流引擎 状态机 + 路由 + 审计 订单模块 预算模块 库存模块 财务模块 💡 审批流是模块间协作的“粘合剂”,也是分布式数据一致性的“压力测试场”。 本课程后续章节将深入讲解如何在不破坏模块边界的前提下设计高效的审批流数据传输。

审批流设计面临的三大挑战

  1. 边界模糊: 审批逻辑散落在各个业务模块中,还是集中管理?如何划分审批流引擎与业务模块的职责边界?
  2. 数据一致性: 审批通过后,如何保证订单状态、预算占用、库存预留等数据在分布式环境下最终一致?
  3. 性能与可扩展性: 高并发场景下(如双十一大促),审批流如何避免成为系统瓶颈?
课程定位: 本课程将围绕“模块边界拆分”与“审批流数据传输”两条主线,结合领域驱动设计(DDD)的战术模式与微服务架构的最佳实践,提供一套可落地的设计方法论。后续章节将依次展开:模块边界识别、聚合设计、领域事件、Saga 模式、CQRS 在审批流中的应用等核心主题。