图说 Netty 核心组件

Netty通过高度抽象和模块化提供了强大的功能,主要组件包括:Channel处理socket操作,EventLoop分配线程处理事件,ChannelFuture用于异步操作通知,ChannelHandler和ChannelPipeline管理数据流和处理,ByteBuf提供高效数据缓存,以及Encode和Decode处理编解码。Bootstrap则用于配置服务参数并启动服务。
摘要由CSDN通过智能技术生成

核心组件

Netty 功能非常强大,依赖于其团队对其高度抽象化和模块化,封装出各个组件,开发者只需要调用对应的组件便可以轻松构造出高性能服务。

通常编写最简单高效的服务一般会涉及到如下组件:

  • Channel、EventLoop、ChannelFuture:socket 管理、控制流、多线程、并发;
  • ChannelHandler、ChannelPipeline:管理数据流和数据处理;
  • ByteBuf:高效简单的数据读写缓存,数据读写容器;
  • Encode、Decode:一套编解码框架;
  • Bootstrap:配置服务参数,引导服务启动;

Channel、EventLoop、ChannelFuture

Channel :底层是 socket,负责基本的 I/O 操作:bind、connect、read、write。Channel 提供的 API 操作大大降低了 直接使用 socket 的复杂性。Channel 具有多个实现类:EmbeddedChannel、LocalServerChannel、NioSocketChannel。

EventLoop: 为 channel 操作分配线程,用于处理连接的生命周期所发生的事件。

ChannelFuture:channel 操作为异步,每个操作不能马上得到结果,ChannelFutur 用于注册监听器,以便在每个操作完成后收到通知。

ChannelHandler、ChannelPipeline

ChannelHandler:执行应用程序处理逻辑,根据入站出站,分为入站 handler 和 出站 handler。

ChannelPipeline:负责串联 ChannelHandler,从而串联其网络数据从入站到出站整个过程。

ByteBuf

ByteBuf:替换 JAVA NIO 提供的 ByteBuffer,提供更好用更高效的 API。

  • 实现了透密的零拷贝,I/O 读写更加高效;
  • 容量可以按需扩展;
  • 读写操作不需要复杂的翻转操作;
  • 读和写使用了不同的索引;
  • 支持方法的链式调用;
  • 支持引用计数;
  • 支持池化;

Encode、Decode

每个网络应用服务都必须定义如何解析在两个节点之间的传输的原始字节,以及如何将其和目标因公的数据格式相互转化,这种转化逻辑将由编解码器处理。编解码器由编码器和解码器组成。

Bootstrap

Bootstrap 负责将以上的组件组织起来,成为一个可实际运行的应用程序。引导包括:客户端引导和服务器端引导:Bootstrap 和 ServerBootstrap。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值