我们已知的一个或多个channel
会注册到一个EventLoop
上,这个EventLoop
既要监听Channel
上的事件,又要处理事件到来后业务逻辑(包括出站逻辑),也就是说Netty
在同一个Channel
上的handler
调用是串行的,如下图,如果业务逻辑比较复杂,就会导致一些简单的事件得不到响应(也有可能是其他channel
上的事件)。所以Netty
不建议在handler
处理复杂的业务逻辑,比如像数据库操作等等。那像这样的耗时逻辑在Netty
中该怎么处理呢?
我的想法应该有两种处理方案
使用自定义的线程池,将需要处理的耗时逻辑封装成
task
丢到executor pool
中,但是我们知道,线程多了并不是好事,会影响吞吐。将这些任务丢到丢到那些空闲的
EventLoop
上,这样就能充分利用Netty
的线程资源,但是这样的代码该怎么实现,有没有成熟的框架?
幕布斯7119047
相关分类