当前位置: 首页 > 知识库问答 >
问题:

netty 4:NioEventLoopGroup中的通道-事件循环映射

鲍驰
2023-03-14

我们有一个分布式应用程序,它使用Netty (4)进行底层通信。系统中进程执行多个任务。每个任务包含一组输入和输出通道。在Netty中,通道被永久分配给单个EventLoop。在(Nio)EventLoopGroup中,通道到EventLoop的映射以循环方式进行。我们希望对这种映射有更多的控制,并将同一任务的所有通道分配给相同的EventLoop。这种“Channel-EventLoop affinity”的目的是减少ChannelHandlers中某些特定内存管理内容的锁争用。我们查看了Netty文档,但什么也没找到。在Netty 4中有通用的方法吗?

我确定的另一种可能性是覆盖实现循环通道映射的“MultithreadEventExecutorGroup”中的“EventExecutionr next()”方法(我认为至少如此)。这是一种强制执行不同映射的可能方法吗?或者我用这种方法会产生不希望看到的副作用吗?

我感谢任何帮助!托比

共有1个答案

郤玉书
2023-03-14

目前不可能以“干净”的方式做到这一点。我们想在netty 5中改变它。另请参见 https://github.com/netty/netty/issues/1230

 类似资料:
  • 请说明当netty server和netty client连接成代理时,请求、线程、eventloop、服务器通道和客户端通道之间的关系。在开始之前,我认为对于每个请求,netty服务器都会从获取一个工作线程,以及一个(绑定到工作线程,使用线程池中有限的对象ID)来处理该入站消息,并将其发送到来自netty客户端的出站。此后,可能的服务器<代码>频道受到限制,而客户端<代码>频道受到限制(因为出站

  • 事件是应用程序与自身各个功能模块以及与操作系统进行通讯的手段,也是实现事件驱动编程模型的基础,应用程序如果要响应这些事件,通常是创建一个事件队列来集中存放它们,从事件队列取出事件并调用对应处理器就是一次事件响应,而往复执行这个操作的过程就是事件循环。 驱动接口 LCUI 对事件循环的操作有处理事件、绑定事件和解绑事件,驱动模块的职责就是基于操作系统接口向 LCUI 提供实现了这些操作的接口。首先我

  • 问题内容: nodejs体系结构内部是否存在两个事件循环? libev / libuv v8 javascript事件循环 在I / O请求上,节点是否将请求排队到libeio,而libeio又通过使用libev的事件通知数据的可用性,最后这些事件由v8事件循环使用回调来处理? 基本上,libev和libeio如何集成到nodejs架构中? 是否有任何文档可以清楚地了解nodejs内部体系结构?

  • 主要内容:事件驱动程序,实例,Node 应用程序是如何工作的?Node.js 是单进程单线程应用程序,但是因为 V8 引擎提供的异步执行回调接口,通过这些接口可以处理大量的并发,所以性能非常高。 Node.js 几乎每一个 API 都是支持回调函数的。 Node.js 基本上所有的事件机制都是用设计模式中观察者模式实现。 Node.js 单线程类似进入一个while(true)的事件循环,直到没有事件观察者退出,每个异步事件都生成一个事件观察者,如果有事件发

  • nodejs架构中是否有两个内部事件循环? libev/libuv v8 javascript事件循环 在I/O请求时,node是否将请求排队发送到libeio,然后lib eio使用libev通过事件通知数据的可用性,最后这些事件由v8事件循环使用回调处理? 基本上,libev和libeio在nodejs架构中是如何集成的? 是否有任何留档可以提供nodejs内部架构的清晰图片?

  • 问题内容: Node.js I / O事件循环是单线程还是多线程? 如果我有多个I / O进程,则节点会将它们置于外部事件循环中。它们是按顺序处理(最快),还是处理事件循环以同时处理它们(…以及哪些限制)? 问题答案: 事件循环 Node.js事件循环在单个线程下运行,这意味着您编写的应用程序代码在单个线程上进行评估。Nodejs本身在libuv之下使用了许多线程,但是您在编写nodejs代码时不