【发布时间】:2012-10-11 02:06:25
【问题描述】:
对于我正在开发的服务器,我一直在努力在 java NIO 或旧的 java i/o 阻塞套接字之间进行选择。
我在想 java NIO 会更好,因为它会有非常多的客户端,并且客户端会保持连接,这样服务器就可以在可用时推送数据。
所以这让我觉得 java 阻塞 i/o 将是矫枉过正,因为线程的数量会很高。
对于这个案例,你有什么看法?
【问题讨论】:
-
你试过netty吗?
-
我会使用一个 existing 框架——不要直接使用 NIO,它是一个 PITA,很难“正确”——至少使用一个包装器,比如XNIO,尽管可能甚至更高级别的抽象都是一个开始(例如,消息框架或 Tomasz 提到的事件驱动服务器)。对我来说,NIO 的一大优势与其说是“减少线程”,不如说是“减少并发”——也就是说,通过在线程之间建立一个单一的交叉点,它需要我更少地考虑并发问题。
-
连接数多是什么意思?每台服务器 100、1000、10000 或 100,000。您的解决方案将取决于您的确切要求。如果没有更多细节,我会假设更简单的解决方案是最好的。