Netty内部实现 一 消息处理主框架

本文详细解析了Netty框架中的EventLoop机制,包括EventExecutorGroup如何管理多个消息循环,EventLoop的具体实现以及消息处理流程。同时介绍了handler中挂载回调的实现方式。

1、EventExecutorGroup 内部维护多个消息循环,每一个group由一个EventLoop(EventExecutor)来监听和回调。具体实现类MultithreadEventExecutorGroup:内部使用children维护了多个EventLoop,默认分配策略是依次为每个channel分配EventLoop。一个eventLoop循环多个连接获取消息。这样保证每个连接的消息是单线程的。

2、EventLoop的具体实现是EpollEventLoop或NIOEventLoop,内部逻辑是每个obj对应一个线程,一个blockingqueue,一个事件循环。每一个循环周期,根据ioRatio,分别进行io事件监听和处理对应的回调。其中,processReady 回调各个handler。runAllTasks  依次回调LinkedBlockingQueue里的其他任务,在handler里面可能会扔过来runnable,基于时间的调度也会有runnable

3、processReady 过程

processReady->AbstractEpollUnsafe.epollInReadyRunnable->EpollServerSocketUnsafe.epollInReady->pipeline.fireChannelRead->各个handler

4、handler中挂回调

 ctx.executor().execute(command);

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值