分布式事务的七种实现方案汇总(分布式事务的七种实现方案汇总图)

分布式事务的七种实现方案汇总

今天给各位分享分布式事务的七种实现方案汇总的知识,其中也会对分布式事务解决办法进行解释,如果能碰巧解决你现在面临的问题,别忘了关注本站,现在开始吧!

本文目录

  1. 如何创立阿里巴巴分布式事务高效全新解决方案
  2. 分布式事务和本地事务有冲突吗
  3. 分布式事务的七种实现方案汇总
  4. RocketMQ事务消息可以用来解决分布式事务吗

如何创立阿里巴巴分布式事务高效全新解决方案

钱到位,人到位,然后时间到位,至少三年后才行。

分布式事务和本地事务有冲突吗

分布式事务和本地事务在一定情况下可能会存在冲突。传统的本地事务是指在单一数据库上执行的事务,具有ACID(原子性、一致性、隔离性和持久性)特性。本地事务通常只涉及单一数据库的操作,因此可以较为简单地进行管理和控制。而分布式事务是指涉及多个独立的系统或数据库的事务,它要求对多个系统或数据库的更新操作保持一致性。分布式事务需要处理多个资源的协调和同步,因此比本地事务更加复杂。在某些情况下,分布式事务和本地事务可能会冲突。例如,在分布式系统中,一个事务可能涉及到多个独立的数据库或服务,可能需要在不同的网络环境中执行操作。在这种情况下,需要通过分布式事务管理机制来确保事务的一致性和隔离性。然而,由于分布式事务的复杂性和性能开销,有时会选择在某些系统中使用本地事务而不是分布式事务。这种情况下,可能会存在分布式事务和本地事务之间的冲突。在这种情况下,可能需要考虑使用一致性协议或其他机制来解决分布式事务和本地事务之间的冲突。

分布式事务的七种实现方案汇总

分布式事务的七种实现方案:

1、基于可靠消息服务(基于可靠消息中间件);

2、最大努力尝试(基于消息中间件);

3、TX-LCN(对LCN的实现);

4、X/OpenDTP模型(XA规范,基于两阶段提交);

5、阿里DTS(基于TCC);

6、华为ServiceComb(对SAGA模式的实现);

7、阿里GTS(开源产品为Fescar,对XA协议改进后的实现)。

RocketMQ事务消息可以用来解决分布式事务吗

RocketMQ的事务消息并不是用于解决业务分布式事务,当然可以基于MQ实现最终一致性。RocketMQ实现的事务消息的基本思路其实就是一次分布式事务一致性的经典实现。

RocketMQ事务消息的目的是确保业务与消息发送这两个步骤实现一致性,即要么都成功,要么都失败,请看下面一段伪代码:

publicMapcreateOrder(OrderDtoorderInfo){//开始数据库事务

//step1:组装业务

//step2:调用dao方法插入数据库

orderMapper.insert(order);

//发送消息,以便订单系统的下游能够根据该订单信息,完成其后续流程,例如通知物流系统发货等

producer.send(msg);

}//提交事务或回滚事务(例如数据库发生唯一性约束等错误,或者消息发送后突然宕机,导致该事务无法提交)

那现在就有可能出现一个问题:订单落数据库与消息发送这两个分布式操作(一个操作本地数据库,另外一个通过网络向消息中间件发送消息)如何保证要么成功,要么失败呢?这就是RocketMQ引入事务消息的目的。

RocketMQ实现事务消息的原理如下图所示,其基本原理如下:

1、应用程序在事务内完成相关业务数据落库后,需要同步调用RocketMQ消息发送接口,发送状态为prepare的消息,消息发送成功后,RocketMQ服务器会回调RocketMQ消息发送者的事件监听程序,记录消息的本地事务状态,该相关标记与本地业务操作同属一个事务,确保消息发送与本地事务的原子性。

2、RocketMQ在收到类型为prepare的消息时,会首先备份消息的原主题与原消息消费队列,然后将消息存储在主题为RMQ_SYS_TRANS_HALF_TOPIC的消息消费队列中。

3、RocketMQ消息服务器开启一个定时任务,消费RMQ_SYS_TRANS_HALF_TOPIC的消息,向消息发送端(应用程序)发起消息事务状态回查,应用程序根据保存的事务状态回馈消息服务器事务的状态(提交、回滚、未知),如果是提交或回滚,则消息服务器提交或回滚消息,如果是未知,待下一次回查,RocketMQ允许设置一条消息的回查间隔与回查次数,如果在超过回查次数后未知消息的事务状态,则默认回滚消息。

分布式事务的七种实现方案汇总和分布式事务解决办法的问题分享结束啦,以上的文章解决了您的问题吗?欢迎您下次再来哦!

分布式事务的实现方案

声明:本文内容来自互联网不代表本站观点,转载请注明出处:https://bk.oku6.com/11/88213.html

相关推荐