Netty实战-读书笔记-Netty组件和设计

  《Netty实战》(《Netty In Action》)是一本好书,是我正在读的一般关于netty入门的书,我喜欢把知识点提出来记录,回头方便查看

1.什么是Netty?

Netty是一款基于Java NIO的异步和事件驱动实现的高性能网络框架

2.Netty有哪些重要的组件

Channel,EventLoop,ChannelFuture,ChannelHandler,ChannelPipeline

3.Netty网络抽象的代表

Channel-----Socket

EventLoop-----控制流,多线程处理,并发

ChannelFuture-----异步通知

4.Channel下常用的子类

EmbeddedChannel

LocalServerChannel

NioDatagramChannel

NioSctpChannel

NioSocketChannel

5.EventLoop接口

5.1 EventLoop定义了netty的核心抽象,用于处理连接的生命周期中所发生的事情,它处理有关Channel的所有IO操作,而且它是绑定线程的。总体来看,它类似于Java NIO中Selector

5.2 一个EventLoopGroup包含一个或者多个EventLoop

5.3 一个EventLoop在它的生命周期内只和一个Thread绑定

5.4 所有由EventLoop处理的IO时间都将在它专有的Thread上处理

5.5 一个Channel在它的生命周期内只注册于一个EventLoop

5.6 一个EventLoop可能会被分配给一个或多个Channel

6.ChannelFutrue接口

Netty的所有IO操作都是异步的,所以绑定结果到ChannelFutrue上,同时可以往它身上addListener(),绑定ChannelFutrueListener的实例,来实现结果回调

7.ChannelHandler和ChannelPipeline

7.1 Netty的主要组件是ChannelHandler,它充当了所有处理入站和出站数据的应用程序逻辑的容器

7.2 ChannelHandler可专门用于几乎任何类型的动作,例如将数据从一种格式转换为另外一种格式,或者处理转换过程所跑出来的异常

7.3 ChannelPipeline提供了ChannelHandler链的容器,并定义了用于在该链上传播入站和出站事件流的API。当Channel被创建时,它会被自动地分配到它专属的ChannelPipeline

7.4 ChannelHandler安装到ChannelPipeline的过程如下所示

7.4.1 一个ChannelInitializer的实现注册到可引导

7.4.2 当ChannelInitializer.initChannel()方法被调用时,ChannelInitializer将在ChannelPipeline中安装一组自定义的ChannelHandler

7.4.3 ChannelInitializer将自己从ChannelPipeline中移除

7.5 ChannelPipeline会自己识别那些是出站的ChannelHandler哪些是入站的。

7.6 在Netty中有两种发送消息的方式,可以直接写入到Channel中,也可以写入到ChannelContext中,前一种方式直接导致数据从Pipeline的尾端流动,而后者是传递给了下一个ChannelHandler

7.7 ChannelHandler也提供了很多立即可用的适配器类

ChannelHandlerAdapter

ChannelInboundHandlerAdapter

ChannelOutboundHandlerAdapter

ChannelDuplexHandlerAdapter

8.引导---bootstrap

引导就是bootstrap,再构建Netty服务端或者客户端的时候,最不可缺少的就是引导了,在引导中,比较值得注意的点是,bootstrap只需要一个EventLoop,而ServerBootstrap需要2个EventLoop,主要是因为后者需要一个专门处理ServerSocketChannel的EventLoop,然后一个去处理连接进来的SocketChannel

9.个人关于ChannelPipeline的看法

连接入站的时候将会经过ChannelPipeline并且经过层层ChannelHandler处理,这类似与观察者模式,出站的时候也一样


这是Netty实战第三章中个人提取的知识点,可能比较枯燥乏味,也谢谢各位的浏览和阅读,如果需要转载,请注明转载地址


  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值