另一方面,由于涉及的服务太多,确定错误发生的位置变得越来越困难。同时,运行时依赖的数量变得更加混乱且难以管理。
在Saga编排中,有一个中央编排器控制子事务的执行。协调器负责协调涉及的微服务并管理事务状态。它确保步骤按照正确的顺序执行,并且在发生错误时可以启动补偿措施以恢复之前的状态。协调器充当微服务之间事务控制和通信的中心联系点。
订单流程的 Orchestrator 传奇示例
订单流程的 Orchestrator 传奇示例
上图显示了已经熟悉的订购流程,但这次是 Orchestrator 传奇:主要区别是使用负责编排、跟踪和追踪必要步骤的专用服务。
这种类型的传奇的一个重要优点是它避免了循环依赖,因为服务 丹麦 whatsapp 数据 在事务期间不会相互通信,而仅与协调器通信。另一个优点是更加清晰,因为整个工作流程的定义都在一个可以调整和测试的地方。
然而,这些优势的代价很高:编排器成为单点故障,这意味着如果它不可用或出现故障,则无论涉及的其他服务多么可靠,整个事务都无法执行。由于实现和维护的复杂性增加,这种类型的传奇适用于涉及许多(通常超过四个)服务的业务事务,这些服务涉及需要跟踪其状态的冗长步骤。
在我们的厨房示例中,协调员是协调餐厅厨房站的主厨。他向每位员工指示需要按正确的顺序准备哪些成分。如果任何一个步骤出现问题,他都会确保所有相关人员都采取行动,确保厨房最终保持良好状态。
结论
我们了解了Saga模型及其主要特点。我们还研究了传奇的主要类型:编排和编排。两者都有各自的优点和缺点,必须针对每个应用相互权衡。工作步骤的数量和持续时间以及状态跟踪的需要对于选择是决定性的。
因此,下次当您烘烤蛋糕或尝试在微服务架构中完成复杂的分布式业务事务时,请记住 Saga 模式是成功的秘诀!
您可以在我们之前发布的博客文章中找到来自 adesso 世界的更多令人兴奋的主题。