node.js - 如何扩展 nodejs 应用程序

标签 node.js sockets heroku sails.js scalability

为了预测我们的开发成本,我和我的新同事想预测我们的托管需求

我们的应用程序将是一个公开应用程序,涉及越来越多的用户

我们发现,对于 node.js 应用程序,我们基本上有 2 个选择:

  • 作为一项服务,例如 Heroku
  • 采用原始服务器,专用的或虚拟的,例如法国的 OVH

规范:

服务器本质上是一个后端服务器,通过socket.io 提供“类似REST”的资源。 (使用 sails.js' 实现 sails.io.js )

基本上每个用户的用法是:

  • 进行搜索:服务器接受“请求”(套接字事件),处理合理的计算(涉及一些数学),返回合理的数字(< 1000 ) 的“responses”(套接字事件),取自数据库,作为 json
  • 用户会在原始用法中发出,比如说,3 个请求)
  • 每位用户一天使用该应用程序两次
  • 在后台,每个用户都会将其位置发送到服务器,仍然通过套接字“类似 REST”,比如说,每分钟

问题

我只想知道,猜测我们必须购买的服务器类型的基本流程是什么?我们想“随着我们的增长而扩展”服务器,但我们仍然需要制定计划,而且我真的不知道如何预测 10000 个用户的需求。

这是关于计算“每用户”服务器性能单位(Ram、Cpu、“Dyno”)和网络单位(带宽)吗?

非常感谢=)

最佳答案

这是 7 个月前的事了,但作为答案,请尝试使用 Google Compute Engine,并使用自动缩放功能随时缩放使用量。 Node.js 适用于它,您可以安装您需要的任何其他包。

负载平衡也由谷歌为您处理。您需要支付额外费用,但可以节省大量研究/开发缩放问题的时间。

关于node.js - 如何扩展 nodejs 应用程序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29167044/

相关文章:

mysql - 如何通过escape()方法在node中使用mysql全文搜索?

sockets - ConnectEx 与 SetFileCompletionNotificationModes 能否同步返回?

Python socket.error : [Errno 111] Connection refused

ruby-on-rails - 未收到来自 Rails sendgrid gem 的邮件

mysql - knex mysql connect ECONNREFUSED 用于同一服务器上的 3 个应用程序中的 1 个

node.js - http-proxy-middleware:返回自定义错误而不是代理请求

c++ - UDP套接字端口分配失败

ruby-on-rails - Heroku 部署上的 Rails 配置失败

database - Heroku 在哪里存储其数据库?

node.js - 有哪些包管理器可以替代 pnpm?