Websockets 和可扩展性
Posted
技术标签:
【中文标题】Websockets 和可扩展性【英文标题】:Websockets and scalability 【发布时间】:2018-04-26 08:30:02 【问题描述】:我是 websockets 的初学者。 在我的应用程序中需要服务器需要在发生变化并计划使用 websockets 时通知客户端。
单个服务器实例和单个客户端 ==> 将创建多少个 websockets 以及与 websockets 的多少个连接?
单个服务器实例和 10 个客户端 ==> 将创建多少个 websockets 以及与 websockets 的多少个连接?
单个服务器实例和 1000 个客户端 ==> 将创建多少个 websockets 以及与 websockets 的多少个连接?
当您的应用程序拥有 1000 多个用户群时,您如何使用 webscoket 进行扩展?
非常感谢您的反馈。
【问题讨论】:
Do html WebSockets maintain an open connection for each client? Does this scale?的可能重复 找出答案的最佳方法就是这样做...创建您的服务器然后编写新代码来启动大量客户端...许多工具使这很容易做到... websockets旨在处理数十个(如果不是 100 个)数千个同时客户端连接 【参考方案1】:1) 单个服务器实例和单个客户端 ==> 将创建多少个 websockets 以及与 websockets 的多少个连接?
如果您的客户端创建了一个 webSocket 连接,那么客户端上将有一个 webSocket 连接,而服务器上将有一个。是客户端创建到服务器的 webSocket 连接,因此客户端决定将有多少连接。如果它创建3,那么就会有3。如果它创建1,那么就会有1。通常,客户端只会创建1。
2) 单个服务器实例和 10 个客户端 ==> 将创建多少个 websockets 以及与 websockets 的多少个连接?
如上所述,这取决于客户做什么。如果每个客户端创建 1 个 webSocket 连接,并且有 10 个客户端连接到服务器,那么服务器将看到总共 10 个 webSocket 连接。
3) 单个服务器实例和 1000 个客户端 ==> 将创建多少个 websockets 以及与 websockets 的多少个连接?
与第 2 点相同。
当您的应用程序拥有 1000 多个用户群时,您如何使用 webscoket 进行扩展?
适当配置的单个服务器可以同时处理数十万个大部分空闲的 webSocket 连接,因为空闲的 webSocket 几乎不使用服务器 CPU。对于更大规模的部署,可以将服务器集群(运行多个服务器进程)并使用粘性负载平衡来分散负载。
如果您正在寻求大规模的 webSocket 或 socket.io 部署,Google 上还有许多其他类似的文章值得一读:
The Road to 2 Million Websocket Connections in Phoenix
600k concurrent websocket connections on AWS using Node.js
10 million concurrent webSockets
最终,每台正确配置的服务器可实现的规模可能更多地取决于每个连接有多少活动以及需要多少计算才能实现。
【讨论】:
非常感谢您的宝贵时间和反馈!另一个快速的问题......“一个配置得当的服务器可以同时处理数十万个大部分空闲的 webSocket 连接,因为空闲的 webSocket 几乎不使用服务器 CPU。”这是使用内存代理还是外部代理中继? @user3216514 - 我什至不知道您所说的内存或外部代理中继是什么意思。也许您应该更好地定义您要问的内容,并就该主题发布一个新问题。 如何使用 websockets 处理集群? @user3216514 - 这不是我们可以在评论中回答的问题(这是一个更长的答案)。如果您进行搜索但没有找到您要查找的内容(尽管我知道事实上,这里有很多关于该主题的问题/答案),那么您应该发布您自己的关于聚类的问题。跨度> 当一个网站被访问时,那么,在服务器上,它会打开一个web socket吗?每个连接 1 个网络套接字?以上是关于Websockets 和可扩展性的主要内容,如果未能解决你的问题,请参考以下文章
用于拦截/修改 websockets UA 的 Chrome 扩展 API
WebSockets(Socket.io)与heroku自动断开连接,我应该扩展吗?
如何将 HTML5 WebSockets 用于 Chrome 扩展