假设我们有一个异步事件驱动系统,其中服务 A 拥有一些数据,发布事件,服务 B 正在使用它们并将数据副本存储在其本地数据库中。
我希望能够检查B中的本地副本是否与A中的源一致。我不关心最终一致性,我明白B可以落后。我关心的是检查那个
我看到的所有文献要么处理最终一致性,要么默默地假设事件处理代码不包含任何错误。对我来说这是不现实的。有人可以指出我在哪里可以了解该主题吗?
我们的想法:
这通常使用连续的序列号来处理,以确保消息以正确的顺序应用。它肯定会导致更多的流失,因为每次重新排序消息都需要退避/重试逻辑,但它确实确保您具有一致性。
问题是,当你缺乏一致性时,你会怎么做?如果您 do 错过了一条消息,或者处理它时发生错误,您的后备计划是什么?
最终一致性设计通常只允许这种情况发生,并且有某种周期性的“清理”同步,可以批量提取所有数据并确保一切都是干净的。