amazon-web-services - 什么 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 的经验并且能够提供帮助,我将不胜感激。
解决方案
Memory optimized instances
最适合您的情况。
您可以Network Load balancer
稍后用于处理 WebSockets 的高流量。
推荐阅读
- ios - Usernotification 框架徽章不增加
- ios - 为什么我只有在归档应用程序时才会收到这些 Swift 编译器错误?
- swift - 应用内购买成功(.purchased),函数被调用但变量不保持其新值
- ocaml - 为什么 if 语句会出现 Ocaml 语法错误?
- reactjs - 如何测试期望 e: React.ChangeEvent 的函数
作为参数? - python - 具有来自其他表的多个外键的 SQLalchemy 表
- solidity - Solidity TypeError:此类型仅在新的实验性 ABI 编码器中支持
- javascript - 如何显示数组javascript中的复选框值
- mysql - 在 MySQL 中启动时重置的临时变量
- ios - iPhone弹出框上的导航栏