使用Node和Heroku进行负载均衡

6 浏览
0 Comments

使用Node和Heroku进行负载均衡

我的网络应用程序接受来自iOS应用的API请求。我的网络应用程序托管在Heroku上,使用他们的免费dyno可以处理每个请求512MB的数据。由于Node是单线程应用程序,一旦从iOS端到Web服务器的流量开始增加,这将成为一个问题。我并不是世界上最富有的人,所以我想知道是否明智地创建另一个免费的Heroku应用程序,并使用轮询方式来平衡从iOS应用程序接收到的负载?

我只需要指向正确方向。从财务上来说,纵向扩展并不是一个真正的选择。

0
0 Comments

问题的原因:运行两个应用程序的副本以避免Heroku的限制违反了其服务条款。

解决方法:

1. 根据Heroku的文档,当一个免费、爱好或标准-1x的动力达到其配额的五倍时,动力管理器将重新启动您的动力并记录R15错误。

2. 尽管您的动力只有512MB的实际内存,但它在重新启动之前会交换到5倍的内存。因此,您可以超过512MB(只要您愿意承受交换到磁盘的性能损失,这可能会很严重)。

3. Heroku按秒计费,并允许您根据需要缩放动力形成。您可以通过访问Heroku API在自己的应用程序中很容易地实现这一点。你可以尝试使用Heroku的node客户端或toots/node-heroku模块来缩放动力形成。

4. 还有第三方服务,如Adept和Hirefire,可以在一定程度上自动化此过程。您可以尝试使用它们来自动添加和删除动力。

请注意,上述解决方法中的链接是无法访问的,因此无法提供详细的代码示例。

0
0 Comments

在Heroku上进行负载均衡是违反其规定的。但是,还有其他服务可以实现负载均衡。

解决方法是使用cluster模块和ZeroMQ。首先,需要安装ZeroMQ插件。主进程创建Router和Dealer套接字,并在它们之间转发消息。监听工作进程上线事件,并进行处理。然后,创建工作进程连接到Dealer套接字,接收消息并进行处理。

在主应用中,需要将请求发送给Router,然后转发给工作进程。可以通过创建一个带有参数的脚本来区分主进程和工作进程,并在主服务器上使用默认参数运行,而在其他服务器上使用工作标志运行,强制其连接到主Dealer套接字。

主应用需要使用Requester套接字将请求发送给Router,并处理工作进程的响应。

这个方法是我倾向于的解决方案。感谢提供的代码。

0
0 Comments

Node.js平台负责人在Heroku。

你可能正在进行一些过早的优化。在我们最小的1X尺寸(512MB RAM)上,Node.js可以处理数百个同时连接和数千个每分钟的请求。

如果你的iOS应用程序始终达到最大限制,可能是时候考虑盈利了!

所以你认为在这段时间里我会没问题吗?我没有那么多的请求,而且可能在不久的将来也不会有那么多。我只是想计划并做好准备。

0