每个微服务的本地事务是否以Saga模式持久存在。例如,微服务A完成事务并向微服务B发送事件,微服务A的操作是否会立即影响数据库,从而导致状态不一致,还是会在上一个微服务的OK事件之后影响?
发布于 2021-08-09 03:11:08
Saga模式的要点是工作时不会阻塞。如果A的本地事务的状态将由最后的微服务结果(即,由B)驱动,则A将等待B的结果。然后,A将以某种方式在处理中被阻塞。
对于saga模式,当微服务完成其工作时,立即应用本地事务。如果失败发生,那么saga将确保A被告知该结果,并且A负责补偿正在完成的工作。例如,这可以是删除持久记录。例如,微服务A可以将本地事务的结果持久化一些标志(如“正在进行中的saga”),并且在saga作为整体完成之前不考虑该项目(然后将标志切换为类似于“完成”的标志)。
https://stackoverflow.com/questions/67944827
复制