前几天公司业务中碰到个棘手的微服务业务调用逻辑。大致情形是这样的。
服务B的 数据过于 依赖 服务A 的数据,A发生一个业务操作 很可能对服务B的 几张表 数据进行操作变化,增删改等等…
业务触发服务A
A发现服务 B 有数据新增了,A发送消息 给 B,B对其对应的表产生新增
A发现服务 B 有数据修改了 ,A发送消息 给 B,B对其对应的表产生修改
一个业务下A 需要 多次通知 B
数据一致性的问题就就很难保证 维护成本变大
A 服务出现 异常了 ,A 服务数据事物回滚 B 懵了 数据不一致
总结出经验 A 服务应该把 药操作 B 服务的 数据 步骤 按标识 记录下 执行完毕后
一把发给 服务 B
这样 服务 B 按照 顺序执行对不同的表 增删改
数据一致性 维护成本较小
A出现异常 不会对B 影响。自行回滚数据
B服务出现异常 对A 发送个失败消息 A 再次 对B发送数据 实行补偿机制。
此文章只共自己记录问题