国内最专业的IT技术学习网

Mysql数据库

当前位置:主页 > Mysql数据库 >

银河网上开户:什么是分布式事务,以及有哪些解决方案?

发布时间:2019/09/09标签:   数据库      分布式      事务    点击量:

原标题:银河网上开户:什么是分布式事务,以及有哪些解决方案?

单点故障:由于(事务管理器)协调者的重要性,一旦协调者发生故障。(本地资源管理器)参与者会一直阻塞下去。尤其在第二阶段,协调者发生故障,那么所有的参与者还都处于锁定事务资源的状态中,而无法继续完成事务操作。(如果是协调者挂掉,可以重新选举一个协调者,但是无法解决因为协调者宕机导致的参与者处于阻塞状态的问题)

记一次生产数据库log file sync 等待事件异常及处理过程

响应反馈:事务提交完之后,向协调者发送ACK响应。

4、消息事务+最终一致性

服务A执行本地事务。

二阶段无法解决的问题:参与者在发出commit消息之后宕机,而唯一接收到这条消息的协调者同时也宕机了。那么即使协调者通过选举协议产生了新的协调者,这条事务的状态也是不确定的,没人知道事务是否被已经提交了。

消息中间件保存预备消息并返回成功。

【编辑推荐】

3PC分为三个阶段:CanCommit、PreCommit、DoCommit

所谓的SOA化,就是业务的服务化。例如电商平台下单操作就会产生调用库存服务扣减库存和订单服务更新订单数据,那么就会设计到订单数据库和库存数据库,为了保证数据的一致性,就需要用到分布式事务。

什么是分布式事务,以及有哪些解决方案?

分布式事务解决方案

详解MySQL数据库常见的索引问题:无索引,隐式转换,附实例说明

二阶段提交看起来确实能够提供原子性的操作,但是它存在几个缺点:

当数据库单表数据达到千万级别,就要考虑分库分表,那么就会从原来的一个数据库变成多个数据库。例如如果一个操作即操作了01库,又操作了02库,而且又要保证数据的一致性,那么就要用到分布式事务。

响应反馈:如果参与者成功的执行了事务操作,则返回ACK响应,同时开始等待最终指令。

9月数据库排行:Microsoft SQL Server 分数罕见下滑

发送中断请求:协调者向所有参与者发送abort请求。

服务A发送提交消息给消息中间件,服务B接收到消息之后执行本地事务。

?

银河网上开户:什么是分布式事务,以及有哪些解决方案?

2 应用SOA化

1 数据库分库分表

发送预提交请求:协调者向参与者发送PreCommit请求,并进入Prepared阶段。

执行提交

1、两阶段提交(2PC)

假如协调者从所有的参与者获得的反馈都是Yes,那么就会执行事务的与执行。

总结

事务询问:协调者向参与者发送CanCommit请求。询问是否可以执行事务提交操作。然后开始等待参与者的响应

事务回滚:参与者接收到abort请求之后,利用其在阶段二记录的undo信息来执行事务的回滚操作,并在完成回滚之后释放所有的事务资源。

3PC其实在2PC的基础上增加了CanCommit阶段,是2PC的变种,并引入了超时机制。一旦事务参与者迟迟没有收到协调者的Commit请求,就会自动进行本地commit,这样相对有效的解决了协调者单点故障的问题。但是,性能和数据一致性问题没有根本解决。

闲聊数据库高可用容灾规划设计

总结:其实上面两种场景,归根到底是要操作多数据库,并且要保证数据的一致性,而产生的分布式事务的。

Try阶段:主要是对业务系统做检测及资源预留。

服务A向消息中间件发送一条预备消息。

反馈结果:参与者完成事务回滚之后,像协调者发送ACK消息。

协调者根据参与者的响应情况来决定是否可以进行事务的PreCommit操作。根据响应情况,有以下两种可能:

发送中断请求:协调者向所有参与者发送abort请求

步骤一出错:则整个事务失败,不会执行服务A的本地操作。

基于消息中间件的两阶段提交往往用在高并发场景下,将一个分布式事务拆成一个消息事务(服务A的本地操作+发消息)+服务B的本地操作,其中服务B的操作由消息驱动,只要消息事务成功,那么服务A一定成功,消息也一定发出来了,这时候服务B会收到消息去执行本地操作,如果本地操作失败,消息会重投,直到服务B操作成功,这样就变相地实现了A与B的分布式事务。

Confirm阶段:确认执行业务操作。

TCC原理图如下:

步骤如下:

TCC(Try-Confirm-Cancel)又称补偿事务。它实际上与2PC、3PC一样,都是分布式事务的一种实现方案而已。它分为三个操作:

PreCommit阶段

2、三阶段提交(3PC)

中断事务:协调者接收到参与者反馈的ACK消息之后,执行事务的中断。

什么是分布式事务?

什么是分布式事务,以及有哪些解决方案?

doCommit阶段

版权信息Copyright ? 银河官网 版权所有??? ICP备案编号:鲁ICP备09013610号