• 软件接口数据一致性机制


        
    软件互联互通的普及导致软件之间的调用越来越多,但两套软件不在同一个事务中控制,极易导致二者数据不一致的情况。
    可采用以下机制,保证软件接口数据一致性
    1.调用方访问服务器,如果在一定时间内(设定的超时时间,或人为强制中断)没有收到成功信息。有以下几种情况:
    (1)服务器没收到请求,结果网断了。
    (2)服务器收到了请求但保存失败,在返回结果前网断了。
    (3)服务器保存成功,但在返回结果前网断了。
    原则:调用方只要成功发出请求,但没有收到保存成功的返回信息,则自动调用冲销功能。
    此时调用冲销很有可能不成功,多数情况是网络不稳定了。经3次尝试冲销都失败后,记录下来,到下次(需确定触发机制)再调用进行冲销。
    因此在给服务器发送保存之前,调用方需要先把要发送的数据保存到数据库中。否则有可能操作员等不到服务器的返回信息,强行结束了程序。
    如要继续提交同一笔数据,应自动先调用冲销成功后再发送提交请求。
    2.调用方与服务器方都要各自保存对方的交易流水号,可以用来防止重复数据上传。
      服务器方可以把用户编号+调用方的交易流水号做为唯一性约束,这样可防止调用方同一笔数据的重复上传。
    3.对账:每天0时后,自动进行对账,标出对账成功与失败的情况。对账标志分为:未对账、对账成功、对账失败。
    其中对账失败的要记录下失败原因。
    分为以下几种情况:
    (1)调用方有,但服务方没有:按以上机制,基本不会出现。
    (2)调用方没有,但服务方有:服务方数据仍为未对账状态。
    (3)二者数据内容不一致:对账失败。

    如果有好的思路,在此一起讨论。

  • 相关阅读:
    spring mvc DispatcherServlet详解之一---处理请求深入解析
    spring mvc DispatcherServlet详解之前传---前端控制器架构
    [推荐]趣味剖析Spring5核心原理
    源码揭秘mybatis日志实现的原理
    mybatis返回自增主键踩坑记
    根据身份证号码判定原籍地的方法
    深入源码解析spring aop实现的三个过程
    匆忙--一个大龄十年老程序员战战兢兢的应对中年危机的2019年总结与2020年展望
    Java 趟坑录
    迷你MVVM框架 avalonjs1.5 入门教程
  • 原文地址:https://www.cnblogs.com/james1207/p/3343555.html
Copyright © 2020-2023  润新知