7

是否可以使用更改流进行广泛使用?我想观看许多带有各种参数的文档的集合。这个想法是允许多个用户观看他们感兴趣的数据。因此,不仅要显示一些实时更新,例如来自单个集合或其他的一些股票数据,而且要允许现代 Web 应用程序是实时的-时间。我偶然发现了一些讨论,例如这个建议,该功能不能用于此目的。

所以想象一下实现众所周知的社交网络。每个用户都希望获得关于 (1) 通知、(2) 在线好友、(3) 好友请求、(4) 新闻源、(5) 对新闻源帖子的评论(可能每个帖子都有一个评论?)的实时数据。这使得每个用户至少有 5 个打开的更改流。例如,如果一项服务连接了 10000 个用户,它会产生 50000 个活动更改流。

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

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

4

1 回答 1

5

每个更改流都需要连接到服务器。假设您的 10000 个活跃用户将执行登录、发布内容、阅读内容、评论他人的内容、管理朋友列表等操作。您实际上可能需要每个用户更多的 10 个连接。

每个更改流本质上都是一个聚合,在操作日志上维护一个游标。只要服务器的大小足以处理,这应该会很好地工作:

  • 100,000 个同时连接
  • 50,000 个长时间运行的游标的状态
  • 这些更改流每秒有成千上万的查询
  • 其他非更改流读取和写入所需的查询速率

在 MongoDB Atlas 上,您至少需要一个 M140 实例来处理该数量的连接,价格标签在每月 1 万美元左右。

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

于 2020-09-18T00:48:47.317 回答