假设当用户登录网络应用程序时,他会看到一个信息列表。

假设信息列表由两个 dynos 之一提供(通过 heroku),但信息列表源自来自单个 mongo 数据库(即,nodejs dynos 只是在用户登录 Web 应用程序时将 mongo 信息传递给用户)。

问题:假设我想让用户能够修改添加到该信息列表。

对于 1,000-10,000 个用户的规模,以下策略是否合适:

  1. 用户修改/添加数据; HTTP POST 将更新后的数据发送到两个 Nodejs dyno 之一。
  2. Dyno(无论是哪一个)都会修改/添加数据,并直接查询 mongo 数据库来更新数据。
  3. Dyno 向客户端发送更新成功的确认信息。

这样可以吗?我是否需要添加更多的测功机(heroku)?我基本上担心,如果一群用户尝试同时访问单个数据库,速度会很慢,或者我在某种程度上冒着破坏 1,000-10,000 人规模的整个数据库的风险。这种担心合理吗?

请您参考如下方法:

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

MongoDB 将对响应进行排队,并按照收到的顺序处理它们。根据内存中的内容,它可能不够快,也可能不够快。

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

判断性能是否受到阻碍的唯一方法是对其进行监控,并查看资源是否持续达到您不愿通过的阈值。从好的方面来说,在发现阶段,您的客户可能只会注意到几毫秒的延迟。

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

您的数据库可能不会损坏,但如果您的数据很重要(如果不重要,为什么要收集它?),您应该创建一个副本集。在使用第二个 Node 实例之前,我可能会使用数据副本集。


评论关闭
IT源码网

微信公众号号:IT虾米 (左侧二维码扫一扫)欢迎添加!