For investors
股价:
5.36 美元 %For investors
股价:
5.36 美元 %认真做教育 专心促就业
随着互联网的不断发展,越来越多的人都在学习达内java编程开发等培训课程,而本文我们就简单来了解一下,分布式事务基础知识分享。
1、什么是Saga事务:
Saga事务核心思想是将长事务拆分为多个本地短事务并依次正常提交,如果所有短事务均执行成功,那么分布式事务提交;如果出现某个参与者执行本地事务失败,则由Saga事务协调器协调根据相反顺序调用补偿操作,回滚已提交的参与者,使分布式事务回到初始的状态。Saga事务基本协议如下:
(1)每个Saga事务由一系列幂等的有序子事务(sub-transaction)Ti组成。
(2)每个Ti都有对应的幂等补偿动作Ci,补偿动作用于撤销Ti造成的结果。
与TCC事务补偿机制相比,TCC有一个预留(Try)动作,相当于先报存一个草稿,然后才提交;Saga事务没有预留动作,直接提交。
2、Saga的恢复策略:
对于事务异常,Saga提供了两种恢复策略,分别如下:
(1)向后恢复(backwardrecovery):
当执行事务失败时,补偿所有已完成的事务,是“一退到底”的方式,这种做法的效果是撤销掉之前所有成功的子事务,使得整个Saga的执行结果撤销。
(2)向前恢复(forwardrecovery):
对于执行不通过的事务,会尝试重试事务,这里有一个假设就是每个子事务终都会成功,这种方式适用于必须要成功的场景,事务失败了重试,不需要补偿。
3、Saga事务的实现方式:
Saga事务有两种不同的实现方式,分别如下:
命令协调(OrderOrchestrator)
事件编排(EventChoreographyo)
(1)命令协调:
中央协调器(Orchestrator,简称OSO)以命令/回复的方式与每项服务进行通信,全权负责告诉每个参与者该做什么以及什么时候该做什么。
①事务发起方的主业务逻辑请求OSO服务开启订单事务
②OSO向库存服务请求扣减库存,库存服务回复处理结果。
③OSO向订单服务请求创建订单,订单服务回复创建结果。
④OSO向支付服务请求支付,支付服务回复处理结果。
⑤主业务逻辑接收并处理OSO事务处理结果回复。
中央协调器OSO必须事先知道执行整个事务所需的流程,如果有任何失败,它还负责通过向每个参与者发送命令来撤销之前的操作来协调分布式的回滚,基于中央协调器协调一切时,回滚要容易得多,因为协调器默认是执行正向流程,回滚时只要执行反向流程即可。
(2)事件编排:
命令协调方式基于中央协调器实现,所以有单点风险,但是事件编排方式没有中央协调器。事件编排的实现方式中,每个服务产生自己的时间并监听其他服务的事件来决定是否应采取行动。
在事件编排方法中,一个服务执行一个事务,然后发布一个事件,该事件被一个或多个服务进行监听,这些服务再执行本地事务并发布(或不发布)新的事件。当后一个服务执行本地事务并且不发布任何事件时,意味着分布式事务结束,或者它发布的事件没有被任何Saga参与者听到都意味着事务结束。
【免责声明】:本内容转载于网络,转载目的在于传递信息。文章内容为作者个人意见,本平台对文中陈述、观点保持中立,不对所包含内容的准确性、可靠性与完整性提供形式地保证。请读者仅作参考。更多内容请加抖音太原达内IT培训学习了解。