zoukankan      html  css  js  c++  java
  • 如何保证系统一致性设计(对外暴露接口,处理批量处理数据)

    场景:

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

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

    人的潜力是可以激发的,比如说你给我50斤的砖我可能拎不动,但你要是给我100斤的人民币我肯定拎起来就跑。
  • 相关阅读:
    移动端页面使用rem布局
    Vue2.0 render:h => h(App)
    sublime3 快捷键大全
    node-webkit学习之【无边框窗口用JS实现拖动改变大小等】
    mock.js-无需等待,随机产生数据,让前端独立于后端进行开发
    Sublime Text 3 遇到的一些小坑的解决方法
    Angular Cli 升级到最新版本
    Angular 表单嵌套、动态表单
    angular6 iframe应用
    JS 时间格式 相互转化
  • 原文地址:https://www.cnblogs.com/mojiruo/p/15350868.html
Copyright © 2011-2022 走看看