Page 1 of 1

另一种类型的传奇故事适合此挑战:

Posted: Thu Jan 30, 2025 9:23 am
by suchona.kani.z
在编排期间,微服务直接相互通信以执行子事务。每个微服务都知道自己的任务和事务的上下文。通信通常通过事件或消息异步进行。每个微服务执行其任务并触发适当的事件以通知序列中的下一个微服务。这要求各个微服务能够协调来维护事务状态。没有中央控制点监控执行情况。

这种类型的 Saga 通常很容易实现,并且适用于不需要跟踪且不需要跟踪事务状态的短期、少步骤事务。

另一方面,由于涉及的服务太多,确定错误发生的位置变得越来越困难。同时,运行时依赖的数量变得更加混乱且难以管理。



在Saga编排中,有一个中央编排器控制子事务的执行。协调器负责协调所涉及的微服务并管理事务状态。它确保步骤按照正确的顺序执行,并且在发生错误时可以启动补偿措施以恢复之前的状态。协调器充当微服务之间事务控制和通信的中心联系点。

订单流程的 Orchestrator 传奇示例
订单流程的 Orchestrator 传奇示例

上图显示了已经熟悉的订购流程,但这次是 Orchestrator 传奇:主要区别 loadrunner协议列表 是使用负责编排、跟踪和追踪必要步骤的专用服务。

这种类型的传奇的一个重要优点是可以避免循环依赖,因为服务在事务期间不会相互通信,而仅与协调器通信。另一个优点是提高了清晰度,因为整个工作流程的定义都在一个可以调整和测试的地方。

然而,这些优势的代价很高:编排器成为单点故障,这意味着如果它不可用或出现故障,则无论涉及的其他服务多么可靠,整个事务都无法执行。由于实现和维护的复杂性增加,这种类型的传奇适用于涉及许多(通常超过四个)服务的业务事务,这些服务涉及需要跟踪其状态的冗长步骤。

在我们的厨房示例中,协调员是协调餐厅厨房站的主厨。他向每位员工指示需要按正确的顺序准备哪些成分。如果任何步骤出现问题,他都会确保所有相关人员采取行动,以确保厨房最终状况良好。

结论
我们了解了Saga模型及其主要特点。我们还研究了传奇的主要类型:编排和编排。两者都有各自的优点和缺点,必须针对每个应用相互权衡。工作步骤的数量和持续时间以及状态跟踪的需要对于选择是决定性的。

因此,下次当您烘烤蛋糕或尝试在微服务架构中完成复杂的分布式业务事务时,请记住 Saga 模式是成功的秘诀!

您可以在我们之前发布的博客文章中找到来自 adesso 世界的更多令人兴奋的主题。