首页/开发/系统分析与架构设计速查/纳米服务(Nanoservices)反模式
架构风格与模式58 条

纳米服务(Nanoservices)反模式

把服务拆得过细,导致一次业务请求需要数十次跨服务调用:调用风暴、跨服务事务频繁、部署与监控对象数量急剧上升,运维复杂度超过收益。

识别信号单个用例跨越大量服务;为一次页面加载发起数十个远程调用;服务之间必须同步发布
代价网络开销、故障放大、分布式事务与调试成本
应对合并高耦合服务、引入聚合/组合服务、把强事务逻辑收回同一服务

粒度校准信号

信号含义动作
一次用例调用五个以上服务粒度可能过细评估合并或引入聚合
服务必须同步发布部署上尚未解耦合并或先解除依赖
跨服务强事务频繁事务边界被拆碎把强一致逻辑收回一处
页面加载需数十次请求缺少聚合层引入 BFF 或组合服务
服务粒度应与事务边界和团队边界匹配,而不是按方法或数据库表拆分。

易错点

  • 按表拆服务,业务事务被拆成跨服务链路
  • 为减少调用层层加聚合服务,聚合层又变成新的单体

数据来源与参考

  • Sam Newman《Building Microservices》关于服务粒度的讨论
  • Chris Richardson《Microservices Patterns》
​‌‌​​‌​​​‌‌​‌‌‌‌​‌‌​​​‌‌​‌‌‌​​‌‌​​‌​‌‌‌​​‌‌‌​​​‌​‌‌​‌​​‌​‌‌‌​​​‌​‌‌​‌​​‌​‌‌​​​‌‌​‌‌‌​‌​​​‌‌​‌‌‌‌​​‌​‌‌‌​​‌‌​​​‌‌​‌‌​‌‌‌‌​‌‌​‌‌​‌