扩展Netty UDP服务器

扩展Netty UDP服务器,netty,Netty,我们使用Netty实现了一个UDP服务器。该服务器每秒需要处理大量的UDP请求,比如说数百万个。我们想知道Netty UDP服务器支持这种工作负载的最佳策略是什么:增加UDP服务器的缓冲区大小、设置UDP服务器的“集群”或其他什么 (如果集群是解决方案,那么建议集群的负载平衡器是什么?因为没有太多细节,很难给出很多建议。也就是说,一般来说,我会创建多个EpollDatagramChannel实例,并使用EpollChannelOptions将它们绑定到相同的InetSocketAddress。因

我们使用Netty实现了一个UDP服务器。该服务器每秒需要处理大量的UDP请求,比如说数百万个。我们想知道Netty UDP服务器支持这种工作负载的最佳策略是什么:增加UDP服务器的缓冲区大小、设置UDP服务器的“集群”或其他什么


(如果集群是解决方案,那么建议集群的负载平衡器是什么?

因为没有太多细节,很难给出很多建议。也就是说,一般来说,我会创建多个
EpollDatagramChannel
实例,并使用
EpollChannelOptions将它们绑定到相同的
InetSocketAddress
。因此_REUSEPORT
。这将允许内核在文件描述和线程之间对数据包进行负载平衡

大概是这样的:

EventLoopGroup group = new EpollEventLoopGroup(numThreads);
Bootstrap bs = new Bootstrap();
bs.channel(EpollDatagramChannel.class)
  .channelOption(EpollChannelOption.SO_REUSEPORT)
  .handler(yourHandler)....

bs.localAddress(yourLocalAddressAndPort);

List<Channel> channels = new ArrayList<>();
for (int num = 0; num < numThreads; num++) {
    channels.add(bs.bind().sync().channel());
}

...
...
EventLoopGroup group=new-EpollEventLoopGroup(numThreads);
引导bs=新引导();
bs.channel(EpollDatagramChannel.class)
.channelOption(EpollChannelOption.SO_REUSEPORT)
.handler(你的handler)。。。。
b.本地地址(您的本地地址和端口);
列表通道=新的ArrayList();
for(int num=0;num
您的回答能否解决我的一台服务器每秒数百万次请求的问题?顺便说一下,以百万计,它意味着数千万或数亿。所以你认为这是一个编程问题?