easion_zms 2019-01-18 10:27 采纳率: 0%
浏览 615

JDBC事务,数据库执行成功后,因为网络异常应用服务器并没收到成功,会出现这种不一致情况吗?

最近在学习微服务的相关知识,微服务的远程调用需要考虑异常的处理和相应的补偿机制。

进一步思考,其实应用服务器和数据库服务器也是分布式部署的微服务架构,应用服务器通过JDBC去远程调用DBMS。

这就会出现标题中描述的问题:当应用服务器通过远程调用DBMS后,DBMS执行成功,应用服务器因为网络异常,并没有收到成功的信息,所以应用服务器认为事务执行失败,这就出现了数据不一致的情况,比如应用服务器在转账失败后重试一次,这样就造成了转账了两次的BUG等等。

首先题主思考这种情况会出现吗?如果出现了应该怎么处理?
谢谢

  • 写回答

2条回答 默认 最新

  • 三木来啦 2019-01-18 11:32
    关注

    首先,你可以将网络异常这种问题单独区分开转账失败来定义,如,定义一个网络异常,然后出现网络异常后,提示用户刷新网络,或者后台刷新就好。
    其次,可以对数据一致性做校验,比如根据id来更新,装状态由1改成2,你可以在做更新之前先去查询一遍。

    评论

报告相同问题?

悬赏问题

  • ¥15 Arduino无法同时连接多个hx711模块,如何解决?
  • ¥50 需求一个up主付费课程
  • ¥20 模型在y分布之外的数据上预测能力不好如何解决
  • ¥15 processing提取音乐节奏
  • ¥15 gg加速器加速游戏时,提示不是x86架构
  • ¥15 python按要求编写程序
  • ¥15 Python输入字符串转化为列表排序具体见图,严格按照输入
  • ¥20 XP系统在重新启动后进不去桌面,一直黑屏。
  • ¥15 opencv图像处理,需要四个处理结果图
  • ¥15 无线移动边缘计算系统中的系统模型