Netty基本知识以及概念

什么是Netty

Netty是一款开源的网络通讯框架,它是异步的、基于事件的,且高性能的框架,它支持多种网络协议,例如HTTP,websocket,TCP/IP、UDP、FTP等等,所有网络通讯问题都能由Netty解决

Netty线程模型

在这里插入图片描述

Netty核心组件

EventLoopGroup

概述:这是一个事件循环组,这个组内可以有一个或多个EventLoop,一个BossGroup和WorkerGroup都是EventLoopGroup的实现,通常BossGroup处理客户端连接,然后把连接后的客户通道交给WorkerGroup进行IO处理

EventLoop

概述:这个是一个事件循环,在这个事件循环里面有一个selector和一个taskQueue,而selector里维护着多个管道

Pipeline

概述: 管道和Pipeline是一对一的关联关系,而pipeline内部的多个Context形成了链表,Context只是对Handler的封装,当有事件发生数据通过通道流入管道,经过一个又一个的处理器

Netty自带的Handler

概述:Netty自带了一些Handler(处理器),这些处理器通常用于正式处理业务前后的编码、解码

HTTP相关Handler
  • HttpRequestDecoder:该处理器是把HTTP请求解码,然后将解码后数据封装到HttpObject(默认DefaultHttpRequest实现)内后传给下一个Handler,这是一个InBound处理器

  • HttpResponseEncoder:该处理器是把HTTP响应编码为浏览器可读的数据的处理器,这是一个OutBound处理器

  • HttpServerCodec:该处理器相当于HttpRequestDecoder+ HttpResponseEncoder,通常用于服务器上

  • HttpResponseDecoder:该处理器是把HTTP响应解码为一个HttpObject(默认DefaultHttpResponse实现)对象后传给下一个Handler,这是一个InBound处理器

  • HttpRequestEncoder:该处理器是把HTTP请求编码为可发送的HTTP请求数据,这是一个OutBound处理器

  • HttpClientCodec:该处理器相当于HttpResponseDecoder+ HttpRequestEncoder,通常用于客户端上

ChannelHandler的调用/注册顺序

概述:在管道中有一个管道处理器链,这个链是有序的,根据注册的顺序来调用管道内的处理器

注册顺序:

注册顺序从链头到链尾为:解码器(入栈)->编码器(出栈)->业务处理器(入/出栈)

注意:如果出栈处理器被注册在处理器链的尾部,那么这个出栈处理器可能达不到预期的效果,所以一般注册在业务处理器的前面

调用顺序:

处理器的调用顺序为:
链头入栈处理器1入栈处理器2入栈处理器n链尾出栈处理器n出栈处理器n-1出栈处理器n-2…出栈处理器1链头

注意:调用顺序为从链头开始向链尾调用中间所有可调用的入栈处理器,然后再在链尾处逆向回来调用中间可用的所有出栈处理器,最到链头结束

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值