netty常用组件

由于TCP协议本身的机制(面向连接的可靠地协议-三次握手机制)客户端与服务器会维持一个连接(Channel),数据在连接不断开的情况下,可以持续不断地将多个数据包发往服务器,但是如果发送的网络数据包太小,那么他本身会启用Nagle算法(可配置是否启用)对较小的数据包进行合并(基于此,TCP的网络延迟要UDP的高些)然后再发送(超时或者包大小足够)。服务器在接收到数据库后,放到缓冲区中,如果消息没有被及时从缓存区取走,下次在取数据的时候可能就会出现一次取出多个数据包的情况,造成粘包现象。这项关联是永久性的。
摘要由CSDN通过智能技术生成

Netty组件概念明晰

  • Bootstrap

是netty的主入口类,分为客户端Bootstrap类和服务端ServerBootstrap类两种。

  • EventLoop(Group)

eventloop可以看成是一个线程,eventLoopGroop可以看成是线程组。

  • Channel

Channel 是Java NIO 的一个基本构造。目前,可以把Channel 看作是传入(入站)或者传出(出站)数据的载体。因此,它可以被打开或者被关闭,连接或者断开连接。

channel和EventLoop(Group)

Channel需要被注册到某个EventLoop上,在Channel整个生命周期内都由这个EventLoop处理IO事件,也就是说一个Channel和一个EventLoop进行了绑定,但是一个EventLoop可以同时被多个Channel绑定。

ChannelPipeline

当Channel 被创建时,它将会被自动地分配一个新的ChannelPipeline,每个Channel 都有自己的ChannelPipeline。这项关联是永久性的。在Netty 组件的生命周期中,这是一项固定的操作,不需要开发人员的任何干预。

入站和出站ChannelHandler 被安装到同一个ChannelPipeline中,ChannelPipeline以双向链表的形式进行维护管理。

ChannelHandlerContext

channelHandlerContext相较于channelHandler多了构成ChannelPipeline链表的属性。

ChannelPipeline以双向链表的形式进行维护管理Handler,hannelHandlerContext 的主要作用就和LinkedList内部的类Node类似,不过ChannelHandlerContext 不仅仅只是个包装类,它还提供了很多的方法,比如让事件从当前ChannelHandler传递给链中的下一个ChannelHandler,还可以被用于获取底层的Channel,还可以用于写出站数据。

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值