文章详情页
MySQL数据库中间件如何实现分布式事务
浏览:199日期:2022-06-20 14:47:44
问题描述
假设我有两个MySQL数据库节点,在这两个节点前面有一个数据库中间件,应用通过数据库中间件来使用后面的两个MySQL节点, 结构如下图所示:

当应用通过中间件执行一个事务时,这个事务需要由中间件转发给两个MySQL节点,于是在中间件这一层,原本普通的事务现在升级成了跨越两个MySQL节点的分布式事务。对于应用程序来说,应用程序希望这个事务要么都被两个MySQL节点执行成功,要么都不成功。
当应用程序begin了事务,执行一系列SQL语句后,应用程序进行commit,此时数据库中间件会分别向两个MySQL节点发送commit命令,假设两个MySQL节点都接收到了commit命令,并成功提交,那么事务执行成功。如果其中一个节点commit成功,而另外一个节点由于一些原因无法执行commit(可能网络断开,或者MySQL数据库出现错误),又由于已经commit的事务无法rollback,所以此时两个MySQL节点就出现了数据不一致的情况。
我的问题是:目前是否有上述问题的解决方法或解决思路,先谢谢了
问题解答
回答1:xa
事务资源预分配
业务原子操作
相关文章:
1. javascript - jQuery post()方法,里面的请求串可以转换为GBK编码么?可以的话怎样转换?2. python3.x - python 中的maketrans在utf-8文件中该怎么使用3. javascript - 一排三个框,各个框的间距是15px,距离外面的白框间距也是15px,这个css怎么写?4. javascript - nodejs调用qiniu的第三方资源抓取,返回401 bad token,为什么5. html5 - vue-cli 装好了 新建项目的好了,找不到项目是怎么回事?6. javascript - immutable配合react提升性能?7. mysql - C#连接数据库时一直这一句出问题int i = cmd.ExecuteNonQuery();8. django - python 2层文件夹导入9. python - 用urllib抓取网页上的下载链接,目标文件是xls形式,但发现抓下来的xls是空表,里面只有一句报错信息,求帮助。10. javascript - vue 手机端项目在进入主页后 在进入子页面,直接按返回出现空白情况
排行榜

网公网安备