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 lammps拉伸应力应变曲线分析
  • ¥15 C++ 头文件/宏冲突问题解决
  • ¥15 用comsol模拟大气湍流通过底部加热(温度不同)的腔体
  • ¥50 安卓adb backup备份子用户应用数据失败
  • ¥20 有人能用聚类分析帮我分析一下文本内容嘛
  • ¥15 请问Lammps做复合材料拉伸模拟,应力应变曲线问题
  • ¥30 python代码,帮调试
  • ¥15 #MATLAB仿真#车辆换道路径规划
  • ¥15 java 操作 elasticsearch 8.1 实现 索引的重建
  • ¥15 数据可视化Python