在Heroku和Node.js上扩展websockets

让我们假设我有一个大的应用程序处理Heroku上有意义的websockets连接数量。 为了应付这样的大量需求,指令数增加到N

Heroku的路由器如何在运行的dynos之间分配新的传入的websocket连接?

换句话说,如果其中一个dynos在websockets连接中最大化,Heroku的路由器将会偏离其他(据说)不太繁忙的dynos中的所有新的传入请求? 还是仍然使用http传入连接的文档中所述的随机分配?

这肯定是有道理的,因为websockets连接是第一个例子中的http连接。 但是,在N正在运行的dynos之间平均地扩展大量的持久连接是相当复杂的。

有人确认吗?

您链接到的页面显示“路由器使用随机selectalgorithm来跨Web dynos进行HTTP请求负载平衡”。 这似乎是明确的。 请注意,Heroku和Rap Genius在这个问题上遇到了麻烦,虽然它是在旧的Bamboo堆栈中。

一般来说,通过添加dynos,您应该能够避免任何一个dyno被重载,因为websockets实际上并没有为每个支持的附加连接使用额外的RAM。 在最坏的情况下,更繁忙的动力线应该会遭受更高的延迟。

Interesting Posts