首页/开发/系统分析与架构设计速查/服务化架构(粗粒度服务)
架构风格与模式58 条

服务化架构(粗粒度服务)

把系统拆为数量较少、边界清晰的粗粒度服务(如按业务域划分),共享数据库或按服务分库均可;复杂度低于微服务,适合多数中型系统起步。

服务化架构是什么

服务化架构把系统拆成数量较少、边界清晰的粗粒度服务,通常按业务域划分,服务内部仍可保持分层结构,共享数据库或按服务分库都能接受。它的复杂度明显低于微服务,独立部署与弹性也弱一些,但对多数团队而言是被低估的折中方案:先划清业务边界拿到解耦收益,再视需要在压力点上继续拆细。

基本信息

粒度粗粒度、数量可控,服务内部仍可分层
数据可共享数据库,也可按服务拆分,视团队能力与耦合程度决定
对比微服务独立部署与弹性较弱,但运维与一致性成本低得多
典型规模常见为 4 到 12 个服务,便于整体理解与协调
适用团队中等规模团队、业务边界相对稳定、运维自动化程度一般

粒度调整信号

问题信号动作
服务过粗变更互相干扰、发布排队按业务能力再拆一层
服务过细一次用例跨多个服务且需强事务合并或引入组合服务
数据共享跨服务联表查询频繁先拆读写边界,再谈分库
发布耦合任一处改动要整体回归补齐自动化测试后再拆分

典型使用场景

  • 中型系统落地:团队无足够运维能力支撑微服务,先要解耦收益
  • 单体拆分第一步:把与主流程耦合度低的模块先独立出去
  • 多团队协作:按业务域划分发布与责任边界,减少互相阻塞
  • 遗留系统过渡:以粗粒度服务承载新功能,逐步替换旧模块
  • 共享数据库治理:先统一访问入口与服务边界,再逐步分库
  • 预算受限项目:在可控成本下取得模块化与独立发布能力
服务化与微服务的差别不在技术栈,而在粒度与自治程度:服务内部还可以只是一个模块化的单体,团队按业务域端到端负责。
共享数据库会让服务间存在隐式耦合,schema 变更需要多方协调,应先把访问入口收敛到服务接口再逐步分库。

易错点

  • 按技术层拆服务(用户服务、文件服务),一次业务改动仍要跨服务发布
  • 共享数据库长期不分库,表结构成为事实契约,任一方改动都要全体协调
  • 服务边界按团队现状而非业务域划分,组织调整后边界立刻错位
  • 把粗粒度服务当微服务宣传,运维与监控能力却没有相应建设
  • 服务内部仍是大泥球,拆分只换了进程边界,复杂度没有下降

数据来源与参考

  • 《软件架构:架构模式、特征及实践指南》(Richards & Ford)
​‌‌​​‌​​​‌‌​‌‌‌‌​‌‌​​​‌‌​‌‌‌​​‌‌​​‌​‌‌‌​​‌‌‌​​​‌​‌‌​‌​​‌​‌‌‌​​​‌​‌‌​‌​​‌​‌‌​​​‌‌​‌‌‌​‌​​​‌‌​‌‌‌‌​​‌​‌‌‌​​‌‌​​​‌‌​‌‌​‌‌‌‌​‌‌​‌‌​‌