zoukankan      html  css  js  c++  java
  • netty 学习总结

    一、java nio selector 选择器理解  https://www.cnblogs.com/snailclimb/p/9086334.html

    二、netty reactor 模式理解  https://www.cnblogs.com/crazymakercircle/p/9833847.html

    三、netty 源码整体理解  https://www.cnblogs.com/crazymakercircle/p/9853586.html

    四、大概总结

    java nio selector 为多路选择器,按照事件触发 分四个事件读就绪 写就绪 接受就绪 连接就绪

    chinnal 和selector的关系为 多个channel 会注册到selector 上,注册时会指定一种或多种事件,当指定的事件被选择触发时就会在不断循环的  selector.select()  中找到channel 然后执行业务代码

    而Reactor 就是把服务端的代码进行一层封装,当有连接时就重新注册一次,读就绪,并设置回调为当前的handler,如果有读的数据就会回调handler的run 方法

    明天需要梳理有连接和有数据 是否需要创建新的handler?

    五、新的进展理解

    假设处理一个TcpConnection连接分为如下步骤,receive - process - send。如果正常处理,要求当前线程必须处理完这么一整个过程才能处理下个连接。而Reactor可以将其拆分成独立的。即处理receive的时候和process和send可以不挂钩。当前线程可以处理完receive,然后将process注册到事件中,然后处理下个连接。
     
    六、netty 中各个名词和经典Reactor 模式对应
    Eventloop 对应java nio 中的Reactor 反应器,负责完成channel 的注册、轮询、分发,其内部绑定了java本地的selector 和Thread,轮询的工作就是这个线程干的
    Handler 对应Handler ,只不过netty 设计的更加巧妙,使用到了pipeline
    Channel 对应 client,也就是netty 中的chinnal 分装了一个java nio 非阻塞类型的channel
     
     
    七、Reacrot 代码调试后理解
    1.handler 是在每次连接就绪后才会生成,生成handler 的同时将handler 作为callback 对象,当有读就绪事件时回调run方法
    2.当设置读就绪时方法会阻塞在  selector.select(); 当设置为写就绪时直接进入业务写,写完成之后再设置为读就绪。
    3.accepter 相当一种特殊的handler ,当连接就绪时回调其内部run 方法,hander 负责业务读写,各司其职
     
  • 相关阅读:
    Spring+MyBatis纯注解零XML整合(4)
    spring boot-mybatis全注解化(3)
    SpringBoot使用Mybatis注解进行一对多和多对多查询(2)
    Spring Boot中使用MyBatis注解配置详解(1)
    mysql 俩个时间相减后取分钟
    mysql加减时间-函数-时间加减
    十种常见排序算法(转)
    开源VS商用,IBM区块链从Hyperledger到商用平台之道 | 对话IBM高级架构师【 笔记】(转)
    java中正则表达式基本用法(转)
    《数学之美》——维特比和他维特比算法
  • 原文地址:https://www.cnblogs.com/lufei33180/p/14457785.html
Copyright © 2011-2022 走看看