【问题标题】:Does each microservice's local transaction affect database immediately in saga pattern?在 saga 模式中,每个微服务的本地事务是否会立即影响数据库?
【发布时间】:2021-08-28 20:37:06
【问题描述】:

是 Saga 模式中每个微服务的本地事务持久化。例如,微服务 A 完成事务并向微服务 B 发送事件,微服务 A 的操作是立即影响数据库,导致状态不一致,还是在最后一个微服务的 OK 事件之后影响?

【问题讨论】:

    标签: microservices distributed-transactions saga


    【解决方案1】:

    Saga 模式的要点是在没有阻塞的情况下工作。如果 A 的本地事务的状态将由最后一个微服务结果(即由 B)驱动,那么 A 将等待 B 的结果。那么 A 将以某种方式在处理中被阻塞。

    对于 saga 模式,当微服务完成其工作时,会立即应用本地事务。如果失败发生,则确保 A 被告知该结果,并且 A 负责补偿正在完成的工作。例如,这可能是删除持久记录。例如,微服务 A 可以使用一些标志(如“正在进行的传奇”)持久保存本地事务的结果,并且在整个 saga 完成之前不考虑此类项目(然后将标志切换为“完成”之类的东西)。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2019-11-23
      • 1970-01-01
      • 1970-01-01
      • 2017-07-30
      • 1970-01-01
      • 2020-11-28
      • 2022-10-12
      • 1970-01-01
      相关资源
      最近更新 更多