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


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

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

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

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

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

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

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

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

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

    接下分析eventLoop类层次关系

    public interface EventLoop extends OrderedEventExecutor, EventLoopGroup {
        @Override
        EventLoopGroup parent();
    }
    public interface EventLoopGroup extends EventExecutorGroup {
    }
    public interface EventExecutorGroup extends ScheduledExecutorService, Iterable<EventExecutor> {
    }

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

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

    EmbeddedEventLoop 是用来测试的

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

    DefaultEventLoop 是默认配置的SingleThreadEventLoop

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

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

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

  • 相关阅读:
    python daemon install
    添加 sudoer centos
    CentOS 5安装openssh
    java使用sh或是jsvc来做daemon应该是主流
    Maven JAR Plugin
    The Java™ Tutorials offical学习的好资料哦
    linux下lrzsz安装,SecureCRT上传下载文件工具 寒枫欣叶
    ssh on centos5
    CentOS Linux Install Core Development Tools Automake, Gcc (C/C++), Perl, Python & Debuggers
    Setting an Application's Entry Point
  • 原文地址:https://www.cnblogs.com/solq111/p/6903286.html
Copyright © 2020-2023  润新知