我希望能够继续处理来自MongoDB的数据,在确保(由我写的)上插入成功之后。要做到这一点,我有两种选择:
就我的理解而言,我认为Kafka的优势在于它是分布式的,可以从多个实例中读取(我知道ChangeStream不容易让这个实例读取)。我看到的ChangeStream的优点是,它让我知道是什么样的操作(我执行向上插入,这样我就可以知道每个插入是一个插入还是一个更新)。我并不是问哪个更好,因为它显然为不同的用例服务。但是,对于我在这里考虑的这些选项,还有其他的特性或缺点吗?
我还了解到,这两种方法都可以在客户端的读取失败一段时间后继续进行(卡夫卡在其配额内,ChangeStream在恢复令牌上)
发布于 2022-02-28 12:20:53
两阶段提交会导致不一致;您应该只写到一个位置,而您认为这个位置更高。
您可以写到Mongo,然后使用Debezium将数据从ChangeStream流到Kafka (例如,包括操作)。这被称为“发件箱模式”。
或者您可以写到Kafka,并使用MongoDB接收器连接器将数据发送到数据库。
https://stackoverflow.com/questions/71288742
复制相似问题