当前位置: 首页 > 知识库问答 >
问题:

每个微服务的本地事务是否会以saga模式立即影响数据库?

澹台展鹏
2023-03-14

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

共有1个答案

郭永怡
2023-03-14

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

对于saga模式,当微服务完成其工作时,立即应用本地事务。如果失败发生,则该传奇将确保A了解该结果,并且A负责补偿所做的工作。例如,可以删除持久记录。例如,微服务A可以使用一些标志(如“saga in progress”)持久化本地事务的结果,并且在整个saga完成之前不考虑此类项目(然后将标志切换为“finished”)。

 类似资料:
  • 我正在开发一个spring boot微服务应用程序,采用Saga编排模式和每个服务的数据库设计。我明白模式应该是异步的。然而,我有一个用例,其中我有一个微服务需要从另一个服务查询数据。 以下是上下文:

  • 问题内容: 当我在MySQL中执行此命令时: 它会影响整个引擎还是仅仅是我当前的交易? 问题答案: 在设置问题方式时,它是基于会话的。 https://dev.mysql.com/doc/refman/5.7/zh-CN/server-system- variables.html 据此,以“两者”为范围。这意味着可以为会话设置它: 或全球:

  • 我有两个微服务和调用来更新数据,然后插入另一个数据,但让我们考虑一下 失败,然后我们需要回滚由 更新的数据,否则我们将处于不一致的状态。 我也经历了佐贺patterns.will它满足了这种矛盾 谁能为此提出更好的解决方案?

  • 我有两个微服务,它们应该相互通信。我的例子是:微服务A向微服务B发出请求。用户不应该有访问权限,只能访问其他微服务。我想,那个解决方案可能是“Http基本身份验证”,所以microservice A还应该向microservice B发送用户名和密码。这很好,但microservice A应该如何找到用户名和密码呢?我正在使用Eureka作为发现服务,但在这种情况下,我没有找到任何可以帮助我的。我

  • 我的应用程序设置为(非故意)服务将使用gps/网络侦听器轮询位置。它工作得很好,因为我负责服务何时结束(即在找到新位置或达到超时时调用stopSelf())。然而,我最近读到,intentService可能更适合长时间运行的任务,因为它不是在ui线程上运行的,而是在自己的工作线程上运行的。问题是,现在它不允许服务在任何时间运行(我假设这是因为服务中没有任何活动发生,而侦听器等待接收位置,因此服务本