欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

分布式两阶段和三阶段、可靠性消息投递机制

程序员文章站 2022-05-09 15:59:27
...

分布式两阶段提交和三阶段提交

总结就是:

有两种角色,协调者和参与者
两阶段:
	1. 协调者给所有参与者发送准备消息,每个参与者要么直接返回失败,或者执行本地事务,写本地redo和undo日志,但不提交,并响应给协调者;
	2. 协调者根据反馈情况给所有参与者发送是要中止操作还是提交操作,如果提交,则所有参与者提交事务,释放资源,如果中止,则所有参与者中止事务,释放资源,并响应给协调者。

三阶段:
	1. 协调者给所有参与者发送是否可以准备,参与者根据自己是否能够顺利执行事务,要么响应Yes,要么响应No;
	2. 协调者根据反馈情况通知参与者,如果都是Yes,则执行,否则中止,参与者就根据是执行来进行本地事务,写本地redo和undo日志,或者中止,并响应协调者;
	3. 协调者根据响应情况通知参与者是要提交操作还是中止操作,同二阶段第2点。
	

可靠性消息投递机制(使用MQ来处理分布式事务):

	1. 服务A先把消息持久化到本地数据库,并把状态设为待发送;
	2. 服务A把消息发送到消息队列当中;
	3. 服务B从消息队列获取消息并执行;
	4. 服务B如果执行成功,则发送一个消息到消息队列响应服务A,如果失败,则不操作;
	5. 服务A从消息队列获取响应结果;
	6. 更改本地数据库对应的消息状态,改为完成;
	7. 有一个定时任务,从本地数据库查找消息状态为未完成的,并重新投递到消息队列当中。

分布式两阶段和三阶段、可靠性消息投递机制

相关标签: 事务