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

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

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

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

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

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

  • 写回答

2条回答 默认 最新

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

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

    评论

报告相同问题?