【问题标题】:MongoDB change streams guaranteed delivery?MongoDB 更改流保证交付?
【发布时间】:2020-04-30 07:51:31
【问题描述】:

我正准备为我正在构建的聊天应用程序选择 RethinkDB,因为它具有 changefeeds 功能,但后来我发现 MongoDB 有类似的东西,称为 Change streams。这两者之间最显着的区别是什么?

特别是,我在 RethinkDB 文档中看到:

由于 changefeed 是单向的,没有客户返回的确认,因此它们不能保证交付。如果您需要通过传递保证进行实时更新,请考虑使用通过消息代理(例如 RabbitMQ)分发给客户端的模型。

我想知道 MongoDB 更改流是否相同?是否保证每次数据更改时都会收到更新?

【问题讨论】:

    标签: mongodb rethinkdb


    【解决方案1】:

    MongoDB 更改流由客户端拉取,而不是由服务器推送。

    客户端在每批更新中都会收到一个恢复令牌,并在向服务器请求更多更新时将该令牌传回。

    但这并不是一个保证。更改流依赖于副本集 oplog,因此如果客户端在请求更多数据之前等待的时间过长,则恢复令牌指示的事件可能已从 oplog 中清除,并且客户端将收到一个错误,表明可能错过了更新。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-03-11
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多