【发布时间】:2016-11-11 18:35:12
【问题描述】:
我的客户要求我构建一个可以实时聊天、发送图像和视频的实时应用程序。他让我想出自己的技术栈,所以我做了很多研究,发现最容易构建的是使用低于技术栈的技术
1) Node.js 和集群以最大化一个服务器实例的 CPU 核心 - 语言
2) Socket.io - 实时框架
3) Redis - 发布/订阅多个服务器实例
4) Nginx - 反向代理和负载均衡多个服务器
5) Amazon EC2 - 运行服务器
6) Amazon S3 和 CloudFront - 保存图像/视频并交付
如果我对上述堆栈有误,请纠正我。我真正的问题是,上述技术堆栈可以每秒处理 1,000,000 条消息(文本、图像、视频)吗?
任何使用过 node.js 和 socket.io 的人都可以给我一些见解或上述堆栈的替代方案。
问候,
SinusGob
【问题讨论】:
-
如果你想使用 socket.io 进行推送通知,我建议你使用 APN、GCM,所以对于聊天服务器,我建议你使用 XMPP 开源实现,如 WhatsApp 等
-
这是一个有点幼稚的问题。一个每秒可以处理 1,000,000 条消息的系统能否由您命名的部分构建而成。是的。您或我们是否知道需要多少服务器、负载平衡器、带宽、网卡和其他自定义开发等……才能达到这个规模。不。这里几乎没有详细说明要走那么远。
-
如果您可以在 5 毫秒内处理一条消息(这是一个凭空产生的疯狂数字,因为您根本没有提供任何上下文来知道服务器需要做什么),那么您可以这样做200 条消息/秒/核心,这需要 5000 个核心和相当多的网络带宽才能处理 1,000,000 条消息/秒。我建议您开始构建可以开始运行测试的概念验证测试工具。这是真正知道您是否可以做您需要做的事情的唯一方法。测量。
-
@jfriend00 我知道这是一个有点幼稚的问题,但是我的客户问我是否可以将其扩展到每秒 1mill 消息,我不知道该回复什么。这就是我在 SO 上问的原因
-
唯一真正的答案是它可以构建,但您必须进行概念验证研究(费用由您的客户承担)才能准确估计需要多少基础设施以 1,000,000 条消息/秒的速度解决他们的特定问题。而且,您需要教育客户,任何其他提供不同答案的人都是在吹嘘他们的 xxxx,因为这些不是可以用这种信息水平回答的问题,也没有原型的测量/基准测试。必须了解、原型化和测量更多细节。
标签: node.js amazon-ec2 architecture redis socket.io