Node.js MongoDB变更流性能

Node.js MongoDB变更流性能,node.js,mongodb,changestream,Node.js,Mongodb,Changestream,是否可以广泛使用变更流?我想观看许多集合,其中包含许多具有各种参数的文档。其思想是允许多个用户观看他们感兴趣的数据。因此,不仅要显示少量实时更新,例如来自单个集合或其他集合的某些股票数据,而且要允许现代web应用程序实时更新。我偶然发现了一些讨论,例如,有人认为该功能无法用于此目的 因此,想象一下实施众所周知的社交网络。每个用户都希望获得(1)通知、(2)在线好友、(3)好友请求、(4)新闻提要、(5)新闻提要帖子评论(可能每个帖子一条)的实时数据。这使得每个用户至少有5个开放的变更流。如果一项

是否可以广泛使用变更流?我想观看许多集合,其中包含许多具有各种参数的文档。其思想是允许多个用户观看他们感兴趣的数据。因此,不仅要显示少量实时更新,例如来自单个集合或其他集合的某些股票数据,而且要允许现代web应用程序实时更新。我偶然发现了一些讨论,例如,有人认为该功能无法用于此目的

因此,想象一下实施众所周知的社交网络。每个用户都希望获得(1)通知、(2)在线好友、(3)好友请求、(4)新闻提要、(5)新闻提要帖子评论(可能每个帖子一条)的实时数据。这使得每个用户至少有5个开放的变更流。如果一项服务连接了10000个用户,它将产生50000个活动的变更流

这个机构准备好承受这样的负载了吗?如果我理解(和其他一些人)每个变更流观察者都会创建一个连接。有几万个连接可以吗?这似乎不是一个好的设计。看起来最好是观察每个集合并在应用程序服务器上进行过滤,但这更多是数据库服务器的工作


有没有办法用mongo db处理这种负载?

每个更改流都需要连接到服务器。假设你的10000个活跃用户要做一些事情,比如登录、发布、阅读、评论别人的东西、管理朋友列表等等。实际上,你可能需要每个用户10个连接

每个变更流本质上是一个聚合,在操作日志上维护一个光标。只要服务器的大小足以处理:

  • 100000个同时连接
  • 50000个长时间运行的游标的状态
  • 每秒对这些更改流进行10到数千次查询
  • 其他非changestream读取和写入所需的任何查询速率
在MongoDB Atlas上,您至少需要一个M140实例来处理这个数量的连接,价格大约为每月10000美元


在这个价位上,设计一个发布/订阅通知服务可能更具成本效益,该服务总共使用5个变更流来监视不同类型的变更,并通过推送机制将这些变更交付给用户,而不是让每个用户直接轮询数据库。

让我们忽略浏览器和应用程序之间的连接。服务器。我只关心mongo服务器和应用程序之间的连接性能。服务器。我想这与50000光标有关。但这是正常和正确的解决方案吗?你提到酒吧/酒吧,你是指在browser-app.server路线上还是在app.server-mongo路线上?如果是第二个-它不是在做mongo的工作吗?请你把这些想法纳入你的答案中好吗?谢谢