【问题标题】:Choreography saga编舞传奇
【发布时间】:2021-05-22 17:45:15
【问题描述】:

我已经应用了 DB-Per-Service 模式。 禁止2PC。

每个服务锁定其编辑资源的编排传奇是否被认为是一种不好的做法? 我必须自动更新 3 个服务。 所以我使用 saga 自动更新每个服务,更改记录的版本号以避免并发问题,然后继续下一个服务。 当出现故障时,我会使用消息队列逐个回滚服务。

它基本上不是 2pc 的异步实现,缺点是用户读取可以回滚的预先提交的数据吗?我是否必须锁定已处理的资源才能在不丢失数据的情况下回滚?

【问题讨论】:

    标签: microservices distributed-transactions


    【解决方案1】:

    你是对的,你的 saga 基本上是一个异步 2pc,尽管它可以说不是原子的,因为可以读取未提交的值。

    也就是说,如果实际业务需要(通常没有)数据片段之间的强一致性,那么这是一个很好的迹象,表明所有数据都希望由同一个服务(即服务边界不符合业务要求)。根据我的经验,这就是基于关系模式中的表定义服务容易崩溃的地方。

    【讨论】:

      猜你喜欢
      • 2018-04-28
      • 2014-06-15
      • 1970-01-01
      • 2013-04-04
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-11-06
      相关资源
      最近更新 更多