繁体   English   中英

服务器和客户端中都包含Java NIO?

[英]Java NIO in both server and client?

我是Java NIO的新手,我对此表示怀疑。 如果我使用NIO而不是套接字客户端,那么服务器是否也应该使用NIO还是没关系?

我担心应用程序的可伸缩性。 我正在查看每台服务器每秒大约500-1000个客户端请求。 由于我会将数据发送到至少三个不同的服务器,因此理想情况下,我每秒查看大约1500个客户端请求。 为此,我已经有一个套接字池实现,可以完成相当不错的工作。

我所拥有的是每个服务器的套接字连接池。每个线程从该池中获取一个可用的套接字连接并将其发送到服务器

我试图找出NIO是否可以提供帮助,或者比套接字客户端更好。 封锁如何? 普通客户端将阻止或超时。

没关系 TCP流将不受您选择的NIO的影响。

恕我直言,使用NIO不会使您的客户端获得更多性能。 瓶颈将是服务器或网络。 另外,NIO更为复杂,您可能会遇到一些会影响性能的错误信息。

我将从做一个套接字实现开始,以使其更快地运行。 如果您遵循一些常见的模式/原则,例如“单一职责原则”,那么以后很容易切换实现(如果您或您的用户已证明您的应用程序性能是瓶颈,我认为这是非常不可能的)。

更新

NIO或任何其他异步框架执行的操作是为了让多个操作共享同一线程。 在处理大量连接时,每个连接只有一个线程会浪费资源,因为所有线程不会一直处于活动状态。

如果您只有几个连接,那么将NIO用于客户端将不会给您带来任何好处。 每个连接有一个线程+套接字不会消耗那么多资源,并且处理连接会更容易。

暂无
暂无

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

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