2

我正在尝试评估 Meteor JS 是否适合未来包含实时聊天的项目,并且可能需要可扩展。

它当然可以执行聊天功能,但如果流量激增,我不想让自己陷入困境,我们需要以无人机/测功机/实例的形式为应用程序提供更多资源。我读过 Heroku 上的 Meteor 应用程序不会轻易扩展(也许根本不会?)。我不清楚这是否是 Heroku 问题,或者更多与 Meteor JS 的当前状态有关(此时为 0.6.2.1)。我没有发现更多与 Nodejitsu 或 AppFog 相关的内容。

谁能澄清目前是否可以在 PaaS 上部署 Meteor JS 应用程序,以便可以轻松扩展资源(无人机/测功机/实例)以满足需求?如果是这样,哪个Paas?如果没有,解释是什么(对于 5 岁的孩子),是否有路线图?

4

3 回答 3

7

就我个人而言,我已经为自己设置了一个 AWS 负载均衡器和 EC2 实例,我的数据库位于 MongoHQ。

通过遵循以下说明,负载均衡器设置变得更加容易:

http://www.ripariandata.com/blog/creating-an-aws-elastic-load-balancer

我编写了一个脚本来部署到单个 EC2 实例。如果您有多个实例,添加额外的遥控器不会有太多工作:

https://github.com/matb33/meteor-ec2-install

于 2013-05-09T18:41:27.317 回答
4

我推荐的最好的方法是 Meteor.com 托管(通过流星部署)。

这是因为他们会将 ddp-proxy 解决方案纳入其架构中。它不像只是在两个流星之间进行代理并使用发电机那么简单,因为每个用户的会话可能在另一台服务器上,并且在切换到另一个发电机时可能会造成一些麻烦。

现在它是免费的,看起来他们也很好地扩展了它。我认为他们也将很快推出更好的托管解决方案,并且谁比托管流星应用程序更好。

如果您想在自己的基础设施(例如 EC2)上进行部署,您可以暂时垂直扩展,直到 DDP 代理发布(DDP 是流星用来在服务器和客户端之间(以及很快在服务器之间)进行通信的工具确保状态可以跨多个“发电机”传递。

于 2013-05-09T18:28:31.123 回答
1

这个答案是 Heroku 特有的。

据我了解,流星应用程序不能在 Heroku 上超过一个测功机。原因是流星服务器实例为每个客户端保存一个状态。这样它就知道每次要向客户端发送什么更新。这意味着客户端每次都必须与同一台服务器通信。Heroku 代理层不提供这种通信,并且可以将客户端请求路由到不保存客户端状态的不同测功机。

所以现在服务器必须从数据库中获取所有客户端数据并将所有内容发送回客户端。服务器被加载并且客户端被更新。所以我们有两个测功机,我们做了两倍的工作,给客户增加了很多噪音。

我希望它足够清楚。

于 2013-05-09T18:18:58.340 回答