sockets - 套接字连接可以多路复用吗?

标签 sockets multiplexing

是否可以复用 sa 套接字连接?
我需要建立到 yahoo messenger 的多个连接,并且我正在寻找一种方法来有效地做到这一点,而不必为每个客户端连接打开一个套接字。
到目前为止,我必须为每个客户端使用一个套接字,但这并不能很好地扩展到超过 50,000 个连接。
哦,我的解决方案是针对电信公司的,所以我需要至少达到 250,000 到 500,000 个连接
我计划将多个 IP 地址绑定(bind)到单个 NIC,以克服每个 IP 地址的 65k 端口限制。
请我有任何帮助,我能得到的见解。
**我在这个网站上的大多数其他问题都没有得到解答:) **
谢谢

最佳答案

这是一个关于在严重情况下扩展的有趣问题。

您实质上是在问,“我如何建立到 Internet 服务的 N 个连接,其中 N >= 250,000”。

有效且高效地做到这一点的唯一方法是集群。您不能在单个主机上执行此操作,因此您需要能够将您的客户端群分割和划分为多个不同的服务器,以便每个服务器只处理一个子集。

这个想法是让单个服务器保持打开尽可能少的连接(均匀地分散连接),同时保持足够的连接,通过将服务器间通信保持在最低水平来使您托管的任何服务都可行。这意味着任何两个相关的连接(例如两个经常互相交谈的帐户)都必须位于同一主机上。

您将需要可以处理此问题的服务器和网络基础设施。您将需要一个 IP 地址子网,每台服务器都必须与 Internet 进行无状态通信(即,您的路由器不会进行任何 NAT 以便不必跟踪 250,000 多个连接)。

您将不得不与 AOL 交谈。如果不考虑切断您的连接,AOL 将无法处理这种级别的连接。这种规模的任何服务都必须与 AOL 协商,以便您和他们都能够处理连接。

您应该研究一些 i/o 多路复用技术。想到了 Kqueue 和 epoll。

为了编写这个大规模并发和电信级的解决方案,我建议研究 erlang。 Erlang 专为诸如此类的情况而设计(多服务器、大规模多客户端、大规模多线程电信级软件)。它目前用于运行爱立信电话交换机。

关于sockets - 套接字连接可以多路复用吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/665625/

相关文章:

c# - 现有连接被远程主机强制关闭

sockets - 哪些书)学习套接字编程和TCP网络通信?

node.js - 在Socket.io演示中集成QT客户端

java - websocket 中的多路复用 channel

google-chrome - 谷歌浏览器不与 http2 进行多路复用

c - TCP 连接 : Recreating a socket that has been closed

python - 如何通过python中的套接字将字符串发送到java服务器?

c - 什么是文件描述符的 "exception"?

c++ - 通过套接字多路复用数据

video - 如何将多节目传输流 (MPTS) 文件重新复用为单个 TS?