0

我编写了一个服务器,它使用每个连接套接字的 1 个线程同时处理请求。但是在未来它可能会增长很多,所以我决定现在已经改变它以获得更具可扩展性的东西,只要线程非常昂贵。我已经阅读了大约 3 个选项 - 原始 NIO、像 Netty 这样的 NIO 框架或来自 java SE7 的异步 IO。但是我从来没有使用过其中任何一个,所以我很困惑哪一个用于我的任务以及如何使用。任务很简单:

有一个接受连接的服务器。当它接受一个时,它应该为传入的请求分配一个监听器(现在线程以这种方式为我工作)。IE。当有连接时,不会分配新线程。但是当一个格式化的请求到来时,JVM 会以某种方式调用所需的侦听器(与它的通道或套接字相关联..)并处理该请求。然后线程返回到池中或某处,并且侦听器也在等待传入的请求。可能有 10k+ 听众。此外,服务器本身可能随时异步向客户端发送消息(因此它需要从池中找到连接并发送消息)。或者将消息多播到 1k+ 个客户端。服务器接受自定义协议,因此具有一些连接中断功能或消息大小功能也是一个好处。

我一直在尝试检查上述选项,但只要我从未使用过其中任何一个,我就不太清楚哪一个最适合我的需求。我检查了 Netty,它看起来很重量级。使用 NIO 或 NIO2 可以轻松完成我的任务吗?或者我应该使用像 MINA 或 Netty 这样的东西吗?如果很容易避免编程错误,我想坚持使用 Java 的原始 API,比如 NIO。但如果它容易出错,也许与 Netty 一起工作会更好?

4

1 回答 1

1

不要直接用 NIO 编程;它比最初出现的要微妙得多。

我也不喜欢 AIO;它的线程模型非常混乱。

我的建议是你和 Netty 一起去。

于 2013-09-04T16:03:53.780 回答