我电脑做网站局域网怎么访问,wordpress更新 ftp,微信公众号粉丝下单,广东建设厅官网 Saga源于Hector Garcaa-Molrna和Kenneth Salem发表的论文Sagas。一个LLT事务#xff08;Long Lived Transaction#xff09;可以分成若干个小的事务执行单元#xff0c;这些小执行单元就是saga事务。Saga方案更适合用于长事务场景。Saga模型将一个分布式事务拆分为多个本… Saga源于Hector Garcaa-Molrna和Kenneth Salem发表的论文Sagas。一个LLT事务Long Lived Transaction可以分成若干个小的事务执行单元这些小执行单元就是saga事务。Saga方案更适合用于长事务场景。Saga模型将一个分布式事务拆分为多个本地事务每个本地事务都有相应的执行模块Transaction和补偿模块Compensation任和一个本地事务出错时都可以通过调用相关的补充方法实现事务的最终一致性。
当每个Saga子事务序列 T1,T2,…,Tn都有对应的补偿定义C1,C2,…,Cn-1时Saga系统可以保证如下状态。 子事务序列可以完成。这是事务的最佳情况即无须回滚。 或者序列 T1, T2, …, Tx,和Cx, …, C2, C1其中x小于n可以完成。这种状态能够保证当回滚发生时补偿操作按照正向操作的相反顺序依次执行。
Saga模型同时支持正向恢复和逆向恢复。正向恢复是指重试当前失败的事务它的实现前提是每个子事务最终都能够执行成功逆向恢复则是指在任意一个子事务失败时补偿所有已完成的事务。
显然正向恢复没有必要提供补偿事务如果在业务中的子事务最终总会成功那么正向恢复能够降低Saga模型的使用复杂度。另外即使补偿事务难以实现正向恢复也是不错的选择。
虽然在理论上来讲补偿事务永不失败。但是在分布式的世界中服务器可能会宕机网络可能会失败数据中心也可能会停电。因此需要提供故障恢复后的回退机制比如人工干预机制等。
Saga模型没有实现事务隔离性。如果两个Saga事务同时操作同一资源则会产生更新丢失、脏数据读取等问题这时就需要使用Saga作为事务管理机制的应用程序在应用层面加入资源锁定的逻辑了。
Saga 模式的优缺点
优点
解耦Saga 模式将长寿命事务拆分为一系列可独立执行的本地事务降低了不同服务间的耦合度。 高可用由于 Saga 模式采用了补偿操作来实现事务的原子性使得每个本地事务可以独立提交降低了锁的粒度提高了整个系统的可用性。 容错Saga 模式可以通过执行补偿操作来处理中断的事务提高了系统的容错能力。
缺点
一致性由于 Saga 模式采用了非严格的一致性模型因此在特定场景下可能出现数据不一致的情况。 复杂性为确保数据一致性开发人员需要为每个本地事务编写相应的补偿操作增加了开发和维护的复杂性。