繁体   English   中英

管理Java服务器应用程序中的多个套接字连接

[英]Managing multiple socket connections in a java server application

在我们的新项目中,我们需要实现服务器应用程序。 此服务器获取50,000(+)个客户端的连接请求。 问题是这些连接必须保持开放并且必须在某处进行管理。 该应用程序应该像电话交换机一样工作。 因此,它可以获得连接客户端的请求,并且只有在它们也连接时才将它们连接到其他(可能是几个)客户端。 使用专有协议。 我的问题是:

如何(以及在​​何处)管理开放套接字? 我应该把它们放在HashMap中吗? 这听起来很好奇。 但我没有这么多开放联系的经验。

是否有可用的框架支持此连接要求?

谢谢您的帮助!

如何(以及在​​何处)管理开放套接字? 我应该把它们放在HashMap中吗?

通常,每个套接字都由一个负责读取和写入套接字的线程管理。 您还将拥有一个主线程,负责在预定义的网络接口和端口(使用ServerSocket API类)接收所有连接请求,然后可以将实际处理工作移交给工作者/从属线程。 在这种情况下,您应该查看工作线程的线程池,因为创建50k线程很可能会压倒您的操作系统和硬件。

此外,如果您确实在管理50k并发套接字,那么强烈建议在Java的普通IO API上使用NIO API(java.nio。*),尽管我没有看到太多需要超过2-5k并发连接的项目。 Java世界中至少有两个基于NIO的已知框架--Amaam MINAJBoss Netty 但是,在开始使用NIO API或NIO框架之前,我建议您阅读编写良好的NIO教程

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM