首页 文章

与Datagram Socket相比,使用数据报通道有什么好处

提问于
浏览
0

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

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

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

那么,使用NIO数据报通道的优势是什么?

1 回答

  • 1

    即使我们使用NIO数据报通道,我们仍然需要为每个请求创建一个线程

    为什么?如果你是一个回声服务器,一个时间服务器,那就不是......这一切都取决于你正在做什么 .

    如果您的应用程序是clietns继续请求(而不是一次性请求:例如时间或DNS),您可以考虑每个客户端而不是每个请求的线程 .

    您的假设无法经得起审查 .

    然而,NIO确实超卖并且大多数应用程序不需要它 . 有些服务器在阻塞模式下支持成千上万的连接 .

相关问题