(三)—— 补偿交易模式.pdfVIP

  1. 1、本文档共3页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  5. 5、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  6. 6、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  7. 7、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  8. 8、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
(三)—— 补偿交易模式

(三)—— 补偿交易模式 云计算设计模式 (三)——补偿交易模式 撤消由⼀系列步骤,它们共同限定了最终⼀致性操作中,如果⼀个或多个步骤失败执 的⼯作。按照最终⼀致性模型,业务实现复杂的业务流程和⼯作流的云托管的应⽤ 程序中很常见。 背景和问题 在云中运 的应⽤程序频繁修改数据。此数据可跨在各种地理位置的所保持的数据源 的⼀个品种传播。为了避免争⽤,并提⾼在分布式环境中,例如这样的性能,应⽤程 序不应该试图提供强事务⼀致性。相反,应⽤程序应该实现最终⼀致性。在该模型 中,⼀个典型的业务操作由⼀系列的独⽴的步骤。⽽正在执 这些步骤的系统状态的 整体图可能是不⼀致的,但是,当操作完成并且所有步骤都被执 ,系统应该重新变 得⼀致。 注意 数据的⼀致性提供了⼊门为什么分布式事务不能很好地扩展更多的信息,并且巩固了 最终⼀致性模型的原则。 在最终⼀致性模型的⼀个显著的挑战是如何处理失败⽆可挽回的⼀步。在这种情况 下,可能需要撤消所有通过的操作中的前⾯的步骤完成的⼯作。然⽽,数据不能简单 地被回滚,因为应⽤程序的其它并发实例可能已经改变,因为它。即使在数据没有被 通过⼀并发实例变更的情况下,撤消⼀个步骤可能不是简单地恢复原始状态的问题。 可能需要应⽤不同的业务特定的规则 (参见实施例部分中描述的旅 ⽹站)。 如果实现最终⼀致性操作跨越多个异构数据存储,解开在这样的操作中的步骤将需要 访问的每个数据存储区中的转弯。在每⼀个数据存储区执 的⼯作必须可靠地复原到 防⽌系统其余不⼀致。 不受实现最终⼀致性的操作的所有数据可能会在数据库中进 。在⾯向服务的架构 (SOA )环境中的操作可能会调⽤⼀个服务动作,并导致由该服务保持状态的变化。 要撤消的操作,这种状态的改变也必须是百废待兴。这可能涉及再次调⽤服务并执 该反转第⼀的影响另⼀个动作。 解决⽅案 落实补偿事务。在⼀个补偿事务的步骤必须撤消的原始操作的步骤的影响。补偿事务 可能⽆法简单地与国家的制度在运 ,因为这种⽅法可能会覆盖由应⽤程序的其他并 发实例所做的更改开始取代⽬前的状态。相反,它必须是⼀个聪明的过程中,考虑到 并发情况下进 的任何⼯作。这个过程通常是应⽤程序特定的,由原始操作所执 的 ⼯作的性质来驱动。 ⼀种常见的⽅法来实现的,最终⼀致的操作,需要补偿的是使⽤的⼯作流。由于原来 的动作的进 ,系统记录每个步骤,以及如何通过该步骤完成的⼯作可以撤消信息。 如果操作失败,在任何时候,在⼯作流倒卷回通过它已经完成的步骤,并执 反转每 个步骤的⼯作。注意,补偿事务可能没有撤消的原始操作的精确镜⾯相反的顺序⼯ 作,并且它可能会执 ⼀些并 撤销步骤。 注意 这种⽅法类似于英雄传奇策略。这⼀战略的描述是克莱门斯 Vasters 的博客在⽹上提 供。 补偿事务本⾝是⼀个最终⼀致的操作,它也可能会失败。该系统应能够恢复补偿事务 在故障点并继续。可能有必要重复发⽣故障的步骤,所以在补偿事务的步骤应该被定 义为幂等的命令。有关幂等的详细信息,请参阅乔纳森·奥利弗的博客幂等模式​​ 。 在某些情况下,可能⽆法从该已失败,除⾮通过⼈⼯⼲预的步骤中恢复。在这种情况 下,系统应发出警报,并提供尽可能多的信息尽可能了解失败的原因。 问题和注意事项 在决定如何实现这个模式时,请考虑以下⼏点: 它可能不容易确定何时在实现最终⼀致性的动作的步骤已经失败。⼀个步骤可 能不会⽴即失败,⽽是它可以阻⽌。可能有必要实现某种形式的超时机制。 补偿逻辑不容易推⼴。补偿事务是特定于应⽤程序;它依赖于具有⾜够的信息, 以便能够撤消在⼀个失败的操作的每个步骤的效果的应⽤。 您应该定义的步骤在补偿事务的幂等命令。这使得,如果补偿事务本⾝不能被 重复的步骤。 处理中原始操作的步骤,以及所述补偿事务的基础设施,必须是有弹性的。它 ⼀定不能失去,以补偿发⽣故障的步骤所需要的信息,⽽且它必须能够可靠地 监视补偿逻辑的进度。 ⼀个补偿事务并不⼀定在系统中返回数据的状态是在原操作的开始。相反,它 补偿了由该成功完成操作失败之前的步骤中执 的⼯作。 在补偿事务中的步骤的顺序并不⼀定是反射镜相反的,在原来的操作的步骤。 例如,⼀个数据存储可以是不⼀致⽐另⼀个更敏感,从⽽撤消更改到该商店中 的补偿事务的步骤应⾸先发⽣。 在完成操作所需的每个资源放置⼀个短期的基于超时的锁,并提前获得这些资

文档评论(0)

wnqwwy20 + 关注
实名认证
文档贡献者

该用户很懒,什么也没介绍

版权声明书
用户编号:7014141164000003

1亿VIP精品文档

相关文档