[编织消息框架][netty源码分析]2 EventLoop

释放双眼,带上耳机,听听看~!

eventLoop从命名上看是专门处理事件

事件系统主要由线程池同队列技术组成,有以下几个优点

1.任务出队有序执行,不会出现错乱,当然前提执行线程池只有一个

2.解偶系统复杂度,这是个经典的生产者/消费者模型,生产者只需要生成执行上下文需要的数据,消费者集中实现处理逻辑,无需要关注太多关系层次问题

3.可根据业务按单一类型事件独立分配一套event system ,提高并行处理而又解决一些并行产生的并发问题

 

那作为一个消息框架,处理的事件有那些呢?

主要分为系统事件同用户事件

如消息编解码、socket io 处理、socket 链路建立等为系统事件

应用层同业务逻辑为用户事件

 

接下分析eventLoop类层次关系


1
2
3
4
5
1public interface EventLoop extends OrderedEventExecutor, EventLoopGroup {
2    @Override
3    EventLoopGroup parent();
4}
5

1
2
3
1public interface EventLoopGroup extends EventExecutorGroup {
2}
3

1
2
3
4
1public interface EventExecutorGroup extends ScheduledExecutorService, Iterable<EventExecutor> {
2}  
3
4

从依赖关系上可以看出 EventLoop 继承于 EventLoopGroup,Group就是多个EventLoop 这样设计目的是为了重用扩展,但因为太灵活了容易造成混乱

有时分不清楚单个还是多个呢?解决方式也很简单,就是通过实现类来区分

[编织消息框架][netty源码分析]2 EventLoop

EmbeddedEventLoop 是用来测试的

SingleThreadEventLoop 是单线程实现,这其实就是EventLoop的实现类

DefaultEventLoop 是默认配置的SingleThreadEventLoop

NioEventLoop 是针对于nio socket 优化设计的

 

EventLoopGroup命名也是大同小异,从名称上看设计思路跟NioEventLoop 是一致的

[编织消息框架][netty源码分析]2 EventLoop

 

EventExecutorGroup继承于ScheduledExecutorService,直接依赖或扩展jdk的并发库,好处就不用多讲了以后自己造轮子可以借鉴优秀设计的做法

 

给TA打赏
共{{data.count}}人
人已打赏
安全技术

用node.js做cluster,监听异常的邮件提醒服务

2021-12-21 16:36:11

安全技术

从零搭建自己的SpringBoot后台框架(二十三)

2022-1-12 12:36:11

个人中心
购物车
优惠劵
今日签到
有新私信 私信列表
搜索