【问题标题】:Netty channels and multithreadingNetty 通道和多线程
【发布时间】:2018-01-15 08:26:42
【问题描述】:

我正在尝试使用 netty 编写一个小型 java 客户端,用于通过 tcp 连接传输日志消息。我对netty还很陌生,所以我想知道一些事情

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

提前致谢!

【问题讨论】:

    标签: java netty


    【解决方案1】:

    最后,我结合了这两种方法 - 将 FixedChannelPool 设置为可用处理器的数量(使用 NettyUtils 帮助程序类发现),目前看来运行良好!

    【讨论】:

      【解决方案2】:

      见:https://stackoverflow.com/a/28019260/3755871

      多通道允许使用更多处理器内核,从而提高性能,直到通道数超过内核数。是的,单通道是线程安全的。

      再一次,根据您的流量,您甚至可能不会注意到差异。

      【讨论】:

        【解决方案3】:

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

        【讨论】:

        • 啊,从来不知道频道池 - 我想最好的办法是尝试“共享”频道,如果队列备份,我可以尝试池
        猜你喜欢
        • 1970-01-01
        • 2016-08-10
        • 1970-01-01
        • 2016-12-28
        • 1970-01-01
        • 2017-11-19
        • 1970-01-01
        • 2021-09-15
        • 2013-09-03
        相关资源
        最近更新 更多