netty的继续学习一(相关概念)

前言

    以前写过一个关于netty基本的一个demo,但是由于本人懒惰,一直不进行更新,最近可能是心情有点浮躁,写点东西来进行缓解一下浮躁的心情,就接着开始写关于netty的一些东西,希望我能坚持下来

netty的核心组件

从上一篇的demo中可以看出来,netty框架中主要有以下几个组件:

  • Bootstrap & ServerBootstrap
  • Channel
  • ChannelFuture
  • EventLoop & EventLoopGroup
  • ChannelHandler
  • ChannelPipeline

 下面我们就开始针对一个一个的组件进行分析,看看他都是干什么用的,都有什么功能

Bootstrap & ServerBootstrap

我们先来进行分析Bootstrap(客户端)和ServerBootstrap(服务端) 这两个组件,通过源码我们可以发现这两个组件都是继承于AbstractBootstrap这个抽象类,从而我们就可以证明这两个类中会有很多相同的方法,他们之间的相同点要大于他们之间不同点。那这两个组件到底是干什么的,我偏向于认为这两个组件就是netty的一个启动类,类似于springboot项目中的main方法,BootStrap用于客户端的启动,里面的connect方法的用来进行连接服务端的操作,ServerBootStrap用于服务端的启动,里面的bind方法用来进行绑定端口号。

channel

这个音译过来是代表着一个通道的意思,在netty中是是代表着网络的抽象类,主要进行网络的一些相关的操作功能

EventLoop & EventLoopGroup

Netty是基于事件驱动模型的,使用的不同的事件来通知我们进行不同的操作。Channel为netty网络操作抽象类,EventLoop负责处理注册其上的channel处理I/O操作。

这个EventLoopGroup更像是一个线程池的东西,里面进行一些操作,来进行处理一些runnable相关的接口信息

ChannelFuture

netty作为一个异步非阻塞的框架,所有I/O操作均为异步进行执行,因此我们不能得知一些操作是否执行完毕,因此它提供了ChannelFuture接口 里面有addListener方法,里面进行监听操作执行之后的结果信息。这样我们就可以进行监听结果的成功或者失败,从而进行一些自己的操作。

ChannelHandler

channelHandler,从字面意思看这个是属于一个处理,实际上它确实是一个处理器,是我们使用netty的时候最常用的组件,用来进行处理netty的各种事件通知,比如说:连接,接受数据,异常,断开连接等。

ChannelHandler有两个比较核心的子类:ChannelOutboundHandler和ChannelInboundHandler。

ChannelInboundHandler:用于处理入站事件,即网络到应用程序流动的事件,当netty接收到一些新的数据,状态更改或者用户触发一些事件的时,会进行调用里面的一些方法。

ChannelOutboundHandler:用于处理出站事件,即应用程序向网络流出的事件,当netty准备发送数据或者其他出站操作的时候,会进行调用里面的一些方法。

ChannelPipeline

ChannelPipeline为ChannelHandler的链,是一个处理网络的通道,它的主要职责:

拦截和处理I/O事件:它会按照ChannelPipeline中的ChannelHandler的顺序依次传递和处理这些事件。

管理和组织channelHandler:ChannelPipeline是一个ChannelHandler的容器,负责添加,删除和管理这些容器。

提供上下文的信息:每个ChannelHandler都有一个与之对应的ChannelHandlerContext,这个上下文中提供了很多有用的信息。

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

小园子的小菜

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值