首页 > 解决方案 > 什么 AWS EC2 实例最适合设置需要处理许多连接和许多小消息的 socket.io websocket?

问题描述

情况

我已经完成了一个使用一些 websocket 来启用通信的应用程序。到目前为止,我已经使用了几个免费的 heroku 实例,但现在我需要扩展我的项目。特别是其中一个 websocket 需要处理大量非常小的消息(大约 50 个字符或字节),基本上我说的 30000 个连接中的每一个每 3 秒广播一次其状态(即 50 个字母的消息),并且这些需求中的每一个要在没有过度延迟(比如 1.5 秒)的情况下向所有其他打开的连接广播,我担心的是 30000 * 30000 * 50(每 3 秒大约 40 GB)是一个相当大的数字,我缺乏关于 websockets 规模或对于 EC2,此负载是高还是低。

我的想法和问题

首先,您能想到最适合实现这一目标或至少接近它的 EC2 实例吗?

我可以想办法对我的消息进行优先级排序,以便每个状态只广播说最关心它的 5000 个(即 1/6*30000)个连接,从而减少音量;但这将涉及使用计算能力为每个传出的 msg 生成此优先级,从而可能会蚕食套接字所需的资源(我在这里推测)。这是一个明智的做法吗?我应该这样做吗?

另一种方法是简单地使用多个 websocket 来完成相同的工作,但不确定我需要多少个或具有哪些特性。或者如果这种方法实际上变得更便宜。

如果您有使用 websockets 的经验并且能够提供帮助,我将不胜感激。

标签: amazon-web-servicesamazon-ec2websocketsocket.io

解决方案


Memory optimized instances最适合您的情况。

您可以Network Load balancer稍后用于处理 WebSockets 的高流量。


推荐阅读