首页 > 其他分享 >Netty线程模型

Netty线程模型

时间:2024-06-04 15:14:08浏览次数:19  
标签:Netty Pipeline 模型 线程 处理器 OP 客户端

  在Netty编程模型入门案例中客户端和服务端通信底层如何实现的呢?先看客户端和服务端的类图:

            

            

  两类图大致一样,区别在于ServerBootstrap与EventLoopGroup是组合关系,而Bootstrap与EventLoopGroup之间没有直接的关系。实际在操作过程中也是ServerBootstrap和Bootstrap进行具体操作,详细线程模型如下图:

            

            Group<1------------------*>EventLoop<1------------------1>Selector

  NioEventLoop 表示一个不断循环的执行事件处理的线程,每个 NioEventLoop 都包含一个Selector,用于监听注册在其上的 Socket 网络连接(Channel)。

  服务端:

    Netty 抽象出两组线程池:BossGroup 和 WorkerGroup,也可以叫做BossNioEventLoopGroup 和 WorkerNioEventLoopGroup。每个线程池中都有NioEventLoop 线程。

            

    BossGroup 中的线程专门负责和客户端建立连接,WorkerGroup 中的线程专门负责处理连接上的读写。BossGroup 和 WorkerGroup 的类型都是NioEventLoopGroup。如group方法说明:

            

    bossgroup作为父线程负责与客户端的连接,当有客户端请求时子线程childgroup负责具体的业务逻辑处理。

    每个 BossNioEventLoop 中循环执行以下三个步骤:

      1、select:轮训注册在其上的 ServerSocketChannel 的 accept 事件(OP_ACCEPT 事件)

      2、 processSelectedKeys:处理 accept 事件,与客户端建立连接,生成一个NioSocketChannel,并将其注册到某个 WorkerNioEventLoop 上的 Selector 上

      3、runAllTasks:再去以此循环处理任务队列中的其他任务

     每个 WorkerNioEventLoop 中循环执行以下三个步骤:

      1、select:轮训注册在其上的 NioSocketChannel 的 read/write 事件(OP_READ/OP_WRITE 事件)

      2、processSelectedKeys:在对应的 NioSocketChannel 上处理 read/write 事件

      3、runAllTasks:再去以此循环处理任务队列中的其他任务

     在以上两个processSelectedKeys步骤中,会使用 Pipeline(管道),Pipeline 中引用了Channel,即通过 Pipeline 可以获取到对应的 Channel,Pipeline 中维护了很多的处理器(拦截处理器、过滤处理器、自定义处理器等)。

             

 

标签:Netty,Pipeline,模型,线程,处理器,OP,客户端
From: https://www.cnblogs.com/ilovebath/p/18230391

相关文章

  • 面试官:说说Netty对象池的实现原理?
    Netty作为一个高性能的网络通讯框架,它内置了很多恰夺天工的设计,目的都是为了将网络通讯的性能做到极致,其中「对象池技术」也是实现这一目标的重要技术。1.什么是对象池技术?对象池技术是一种重用对象以减少对象创建和销毁带来的开销的方法。在对象池中,只有第一次访问时会创建对......
  • Lumière:开创性的视频生成模型及其应用
    视频内容创造领域迎来了突破性进展,但视频生成模型由于运动引入的复杂性而面临更多挑战。这些挑战主要源自运动的引入所带来的复杂性。时间连贯性是视频生成中的关键要素,模型必须确保视频中的运动在时间上是连贯和平滑的,避免出现不自然的跳跃或断裂。空间关系的准确性也至关重要......
  • AI绘画最新Stable Diffusion安装包+教程+模型+插件+全套入门资料来了,免费拿!
    大家好,我是设计师阿威这篇文章主要给大家分享一些AI绘画方面的学习资料、AI工具以及模型插件、视频教程等等。如果你是新手入门,就一定不要错过这些资料!获取方式:请查看文章底部1.stablediffusion安装包随着技术的迭代,目前StableDiffusion已经能够生成非常艺术化的......
  • AI大模型探索之路-实战篇15: Agent智能数据分析平台之整合封装Tools和Memory功能代码
    系列篇章......
  • 什么是LLM大模型训练,详解Transformer结构模型
    本文分享自华为云社区《LLM大模型学习必知必会系列(四):LLM训练理论篇以及Transformer结构模型详解》,作者:汀丶。1.模型/训练/推理知识介绍深度学习领域所谓的“模型”,是一个复杂的数学公式构成的计算步骤。为了便于理解,我们以一元一次方程为例子解释:y=ax+b该方程意味......
  • 探索大模型技术及其前沿应用——TextIn文档解析技术
    前言        中国图象图形大会(CCIG2024)于近期在西安召开,此次大会将面向开放创新、交叉融合的发展趋势,为图像图形相关领域的专家学者和产业界同仁,搭建一个展示创新成果、展望未来发展,集高度、深度、广度三位于一体的交流平台。大会期间,合合信息智能创新事业部研发总监......
  • Netty编程模型入门案例
    在Socket编程模型可以看到发送数据和响应数据直接涉及到的是I/O模型,基于TCP/IP的socket编程使用的是流套接字。那什么是I/O模型呢?简单的理解就是用什么样的通道进行数据的发送和接收——这很大程度上决定了程序通信的性能。下面介绍另一种编程模式——Netty框架的入门案......
  • 怎么成为大模型开发工程师?
    利用工作之余的空闲时间,努力学习大模型知识吧。目前,这个行业对专业人才的需求量大,无论是大型企业还是中小型企业,都在迅速推进大模型应用的落地。但是,真正有实践经验并且能够将大模型应用落地的人才十分稀缺。OpenAI前段时间发布了重磅更新,使普通人和AI大模型交互的门槛......
  • Java 开发面试题精选:Netty 一篇全搞定
    前言在面试Java开发工程师时,技术面试官不仅会考察候选人对Netty理论知识的掌握程度,还会考察其实际应用能力和问题解决技能。在本篇文章精选的关于Netty的面试题目中,从基础到实战再到一些问题的处理分析,都有所覆盖,能较为全面评估出候选人对Netty的理解和应用能力。如果你......
  • 使用ollama部署本地大模型
    安装docker与docker-compose安装ollama与anythingllmdocker-compose.ymlversion:"3"services:ollama:image:ollama/ollamacontainer_name:ollamavolumes:-.ollama:/root/.ollamaports:-11434:11434anythingllm:i......