Netty的几个重要组件

【Netty 几个组件介绍】 netty 几大组件的介绍 EventLoop、ByteBuf、ChannelHandler、BoostStrap 阅读详情

今天了解一下 Netty都有哪些组件,这些组件都分别承担着什么职能:

  • Bootstrap or ServerBootstrap
  • EventLoop
  • EventLoopGroup
  • ChannelPipeline
  • Channel
  • Fture or ChannelFuture
  • ChannelInitializer
  • ChannelHandler

Bootstrap,一个Netty应用通常由一个Bootstrap开始,它主要作用是配置整个Netty程序,串联起各个组件。

Handler,为了支持各种协议和处理数据的方式,便诞生了Handler组件。Handler主要用来处理各种事件,这里的事件很广泛,比如可以是连接、数据接收、异常、数据转换等。

ChannelInboundHandler,一个最常用的Handler。这个Handler的作用就是处理接收到数据时的事件,也就是说,我们的业务逻辑一般就是写在这个Handler里面的,ChannelInboundHandler就是用来处理我们的核心业务逻辑。

ChannelInitializer,当一个链接建立时,我们需要知道怎么来接收或者发送数据,当然,我们有各种各样的Handler实现来处理它,那么ChannelInitializer便是用来配置这些Handler,它会提供一ChannelPipeline,并把Handler加入到ChannelPipeline。

ChannelPipeline,一个Netty应用基于ChannelPipeline机制,这种机制需要依赖于EventLoop和EventLoopGroup,因为它们三个都和事件或者事件处理相关。
ChannelPipeline负责安排Handler的顺序及其执行

EventLoops的目的是为Channel处理IO操作,一个EventLoop可以为多个Channel服务。

EventLoopGroup会包含多个EventLoop。

Channel代表了一个Socket链接,或者其它和IO操作相关的组件,它和EventLoop一起用来参与IO处理。

Future,在Netty中所有的IO操作都是异步的,因此,你不能立刻得知消息是否被正确处理,但是我们可以过一会等它执行完成或者直接注册一个监听,具体的实现就是通过Future和ChannelFutures,他们可以注册一个监听,当操作执行成功或失败时监听会自动触发。总之,所有的操作都会返回一个ChannelFuture。

我们来看看如何配置一个Netty应用?– BootsStrapping

我们利用BootsStrapping来配置netty 应用,它有两种类型,一种用于Client端:BootsStrap,另一种用于Server端:ServerBootstrap,要想区别如何使用它们,你仅需要记住一个用在Client端,一个用在Server端。下面我们来详细介绍一下这两种类型的区别:

1.第一个最明显的区别是,ServerBootstrap用于Server端,通过调用bind()方法来绑定到一个端口监听连接;Bootstrap用于Client端,需要调用connect()方法来连接服务器端,但我们也可以通过调用bind()方法返回的ChannelFuture中获取Channel去connect服务器端。

2.客户端的Bootstrap一般用一个EventLoopGroup,而服务器端的ServerBootstrap会用到两个(这两个也可以是同一个实例)。为何服务器端要用到两个EventLoopGroup呢?这么设计有明显的好处,如果一个ServerBootstrap有两个EventLoopGroup,那么就可以把第一个EventLoopGroup用来专门负责绑定到端口监听连接事件,而把第二个EventLoopGroup用来处理每个接收到的连接,下面我们用一幅图来展现一下这种模式:

这里写图片描述

PS: 如果仅由一个EventLoopGroup处理所有请求和连接的话,在并发量很大的情况下,这个EventLoopGroup有可能会忙于处理已经接收到的连接而不能及时处理新的连接请求,用两个的话,会有专门的线程来处理连接请求,不会导致请求超时的情况,大大提高了并发处理能力。

Netty核心组件之一 Netty核心组件之一 1 Netty核心组件 1.Channel IO操作的一种连接,实体与实体之间的连接,实体可以是硬件,文件,网络套接字,或者是程序组件Channel 是 Netty 网络操作抽象类,它除了包括基本的 I/O 操作,如 bind、connect、read、write 之外,还包括了 Netty 框架相关的一些功能,如获取该 Channe l的 EventLoop。(这个 Channel 我们可以理解为 Socket 连接,它负责基本的 IO 操作,例如:bind(),connect() 阅读详情

相关推荐

STM32实战:用定时器触发ADC+DMA双缓冲实现电机电流采样(附避坑指南)

本文详细介绍了如何利用STM32的定时器触发ADC注入组采样,结合DMA双缓冲机制实现电机电流的高效采样。通过PWM触发和双缓冲架构,解决了开关噪声干扰、实时性要求和数据一致性等核心挑战,显著降低CPU负载并提升采样精度。附有完整的代码示例和避坑指南,适用于无人机电调、工业伺服驱动器等高精度电机控制场景。

weixin_33737134的博客 520

一. NIO基础--Netty学习之路

Netty学习之路 一. NIO基础. 二. Netty 入门. 三. Netty 进阶. 四.Netty 优化与源码. 笔记an. 一. NIO 基础 non-blocking io 非阻塞 IO 1. 三大组件 1.1 Channel & Buffer channel 有一点类似于 stream,它就是读写数据的双向通道,可以从 channel 将数据读入 buffer,也可以将 buffer 的数据写入 channel,而之前的 stream 要么是输入,要么是输出,channel 比 str

weixin_46633487的博客 692

亿佰特E77模块(STM32WLE5CCU6)LoRa通信实战指南:从配置到应用开发

本文详细介绍了亿佰特E77模块(STM32WLE5CCU6)的LoRa通信实战指南,从硬件配置到应用开发。基于ARM Cortex-M4内核的E77模块集成了LoRa射频前端,具备超低功耗和硬件级抗干扰特性,适用于智能农业、工业现场等场景。文章提供了开发环境搭建、LoRa参数配置、实战通信及性能优化等实用技巧,帮助开发者快速掌握LoRa通信技术。

weixin_29164185的博客 761

Netty主要组件

学习这些组件先不要深入细节, 先有个大概的概念, 每个组件具体做啥, 然后把它们串联起来, 加深对Netty整体架构的理解。在ChannelPipeline中可以放入用户自定义的Handler,用于具体的业务处理, 这里面也包括。, 实现多路复用, 由唯一绑定的一个线程去进行三大步骤循环操作: 监听事件,处理事件,执行任务。一个是服务端通道, 一个是客户端通道,接收客户端连接和处理数据读写都是通过通道进行的。在Netty中有很多重要的组件, 每个组件职业不同, 担负不同的功能。这两种重要的Handler。

码灵的博客 924

永不消逝的电波 -GSM空口信号的接收与解码

一开始接触软件无线电应该是从很早之前对RFID洗衣卡的解密开始的,后来接触人员定位,慢慢的打开了这样一扇大门。。。。 翻到之前做的GSM信号的接收解码,今天就对其过程做一个记录,也不是什么新颖的内容,权当是记录和回忆了。 对于GSM网络的相关内容,不是非常的熟悉,如有不正确的,欢迎批评指正。

Jack.Xu 专栏 1万+

mmsegmentation教程1:自定义数据集、config文件修改、训练教程

mmseg使用教程

weixin_42748439的博客 2万+

Netty五大组件介绍

Netty五大组件介绍

weixin_42189550的博客 2496

Pi0 项目复现及项目问题解决方案(全网抢先发布~)

Pi0 项目复现及项目问题解决方案(全网抢先发布~)

m0_68167062的博客 2261

Netty(1)三大组件

netty的底层是NIO,所以在学习netty前先将NIO进行一些简单的学习

учёба 588

中职网络安全2021年国赛Wireshark流量分析题目解析

中职网络安全Wireshark流量分析题目解析

FRANXX_02的博客 6444

从硬件到软件:深度解析D435i USB SCP overflow错误的根源与解决方案

本文深入解析Intel RealSense D435i相机在ROS环境下常见的'USB SCP overflow'错误,特别是与`control_transfer`相关的错误提示。从硬件配置到软件优化,详细介绍了如何通过调整USB接口、优化`rs_camera.launch`参数、更新固件驱动等方法解决数据传输溢出问题,提升设备稳定性和性能。

yy01234的博客 771

一分钟搞定Netty 三大组件,如果搞不定,再看3遍

1. 三大组件简介 Channel 与 Buffer Java NIO 系统的核心在于:通道 (Channel) 和缓冲区 (Buffer)。通道表示打开到 IO 设备 (例如:文件、套接字) 的连接。若需要使用 NIO 系统,需要获取用于连接 IO 设备的通道 以及用于容纳数据的缓冲区。然后操作缓冲区,对数据进行处理 简而言之,通道负责传输,缓冲区负责存储 常见的 Channel 有以下四种,其中 FileChannel 主要用于文件传输,其余三种用于网络通信 FileChannel DatagramC

博学谷狂野架构师的博客 922

DDR5中的On-Die Termination(ODT)详解:电阻值支持及其背后的秘密

DDR5支持多档ODT电阻值,范围从40Ω到480Ω,均基于240Ω标准参考电阻RZQR_{ZQ}RZQ​。不同电阻档位对应不同的信号负载和功耗需求。校准电压点关键,常用0.8×VDD进行精准调校。CA信号间ODT匹配必须严格控制,保证命令总线稳定。选择合适的ODT值是高速内存设计中不可忽视的细节。

weixin_43199439的博客 2099

Netty 几个重要的核心组件

为了了解Netty的工作原理,对Netty的内部设计有一个总体了解是很有用的。几个核心概念: Bootstrap EventLoopGroup EventLoop SocketChannel ChannelInitializer ChannelPipeline ChannelHandler 这些概念如何相互关联如下所示: Bootstrap Netty中的Bootstrap类负责引导,引导过程包括启动线程,打开套接字等。 EventLoopGroup Netty...

wwwcomcn123的专栏 467

假人有限元模型

假人模型,车辆碰撞假人有限元模型,适合做乘员安全的研究者利用

数学建模模型总结

这是本人在两年内准备参加数学建模竞赛搜集到的模型资料,已经经过了本人的筛选和整理,希望能够对准备参加数学建模竞赛的学弟学妹们提供一些帮助!

关于netty的一些你需要知道的内容(2)

之前已经写过一篇超简单的文章,本篇我们继续来看一下关于Netty必须知道的内容。

yokeyhui的博客 514

jdk-8u144-linux-x64.tar.gz.

该资源为搭建Linux系统Java环境用,资源的后缀为tar.gz格式的压缩包

Netty基本使用(二)-Netty组件

Netty基本使用(二)-Netty组件 1. EventLoop 事件循环对象 EventLoop是事件循环对象,他本质上是一个单线程执行器(同事维护了一个Selector),里面有run方法处理Channel上远远不断的io事件 EventLoop的继承关系 从根上看, 他继承了java的的ScheduledExecutorService.所以他拥有线程池中的所有方法 另外Netty在线程池的基础上,又扩展了EventExecutor,提供了一些额外的方法: boolean inEventLoop

cfy137000的博客 458

win10 跳过U8环境检测的IE WebControls.rar

win10 安装u8的时候 提示IE WebControls 不通过,这个工具可以欺骗u8的检查。 跳过U8环境检测的IE WebControls。提示导入失败后,重新检测通过。

Netty指南(6):Netty核心模块组件简介

一、Netty核心模块组件 1.1 Bootstrap、ServerBootstrap Bootstrap 意思是引导,一个 Netty 应用通常由一个 Bootstrap 开始,主要作用是配置整个 Netty 程序,串联各个组件,Netty 中 Bootstrap 类是客户端程序的启动引导类,ServerBootstrap 是服务端启动引导类。 常见的方法有 public ServerBootstrap group(EventLoopGroup parentGroup, EventLoopGroup

m0_50275872的博客 402

Netty 4.x 用户手册

Netty 4.x 用户手册(简略翻译)

hellwhisper的专栏 2379

Netty介绍

Netty 介绍 本指南对Netty 进行了介绍并指出其意义所在。 1. 问题 现在,我们使用适合一般用途的应用或组件来和彼此通信。例如,我们常常使用一个HTTP客户端从远程服务器获取信息或者通过web services进行远程方法的调用。 然而,一个适合普通目的的协议或其实现并不具备其规模上的扩展性。例如,我们无法使用一个普通的HTTP服务器进行大型文件,电邮信息的交互,或者处理...

weixin_30788731的博客 75

Netty 4.x 官方入门指南 [译]

前言 本篇翻译自netty官方Get Start教程,一方面能把好的文章分享给各位,另一方面能巩固所学的知识。若有错误和遗漏,欢迎各位指出。 https://netty.io/wiki/user-gu... 面临的问题 我们一般使用专用软件或者是开源库和其他系统通信。举个例子,我们通常使用 http 客户端从 web 服务器获取信息,或者...

weixin_34344403的博客 219

Netty之组件和设计(2)

之前已经对netty的有了基本的了解(https://blog.youkuaiyun.com/shehuinibingge/article/details/113365868) 接下来再来了解下netty的组件和设计 1.Channel接口 基本的I/O操作(bind(), connect(),read()和write()等等。Channel接口提供的API大量简化了我们直接使用Socket嘞的复杂度。 2.EventLoop接口 EventLoop定义了netty的核心抽象,用于处理连接生命周期内发生的所有

shehuinibingge的博客 224

Java NIO框架Netty教程(二) – 白话概念

"Hello World"的代码固然简单,不过其中的几个重要概念(类)和 Netty的工作原理还是需要简单明确一下,至少知道其是负责什。方便自己以后更灵活的使用和扩展。 声明,笔者一介码农,不会那么多专业的词汇和缩写,只能以最简单苍白的话来形容个人的感受和体会。如果您觉得这太不专业,笔者首先只能抱歉。然后,笔者曾转过《Netty代码分析》,您可参考。ChannelEvent先说这个ChannelE...

superviser3000的博客 199

Netty里面的几大组件

在学习Netty的过程中, 个人理解如下: 在Netty中有很多重要的组件, 每个组件职业不同, 担负不同的功能, 共同完成’大业’. 组件一 NioEventLoop 在它的底层封装了Selector, 实现多路复用, 由唯一绑定的一个线程去进行三大步骤循环操作: 监听事件,处理事件,执行任务 组件二 NioServerSocketChannel NioSocketChannel 一个是服务端通...

书唐瑞的博客 686

Netty in Action (四)第一章节 第三部分 Netty核心组件

在这个章节中,我们学习了Netty框架的背景,包括java网络编程的API的进化史,阻塞和非阻塞IO操作的不同,高吞吐量高性能的异步I/O的优越性然后,我们大体介绍了Netty的一些特性,设计或者优点,这些都包括Netty的异步模型机制,回调,Future或者这两者的结合,我们也谈到了事件是如何产生并触发的,事件是如何被拦截处理的接下来的章节里,我们将更加深入的介绍,看看Netty这个丰富框架工具如何满足我们日常开发的需要的在下一个章节中,我们将研究一下最基本的Netty的API和编程模型,并且你将自己亲自

BazingaLyncc 3069

【Netty】Netty的使用和常用组件详解

这篇文章主要介绍了Java网络应用框架Netty的基础知识和用法。Netty是基于Java NIO的异步事件驱动网络应用框架,提供了简单易用的API。文章解释了为何Netty选择NIO而不是AIO,主要是由于在Linux系统上,AIO并无显著性能优势。然后,文章还介绍了如何编写第一个Netty程序,包括服务端和客户端的创建和通信实现。最后,文章详细描述了Netty中的重要组件,如EventLoop、Channel和ChannelHandler等,并解释了它们各自的作用。有助于读者快速上手Netty。

小七的博客 6182

Netty-常用组件

并定义了用于在该链上传播入站(也就是从网络到业务处理)和出站(也就是从业务处理到网络)各种事件流的API,我们代码中的ChannelHandler 都是放在ChannelPipeline 中的。ChannelHandlerContext和ChannelHandler之间的关联(绑定)是永远不会改变的,所以缓存对它的引用是安全的。相对于其他类的同名方法,ChannelHandlerContext 的方法将产生更短的事件流,应该尽可能地利用这个特性来获得最大的性能。

姜希成的博客 1550
上一篇: java 爬楼梯算法实现
下一篇: 宋宝华:Docker 最初的2小时(Docker从入门到入门)
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值