ICode9

精准搜索请尝试: 精确搜索
首页 > 其他分享> 文章详细

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

2021-09-29 01:04:17  阅读:182  来源: 互联网

标签:调用 售后 处理 保证系统 订单 一致性 service2 推送


场景:

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

第一次调用推送 订单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 之类的标识,这样化多个数据为一个数据,处理好幂等。

标签:调用,售后,处理,保证系统,订单,一致性,service2,推送
来源: https://www.cnblogs.com/mojiruo/p/15350868.html

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有