这种MEAN堆栈devise模式适用于1,000-10,000个用户规模吗?

比方说,当一个用户login到一个Web应用程序,他看到一个信息列表。

假设信息列表由两个dynos中的一个(通过heroku)服务,但是信息列表来源于 单个mongo数据库 (即,当他login进入时,nodejs dynos只是将mongo信息传递给用户Web应用程序)。

问题:假设我想让用户既可以修改可以添加到信息列表中。

在1,000-10,000用户的规模下,以下策略是适合的:

  1. 用户修改/添加数据; HTTP POST发送到具有更新数据的两个nodejs dynos中的一个。
  2. Dyno(无论哪一个)都需要修改/添加数据,并直接查询mongo数据库来更新数据。
  3. Dyno向客户端发送更新成功的确认信息。

这个可以吗? 我需要添加更多的dynos(heroku)吗? 我基本上担心,如果一群用户试图一次访问一个数据库,速度会很慢,或者我以某种方式冒着损失1,000-10,000人的整个数据库的风险。 这种恐惧是否合理?

简答:是的,这是一个合理的恐惧。 更长的答案,取决于。

MongoDB将排队响应,并按照接收到的顺序处理它们。 取决于从内存中提供多less内容,它可能会或可能不够快。

NodeJS具有相同的devise模式,它将对不处理的响应进行排队,并在资源可用时执行它们。

要判断性能是否受到阻碍,唯一的方法就是通过监控性能,看看资源是否始终达到了一个门槛,这让你感到不舒服。 好的,在你的发现阶段,你的客户可能只会注意到几毫秒的延迟。

实现这一点的正确方法是在资源消耗来处理stream量时启动一个新实例。

你的数据库可能不会被破坏,但是如果你的数据很重要(为什么你要收集它呢?),你应该创build一个副本集。 在使用第二个节点的实例之前,我可能会使用一组副本数据。