在Heroku和Node.js上缩放WebSocket
假设我有一个大型应用程序在Heroku上处理大量WebSocket连接。为了满足如此大的需求,dynos的数量增加到在Heroku和Node.js上缩放WebSocket,node.js,heroku,websocket,horizontal-scaling,Node.js,Heroku,Websocket,Horizontal Scaling,假设我有一个大型应用程序在Heroku上处理大量WebSocket连接。为了满足如此大的需求,dynos的数量增加到N Heroku的路由器将如何在运行的Dyno之间分配新的传入WebSocket连接 换句话说,如果其中一个dynos在websockets连接中被最大化,那么Heroku的路由器是否会将所有新的传入请求转移到其他(据说)不太繁忙的dynos中?还是仍将使用随机分配 这肯定是有道理的,因为WebSocket连接在第一个实例中就是http连接。然而,在运行的dynos中,在N之间均匀
N
Heroku的路由器将如何在运行的Dyno之间分配新的传入WebSocket连接
换句话说,如果其中一个dynos在websockets连接中被最大化,那么Heroku的路由器是否会将所有新的传入请求转移到其他(据说)不太繁忙的dynos中?还是仍将使用随机分配
这肯定是有道理的,因为WebSocket连接在第一个实例中就是http连接。然而,在运行的dynos中,在N
之间均匀地扩展大量的持久连接是相当复杂的
有人确认吗?你链接到的页面上写着“路由器使用随机选择算法在web动态中平衡HTTP请求负载。”这似乎是明确的。请注意,Heroku在这个问题上与Rap Genius发生了冲突,尽管这是因为他们的旧竹堆
一般来说,通过添加dyno,您应该能够避免任何一个dyno过载,因为websockets实际上并不为每个支持的额外连接使用额外的RAM。在最坏的情况下,忙碌的dynos只会遭受更高的延迟