处理一百万个并发套接字连接的最佳方法

Posted

技术标签:

【中文标题】处理一百万个并发套接字连接的最佳方法【英文标题】:Best way to handle one million concurrent socket connections 【发布时间】:2018-03-21 04:33:32 【问题描述】:

用例:我们必须为移动应用程序开发一个后端服务(NodeJS),它应该在给定的时间内改变移动应用程序的状态。

示例: 观众投票系统,一旦我们将问题更改为从后端投票,它应该会实时反映在移动应用程序中。

我接触过很多技术,

Amazon MQ(带有 MQTT 的 Apache ActiveMQ)- 问题是此服务无法扩展到单个实例(类型:mq.m4.large、2 vCPU、8GB)之外。我不确定它是否可以处理一百万个连接,并且文档或常见问题解答中没有提到限制。

Firebase 云消息传递 (FCM) - FCM 完全免费,到目前为止我没有发现任何限制。 (使用 AWS Lambda 和 DynamoDB)

阿帕奇卡夫卡

我们预计在给定时间段内有 100 万个连接。我需要知道这个用例的最佳解决方案是什么。

【问题讨论】:

这与“时间段”无关。您期望有多少 并发 连接?即同时时间? @EJP 我预计同时有将近一百万个并发连接。 我觉得,Kafka 是最好的选择。请参考这个链接engineering.linkedin.com/kafka/… 【参考方案1】:

我不确定 nodejs 中的那种并发请求,但我认为以下链接可能对您有用。

600k concurrent websocket connections on AWS using Node.js

【讨论】:

我正在使用 aws elastic beanstalk 来处理多个 nodejs 应用程序实例。问题是我想处理移动应用程序和后端之间的数千个连接。对于昂贵的过程,我也在使用 AWS Lambda 函数

以上是关于处理一百万个并发套接字连接的最佳方法的主要内容,如果未能解决你的问题,请参考以下文章

使用 mongodb / mongoose 有条件地将 5-20k 文档的输入批次处理成一个包含多达一百万个文档的集合的有效方法是啥?

Web服务器可以处理多少个套接字连接?

NodeJS + SocketIO 大套接字事件管理

面试难题:用有限的内存对一百万个数字输入进行排序

Nginx之epoll和select poll

树状数组。 数组修改某个元素的数值/求出前n个元素的和,需要在一百毫秒处理上百万个数字