我有一个关于如何负载平衡网络套接字的问题。
我有一个支持 Web 套接字的服务器。浏览器连接到我的站点,每个浏览器都打开一个 Web 套接字到www.mydomain.com
. 这样,我的社交网络应用程序就可以向客户推送消息。
传统上,只使用 HTTP 请求,我会通过在两个 Web 服务器前面添加第二个服务器和一个负载平衡器来扩展。
使用 Web 套接字,连接必须直接与 Web 服务器,而不是负载均衡器,因为如果机器的物理限制为 64k 开放端口,并且客户端正在连接到负载均衡器,那么我无法支持超过 64k 并发用户。
那我怎么——
让客户端在页面加载时直接连接到 Web 服务器(而不是负载均衡器)?每次最初请求页面时,我是否只是从节点加载 JavaScript,负载均衡器(或其他)随机修改脚本的 URL?
处理波纹启动?当 Web 服务器关闭时,浏览器会注意到连接已关闭。我可以编写 JavaScript 代码来尝试重新打开连接,但节点会消失一段时间。所以我想我必须回到负载均衡器来查询下一个要使用的节点的地址?
我确实想知道负载平衡器在初始请求上发送重定向,以便浏览器最初请求
www.mydomain.com
并被重定向到www34.mydomain.com
. 这工作得很好,直到节点出现故障——而像 Facebook 这样的网站不会这样做。他们是怎么做到的呢?