Netty 通道和多线程

Netty channels and multithreading

我正在尝试编写一个小型 java 客户端,使用 netty 通过 tcp 连接传输日志消息。我是 netty 的新手,所以我想知道一些事情

我会有多个队列消费者读取消息和发送日志;可以使用一个通道,还是每个队列消费者使用一个通道?处理程序是无状态的,所有数据都发送到同一个端点——据我了解,一个通道应该是线程安全的,多个通道可能会提供更好的性能?

提前致谢!

有几个因素需要考虑,例如正在服务的队列数、消息的总预期吞吐量和消息的大小。您可能会考虑 ChannelPool 以获得最佳性能。

参见:

多通道允许使用更多的处理器内核,因此性能更高,直到通道数超过内核数为止。是的,单个通道是线程安全的。

然后,根据您的流量,您甚至可能不会注意到差异。

最后,我结合了这两种方法 - 将 FixedChannelPool 设置为可用处理器的数量(使用 NettyUtils 助手 class 发现),目前看来效果很好!