gpt4 book ai didi

java - 与数据报套接字相比,使用数据报 channel 有什么优势

转载 作者:行者123 更新时间:2023-12-02 02:45:33 25 4
gpt4 key购买 nike

我正在尝试优化 UDP 服务器以处理更多吞吐量,它基于 Java IO 数据报套接字(而不是 NIO)。当这个UDP服务器收到一个UDP数据包时,它需要处理这个数据包,并将处理后的数据发送到后台资源,然后响应客户端。目前,该服务器将为每个传入数据包分配一个线程来处理。

我读过一些文章,我明白了对于某些情况,例如基于 TCP 的聊天服务器:需要同时管理数千个打开的连接,每个连接只发送一点数据,在 NIO 中实现服务器可能是一个优势。很少有线程可以处理大量连接(每个请求线程),因为在给定时间点只有少数连接向服务器发送请求。因此,我们不需要为每个连接维护一个线程。这是使用 Java TCP NIO 的巨大优势。

而在UDP中,每个数据包(数据报)实际上都是一个独立的消息,每个数据包都可以被视为一个请求,即使我们使用NIO数据报 channel ,我们仍然需要为每个请求创建一个线程。

那么,使用 NIO Datagram channel 有什么优势?

最佳答案

Even we use NIO Datagram channel, we still need to create a thread for each request

为什么?如果您是回声服务器、时间服务器,则不然……这完全取决于您在做什么。

如果您的应用程序要求客户端不断请求(而不是一次性请求:例如时间或 DNS),您可能会考虑为每个客户端设置一个线程,而不是每个请求。

你的假设经不起推敲。

但是,NIO 确实被超卖了,而且大多数应用程序并不需要它。有些服务器在阻塞模式下支持数十万个连接。

关于java - 与数据报套接字相比,使用数据报 channel 有什么优势,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44620893/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com