Channel
附加到单EventLoop
Channel.Unsafe#register
EventExecutorGroup#next
。注册通过ChannelHandlerContext
中的模运算进行分配。 Channel
绑定到单个线程 - 通常与{{1}}相同的线程。
频道可能会不均匀地取消注册,或者工作负载在这些频道之间分布不均匀。有可能让一个线程处理整个工作负载。
是否有防止这种情况的模式或这是一个不可避免的结构性问题?
答案 0 :(得分:0)
如果使用参数1构造NioEventLoopGroup,则可以强制仅使用一个Thread。除此之外,我认为我们只能通过计算EventLoop上有多少个频道并根据此选择下一个频道来改进它。但即使这可能也不是一个好方法,因为一些频道可能比其他频道做更重的工作。