消费者驱动契约

由消费方提出对接口的期望,多方期望汇总成提供方的兼容性边界;新增依赖与字段废弃都能被量化追踪,变更影响范围可审计。

机制各消费方提交期望,契约版本化存储
判定提供方变更须同时满足所有活跃消费方
治理消费方下线后摘除对应契约,减少历史包袱
  • 消费方编写期望测试,生成并版本化契约
  • 契约发布到契约库,按消费方与版本存档
  • 提供方流水线验证:全部活跃契约通过才允许发布
  • 预发布检查:查询消费方与提供方版本组合是否可用
  • 治理:消费方下线后归档契约,保持活跃集合精炼
  • 双向责任:提供方破坏契约需通知并留迁移期,消费方新增期望需评审
工具示例Pact 与 Pact Broker 提供契约库与 can-i-deploy 检查;Spring Cloud Contract 支持契约生成与互验
覆盖边界契约覆盖交互格式与语义约定,端到端业务场景测试另行安排
消费方数量多时避免契约膨胀:合并同类期望,并设置契约失效与清理机制。

易错点

  • 临时脚本也提交契约,噪声淹没真实依赖
  • 契约只增不减,提供方不敢做破坏性变更

数据来源与参考

  • Pact 官方文档:Consumer-Driven Contracts
  • 《Building Microservices(第 2 版)》(Newman)
​‌‌​​‌​​​‌‌​‌‌‌‌​‌‌​​​‌‌​‌‌‌​​‌‌​​‌​‌‌‌​​‌‌‌​​​‌​‌‌​‌​​‌​‌‌‌​​​‌​‌‌​‌​​‌​‌‌​​​‌‌​‌‌‌​‌​​​‌‌​‌‌‌‌​​‌​‌‌‌​​‌‌​​​‌‌​‌‌​‌‌‌‌​‌‌​‌‌​‌