tcp如何在一台Java服务器上处理超过一百万个并发客户端?
我正在构建一个NIOJavaTCP服务器,它能够容纳多达一百万个并发客户端。不幸的是,它必须是TCP连接
实现这一目标的一些做法是什么?我从节点中获得灵感。JS处理模型(我想还有经典的NIO方法):即一个事件循环线程和工作线程,用于卸载长时间运行的任务
我读过关于人们实现超过一百万个并发连接的文章。但是,如何使打开的socket数量超过可用的端口数量?操作系统中打开文件的数量限制如何
你可以在下面搜索框中键入要查询的问题!
我正在构建一个NIOJavaTCP服务器,它能够容纳多达一百万个并发客户端。不幸的是,它必须是TCP连接
实现这一目标的一些做法是什么?我从节点中获得灵感。JS处理模型(我想还有经典的NIO方法):即一个事件循环线程和工作线程,用于卸载长时间运行的任务
我读过关于人们实现超过一百万个并发连接的文章。但是,如何使打开的socket数量超过可用的端口数量?操作系统中打开文件的数量限制如何
# 1 楼答案
要回答您实际提出的唯一一个具体问题,接受的套接字的数量与可用端口的数量无关,因为它们都共享同一个本地端口
# 2 楼答案
在一个端口上接受一个线程。线程池。可以计划一个请求(尤其是在高负载时),或者立即将其传递给工作线程
# 3 楼答案
或者像前面的回答中所写的那样手动执行,方法是维护连接列表,调用select()来处理传入的数据,并在线程池/执行器中进行处理
或者在nio2中使用异步套接字,它可以为您实现上述所有功能
另一种选择是使用高级框架,比如Mina或Netty,它添加了可重用的处理程序等等