如何保证系统一致性设计(对外暴露接口,处理批量处理数据)

发布时间:2022-07-04 发布网站:脚本宝典
脚本宝典收集整理的这篇文章主要介绍了如何保证系统一致性设计(对外暴露接口,处理批量处理数据)脚本宝典觉得挺不错的,现在分享给大家,也给大家做个参考。

场景:

有个接口要接收订单和售后单做结算,一次可以接收一个订单和多笔售后单,或者订单结算过后可以单独结算售后单,每次接口调用如果对一笔单子做了结算(订单和售后单都算单子),就不能再次结算,系统正常情况下会如下调用

第一次调用推送 订单1、售后单A、第二次调用推送售后单B。

思考:

如果接口在service2 ,那么在 service1 调用 service2 这种情况下,如何保证数据一致性? 可能发生的问题:

  1. 订单1、售后单A 调用 service2 失败,service2 实际未处理成功
  2. 订单1、售后单A 调用 service2 超时,service2 实际处理成功,再次推送 订单1、售后单A
  3. 订单1、售后单A 调用 service2 超时,service2 实际处理成功,推送 订单1、售后单B

解决方案: 这种情况下只要保证 service2 幂等,即可重复调用,但是针对第三点,应该是认 订单1、售后单A 为准确数据呢还是 订单1、售后单B?我认为应该 订单1、售后单A,第三点应该报错处理,但是因为这个逻辑,service2 需要去比较每次推送的内容,兼容这个逻辑,更好的做法是,将每次推送的多条数据合并一个 token 之类的标识,这样化多个数据为一个数据,处理好幂等。

脚本宝典总结

以上是脚本宝典为你收集整理的如何保证系统一致性设计(对外暴露接口,处理批量处理数据)全部内容,希望文章能够帮你解决如何保证系统一致性设计(对外暴露接口,处理批量处理数据)所遇到的问题。

如果觉得脚本宝典网站内容还不错,欢迎将脚本宝典推荐好友。

本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。
标签: