Temptation_archer 2012-09-21 13:33
浏览 403
已采纳

WebService超时后数据如何处理

 

描述:现在做的一个收费系统A,在收费后需要通过webservice向另一个系统B请求运算结果,A\B都需要保存运算结果。有点类似超市的收费系统与银行的刷卡功能对接!

流程:
1、处理本地数据 -》2、调用webservice(成功后,B系统会提交事物)-》3、成功后提交事务,失败后回滚本地事物

问题:
1、B系统处理数据会很慢,如果把3个操作放到一个事物中去控制,数据库连接占用时间过长,并发量上来后会出现大量等待连接,以至系统崩溃。
2、调webservice超时是一个很平常的事,如何在超时后还能保证数据的完整性呢?

我现在该怎么做呢?请各位指教!
  • 写回答

1条回答 默认 最新

  • jinnianshilongnian 2012-09-21 20:22
    关注

    1、本地在操作前记录好支付日志(支付开始、支付成功/失败)
    2、调用webservice后 如果超时可以采用重试机制(如果B系统能做到幂等性就最好了)
    万一超时,A系统再传一个唯一标识到B系统 B系统接到后判断那个唯一标识是否处理 如果已经处理 则直接返回成功
    3、可以采用B系统主动触发A系统模式,比如支付宝;当支付成功后立即关闭支付页面 此时将无法调用我们自身系统的回调接口进行订单处理;支付宝会定期发送回调 我们的系统会接到请求 进行处理(此时我们系统需要进行幂等处理,即我们处理了 就不再进行处理)
    4、A系统 和 B系统记录好日志;然后比如用户反馈支付失败时 进行对账 . 一定记录好日志。有据可查

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论

报告相同问题?

悬赏问题

  • ¥15 素材场景中光线烘焙后灯光失效
  • ¥15 请教一下各位,为什么我这个没有实现模拟点击
  • ¥15 执行 virtuoso 命令后,界面没有,cadence 启动不起来
  • ¥50 comfyui下连接animatediff节点生成视频质量非常差的原因
  • ¥20 有关区间dp的问题求解
  • ¥15 多电路系统共用电源的串扰问题
  • ¥15 slam rangenet++配置
  • ¥15 有没有研究水声通信方面的帮我改俩matlab代码
  • ¥15 ubuntu子系统密码忘记
  • ¥15 保护模式-系统加载-段寄存器