mongodb 支持多少个开放的变更流?

tal*_*ari 5 database real-time scale mongodb

我们正在构建一个实时 API,需要保存特定于用户的数据更新。我们正在考虑在表示用户应该获取的数据的聚合上打开一个变更流,并通过 WebSocket 提供该数据。

我找不到有关更改流限制的文档,这意味着 MongoDB 将同时支持多少个打开的更改流,以及是否可以通过向 mongo 添加更多副本来进行扩展。

我们正在谈论数千个开放的变更流。

Kat*_*eva 0

每个开放的变更流都会有其成本,变更流数量的上限将根据您正在观看的集合中的数据变更率而变化。如果您希望拥有 1000 多个流,最好在更改流之上使用某种消息队列来向许多消费者提供消息(例如,Kafka有一个基于更改流的连接器)。是的,您可以通过将更改流定位到副本集的不同成员来进行扩展,例如 secondary1 将服务来自集合 A 和 B 的事件, secondary2 将服务来自集合 C 和 D 的事件。一般建议是将更改流的数量保持为尽可能低。每个更改流都是一个连接,您可能不希望每个用户都有一个连接。

一些相关帖子 MongoDB Change Streams 导致性能严重下降