zoukankan      html  css  js  c++  java
  • netty模型简介

    Netty工作原理图

      

    1. netty抽象出了两组线程池,BossGroup专门负责客户端 的连接,WorkerGroup专门负责网络读写。
    2. BossGroup和WorkerGroup 类型都是NioEventLoopGroup
    3. NioEventLoopGroup相当于一个事件循环组,这个组中含有多个事件循环,每一个事件循环是一个NioEventLoop
    4. NioEventLoop表示一个不断循环的执行处理任务的线程,每个NioEventLoop都有一个selector,用于监听绑定在其上socket网络通信
    5. NioEventLoopGroup可以有多个线程,即可以含有多个NioEventLoop
    6. 每个Boss对应的NioEvenetLoop都会执行以下三步:
      1. 轮询accept事件,
      2. 处理accept事件,与client建立socket连接,生成NioSocketChannel,并将生成的NioSocketChannel注册到某个worker NioEventLoop上的selector上。
      3. 处理任务队列中的任务,即runAllTasks
    7. 每个worker NioEventLoop循环执行步骤:
      1. 轮询read/write事件
      2. 处理io事件,即read ,write事件,在对应的NioSocketChannel处理
      3. 处理任务队列中的其它任务
    8. 每个worker NioEventLoop会使用PipeLine管道处理,PipeLine中包含了Channel,即通过PipeLine可以获取对应的Channel, 管道中维护了很多的处理器Handler

    -----------------------------------------

    NioEventLoop表示一个不断循环处理任务的线程,而且每个NioEventLoop都有一个selector,用于监听绑定在其上的socket网络通道 

    NioEventLoop内部采用串型化设计,从消息的读取----> 解码----> 处理--------> 编码------>发送, 始终于IO线程的NioEventLoop负责

    1. NioEventLoopGroup下包含多个NioEventLoop
    2. 每个NioEventLoop包含一个Selector, 一个taskQueue
    3. 每个NioEventLoop的selector上可以注册监听多个NioChannel
    4. 每个NioChannel只会绑定在唯一的NioEventLoop上
    5. 每个NioChannel都会绑定一个自己的ChannelPipeLline

    异步模型

    Future-Listener机制

    Future说明:

    1. 表示异步执行结果,可以通过它提供的方法来检测执行是否完成,比如检测计算等
    2. ChannelFuture接口:我们可添加监听器,当监听的事件发生时,就会通知到监听器
  • 相关阅读:
    【做题】提高组过关测试题1
    【做题】arc078_f-Mole and Abandoned Mine——状压dp
    【学习】Hall’s Marriage Theorem
    【做题】arc072_f-Dam——维护下凸包
    一文尽览近似最近邻搜索中的哈希与量化方法
    InsightFace源码以及pre-train模型以及使用
    无法解析的外部符号 jpeg_std_error
    威布尔weibull distribution
    中科院- 生物特征识别概述
    Face-Resources
  • 原文地址:https://www.cnblogs.com/z-qinfeng/p/11968279.html
Copyright © 2011-2022 走看看