我已经应用了DB-Per-Service模式。2PC是禁止的。
编排传奇与每个服务锁定其编辑的资源被认为是一个糟糕的做法吗?我必须自动更新3个服务。因此,我使用saga自动更新每个服务,更改记录的版本号以避免并发问题,然后继续下一个服务。当出现故障时,我使用消息队列逐个回滚服务。
它不是基本上是2pc的异步实现吗?缺点是用户读取可以回滚的预提交数据?是否必须锁定已处理的资源才能在不丢失数据的情况下回滚?
发布于 2021-02-22 01:59:26
你是对的,你的传奇基本上是一个异步2pc,尽管可以说它不是原子的,因为未提交的值是可以读取的。
也就是说,如果存在对数据片段之间强一致性的实际业务需求(通常没有),这是一个很好的迹象,表明所有这些数据都希望归同一个服务所有(即服务边界不符合业务需求)。在我的经验中,这就是基于关系模式中的表定义服务容易失败的地方。
https://stackoverflow.com/questions/66282570
复制相似问题