使用Node和Heroku进行负载均衡
问题的原因:运行两个应用程序的副本以避免Heroku的限制违反了其服务条款。
解决方法:
1. 根据Heroku的文档,当一个免费、爱好或标准-1x的动力达到其配额的五倍时,动力管理器将重新启动您的动力并记录R15错误。
2. 尽管您的动力只有512MB的实际内存,但它在重新启动之前会交换到5倍的内存。因此,您可以超过512MB(只要您愿意承受交换到磁盘的性能损失,这可能会很严重)。
3. Heroku按秒计费,并允许您根据需要缩放动力形成。您可以通过访问Heroku API在自己的应用程序中很容易地实现这一点。你可以尝试使用Heroku的node客户端或toots/node-heroku模块来缩放动力形成。
4. 还有第三方服务,如Adept和Hirefire,可以在一定程度上自动化此过程。您可以尝试使用它们来自动添加和删除动力。
请注意,上述解决方法中的链接是无法访问的,因此无法提供详细的代码示例。
在Heroku上进行负载均衡是违反其规定的。但是,还有其他服务可以实现负载均衡。
解决方法是使用cluster模块和ZeroMQ。首先,需要安装ZeroMQ插件。主进程创建Router和Dealer套接字,并在它们之间转发消息。监听工作进程上线事件,并进行处理。然后,创建工作进程连接到Dealer套接字,接收消息并进行处理。
在主应用中,需要将请求发送给Router,然后转发给工作进程。可以通过创建一个带有参数的脚本来区分主进程和工作进程,并在主服务器上使用默认参数运行,而在其他服务器上使用工作标志运行,强制其连接到主Dealer套接字。
主应用需要使用Requester套接字将请求发送给Router,并处理工作进程的响应。
这个方法是我倾向于的解决方案。感谢提供的代码。