我正在尝试评估Meteor JS是否适合未来包含实时聊天的项目,并且可能需要具有可扩展性。
它当然可以执行聊天功能,但如果流量激增,我不想让自己陷入困境,我们需要以无人机/动力/实例的形式为应用程序提供更多资源。我已经读过Heroku上的Meteor应用程序不容易扩展(可能根本没有?)。我不清楚这是否是Heroku问题,或者更多与Meteor JS的当前状态有关(目前为0.6.2.1)。我发现没有更多与Nodejitsu或AppFog相关的内容。
有人可以澄清Meteor JS应用程序目前是否可以部署在PaaS上,以便可以轻松扩展资源(无人机/动态/实例/实例)以满足需求?如果是这样,哪个Paas?如果没有,那么解释是什么(对于一个5岁的孩子),是否有路线图?
答案 0 :(得分:7)
我亲自为自己设置了AWS负载均衡器和EC2实例,我的数据库在MongoHQ上完成。
按照以下说明操作,可以更轻松地设置负载均衡器:
http://www.ripariandata.com/blog/creating-an-aws-elastic-load-balancer
我编写了一个脚本来部署到单个EC2实例。如果您有多个实例,添加额外的遥控器不会太多工作:
答案 1 :(得分:4)
我建议的最好的是Meteor.com托管(通过流星部署)。
这是因为他们会在他们的架构中加入ddp-proxy解决方案。它不像在两个流星之间进行代理并使用发电机一样简单,因为每个用户的会话可能在另一个服务器上。切换到另一个发电机时可能会造成一些麻烦。
现在它的免费&看起来它们也能很好地扩展它。我认为他们也将很快推出更好的托管解决方案。谁比流星本身更好地托管流星应用程序。
如果要部署在自己的基础架构(例如EC2)上,您可以暂时向上扩展,直到DDP代理发布(DDP是meteor用于在服务器和客户端之间进行通信的对象(很快也会在服务器之间进行通信) )确保状态可以在多个'发电机'中传递。
答案 2 :(得分:1)
这个答案是Heroku特有的。
据我所知,流星应用程序无法在Heroku上扩展到不止一个dyno。原因是流星服务器实例为每个客户端保持一个状态。这样,它每次都知道要发送给客户端的更新。这意味着客户端每次都必须与同一台服务器通信。 Heroku代理层不提供这种通信,并且可以将客户端请求路由到不保持客户端状态的不同dyno。
所以现在服务器必须从数据库获取所有客户端数据并将所有内容发送回客户端。服务器被加载并且客户端得到更新。所以我们有两个dynos,我们做了两次工作,给客户增加了很多噪音。
我希望它足够清楚。