我在一个分布式系统(eCommerce)上工作,并使用Kafka事件在系统之间进行通信。所以根据我们的业务逻辑,我们首先发布到Kafka topic (成功),然后更新oracle数据库。数据库更新有时会失败,如何维护系统间的状态一致性?由于另一个系统将使用订单的新状态更新其数据库,而生产者将仅具有旧状态,因此如何减少这种不一致?
发布于 2020-03-31 12:27:38
你正在使用的实际调用双重写入,这可能会导致永久不一致,因为许多丑陋的问题,如部分失败,如你的情况,竞争条件……
我发现一种非常有趣的方法是使用change data capture来保持不同数据系统之间的同步。
强烈推荐Martin Kleppmann关于如何使用这种架构的博客演讲:
https://stackoverflow.com/questions/60942497
复制相似问题