【发布时间】:2016-08-07 04:54:55
【问题描述】:
我从服务器端看到,与每个连接阻塞 IO 一个线程相比,NIO 的好处是能够以更少的线程管理多个网络连接。
但是,如果我有一个 IO 客户端同时连接到数千台服务器,我是否可以使用类似的方法来使用更少的线程来管理这些连接 IO。我在Netty 4 multiple client 中尝试了这种方法,发现它为它创建的每个频道生成了一个“阅读器”线程。
所以,我的问题是:
1) 在客户端使用 netty/NIO 有什么好处? 2) 是否可以在客户端用更少的线程管理多个连接?
谢谢!
我已经在github上传了代码示例:https://github.com/hippoz/ogop-lseb
示例服务器/客户端类是 moc.ogop.ahsp.demo.nio.MultipleConnectionNioMain 和 moc.ogop.ahsp.demo.nio.NettyNioServerMain
【问题讨论】:
-
无,除非您计划拥有大量出站连接,这并不常见。
-
是的,实际上,我们在每个客户端/服务器之间使用持久连接。因此每个客户端可能同时连接到大约 1000 台服务器。
-
那么在这种情况下(不遵循“持久连接”),您可以节省线程,但代价是更复杂的编码。我会先让它与
java.net一起工作,然后看看你是否有可伸缩性问题。 -
即使我有同样的问题,但还没有得到答案?如果你得到答案,请分享
标签: multithreading netty nio