美文网首页
解决A系统调用B系统的重复提交问题

解决A系统调用B系统的重复提交问题

作者: 小狼在IT | 来源:发表于2019-02-20 11:33 被阅读0次

A系统调用B系统,A系统得到的结果,除了 成功,失败 外,还可能是连接超时。
连接超时的情况分多种:
1.A没连接上B,没调用B的接口;
2.A连接上B,B执行失败,超时了;
3.A连接上B,B执行成功,超时了;

一般,A发现调用超时后,必定要继续调用,直到B返回 成功 或者 失败 为止。
那么,如果这是A向B提交 insert新订单 或者 update库存数量;并且情况是(B执行成功,超时了)。此时如果没有做什么措施,就会造成重复Insert,update的情况。

  1. insert的情况:
    这个解决方案比较简单,比如A系统与B系统商议一个提交编号,有A系统生成(可以是guid,保证唯一即可),B会把这个编号连同订单数据一起insert到数据库,每次Insert前,B都看看订单表里面有没这个编号,有则返回给A系统(提交成功)。

2.update的情况:
B系统新建一个表,叫(库存修改记录表),每次A系统调用 update B系统库存时,都提供一个guid给B系统,B系统update成功后,往“库存修改表”insert这个guid 。每次update前,都查一下这个guid有没在“库存修改表”,有则不update,直接返回给A系统(操作成功)。(insert情况也可以采用这种方式)
为了避免“库存修改记录表”过大,影响性能,定时将太旧的数据清除掉,会比较合理。

对了,有个专业术语叫“幂等性”,讲的就是这个事。

相关文章

  • 解决A系统调用B系统的重复提交问题

    A系统调用B系统,A系统得到的结果,除了 成功,失败 外,还可能是连接超时。连接超时的情况分多种:1.A没连接上B...

  • token 方式处理接口幂等性

    方式系统接口的重复调用,在分布式系统中A服务重复向B服务发送指令,导致B服务重复消费消息。在单体系统中类似新增操作...

  • Hystrix

    A 系统调用 B 系统服务,B 系统调用 C 系统的服务。当尾部应用 C 发生故障而系统 B 没有服务降级时候可能...

  • Http连接池之:Timeout waiting for con

    背景 系统 A 调用系统 B 的接口,最近发现当 B 停机维护时,系统 A 在出发到调用系统 B 的接口的功能时会...

  • 分布式系统中服务降级策略探究已经出炉了!!!

    在分布式系统架构中多个系统之间通常是通过远程RPC调用进行通信,也就是 A 系统调用 B 系统服务,B 系统调用 ...

  • 分布式系统中服务降级策略探究-chat

    在分布式系统架构中多个系统之间通常是通过远程RPC调用进行通信,也就是 A 系统调用 B 系统服务,B 系统调用 ...

  • 不常见的Date使用问题

    问题 最近维护老项目,遇到一个遗留的日期传输问题。A系统远程调用B系统获取申请时间字段,B系统接口返回的申请时间是...

  • 初识webhook

    系统A要获得系统B的实时数据,只能循环调用接口,webhook是由系统A提供一个接口,系统B数据变化后,调用系统A...

  • 中间件

    中间件 解决系统之间调用问题,a到b调用,改为多下游,就要改a项目,解耦。上游发给下游数据,上游得等待下游返回,要...

  • Dubbo入门教程

    实现功能 存在2个系统,A系统和B系统,A系统调用B系统的接口获取数据. 安装zookeeper 解压zookee...

网友评论

      本文标题:解决A系统调用B系统的重复提交问题

      本文链接:https://www.haomeiwen.com/subject/uugcyqtx.html