码农知识堂 - 1000bd
  •   Python
  •   PHP
  •   JS/TS
  •   JAVA
  •   C/C++
  •   C#
  •   GO
  •   Kotlin
  •   Swift
  • Netty线程模型


    原理图

    二话不说,直接上图
    (Channel少了一个a)
    在这里插入图片描述
    BossGroup维护Selector,只关心Accept事件

    当接受到Accept事件时,获取到对应的SocketChannel,封装成NioSocketChannel并注册到worker线程,并进行维护

    当Worker发现有可以处理的事件,就开始处理。

    复杂图

    刚刚这张图过于简单,netty比较复杂,画一张比较复杂的图。
    在这里插入图片描述

    完整流程图

    在这里插入图片描述

    Netty抽象出两组线程池,BossGroup专门负责连接,WorkerGroup专门负责网络的读写。

    BossGroup和WorkerGroup类型都是NioEventGroup

    NioEventLoop相当于一个事件循环组,这个组中每个循环的事件时NioEventLoop

    NioEventLoop表示一个不断循环的执行任务的线程,每个NioEventLoop都有一个Selector,用于监听绑定在其上的Socket上的网络通信

    NioEventGroup可以包含多个NioEventLoop

    BossGroup执行步骤:
    1.轮询accept事件
    2.处理accept事件,与client建立连接,生成NioSocketChannel,并将其注册到其中一个WorkerGroup上的NioEventLoop的selector
    3.处理任务队列里的任务

    WorkerGroup执行步骤:
    1.轮询read/write事件
    2.在NioSocketChannel中处理Io事件
    3.处理任务队列中的任务

    每一个Worker NioEventLoop处理业务时,会调用管道,管道和channel是双向可以获取的。

  • 相关阅读:
    JAVA毕业设计146—基于Java+Springboot+vue+uniapp的景区旅游购票小程序(源代码+数据库+9000字论文)
    C++对象实例创建实验
    进程的初识
    DDD架构
    CSS学习笔记:Less
    DBeaver 常用快捷键【大全】
    【微服务】如何实现微服务集群的高可靠?
    1052 Linked List Sorting
    封装一个 虚拟列表渲染 组件
    爬虫学习——第一章 初识爬虫
  • 原文地址:https://blog.csdn.net/weixin_45487988/article/details/125462655
  • 最新文章
  • 攻防演习之三天拿下官网站群
    数据安全治理学习——前期安全规划和安全管理体系建设
    企业安全 | 企业内一次钓鱼演练准备过程
    内网渗透测试 | Kerberos协议及其部分攻击手法
    0day的产生 | 不懂代码的"代码审计"
    安装scrcpy-client模块av模块异常,环境问题解决方案
    leetcode hot100【LeetCode 279. 完全平方数】java实现
    OpenWrt下安装Mosquitto
    AnatoMask论文汇总
    【AI日记】24.11.01 LangChain、openai api和github copilot
  • 热门文章
  • 十款代码表白小特效 一个比一个浪漫 赶紧收藏起来吧!!!
    奉劝各位学弟学妹们,该打造你的技术影响力了!
    五年了,我在 CSDN 的两个一百万。
    Java俄罗斯方块,老程序员花了一个周末,连接中学年代!
    面试官都震惊,你这网络基础可以啊!
    你真的会用百度吗?我不信 — 那些不为人知的搜索引擎语法
    心情不好的时候,用 Python 画棵樱花树送给自己吧
    通宵一晚做出来的一款类似CS的第一人称射击游戏Demo!原来做游戏也不是很难,连憨憨学妹都学会了!
    13 万字 C 语言从入门到精通保姆级教程2021 年版
    10行代码集2000张美女图,Python爬虫120例,再上征途
Copyright © 2022 侵权请联系2656653265@qq.com    京ICP备2022015340号-1
正则表达式工具 cron表达式工具 密码生成工具

京公网安备 11010502049817号