【问题标题】:Can Netty process a single pipeline with multiple threads?Netty 可以处理具有多个线程的单个管道吗?
【发布时间】:2021-03-18 08:49:42
【问题描述】:

我有一个 Netty 4 应用程序,它使用单个网络连接(或者准确地说,单个 IP 多播组)以高吞吐量接收消息,因此管道中所有通道处理程序的处理基本上是单线程的。

有没有办法将 Netty 配置为并行处理,以便使用超过 1 个核心?我在想多线程的“流水线模式”又名synchronous concurrency。类似的东西是内置的 - 还是我必须自己实现,脱离 Netty 管道?

【问题讨论】:

    标签: concurrency netty pipelining


    【解决方案1】:

    您可以将具有不同EventLoopGroups 的不同处理程序添加到管道中。这样您就可以卸载到不同的线程。也就是说,您可能需要在订购方面小心(取决于协议)

    【讨论】:

    • 谢谢诺曼。不确定您对订购的注意事项。您是说消息在管道末端以不同的顺序出现吗?在这种情况下,我想我只是为每个处理程序new NioEventLoopGroup(1)。由于我只有一个“连接”,它不应该在性能方面伤害我,但它会确保项目不会超过另一个,对吧? (但我不知道NioEventLoopGroup 是否是针对特定频道EventLoopGroups 的正确实现...)
    • 也许SingleThreadEventLoop 的一些后代会更好 - 是否有我可以参考的特定于处理程序的事件循环组的示例?
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2023-03-27
    • 1970-01-01
    • 2017-09-17
    • 1970-01-01
    • 2019-04-25
    • 2021-11-18
    相关资源
    最近更新 更多