Netty学习一 源码结构

netty入门

简介

官方定义为: Netty是一款异步的事件驱动的网络应用程序框架,支持快速地开发可维护的高性能的面向协议的服务器和客户端
在这里插入图片描述

1. Transport Service (通信服务)

Socket&Datagram (TCP/UDP协议)
HTTP Tunnel (Http隧道,Http穿梭)
In-VM Pipe (管道)

2. Protocol Support (项目支持)

HTTP&WebSocket (http/websocket)
SSL StartTLS(SSL/加密通讯协议)
Google Protobuf(序列化)
zlib/gzip Compression (压缩,解压缩)
Large File Transfer (大文件传输)
RTSP(实时流传输协议)
Legacy Text - Binary Protocols with Unit Testability (单元测试)

3. Core(核心组件)

Extensible Event Model (事件驱动模型)
Universal Communication API(通用通讯API)
Zero-Copy-Capable Rich Byte Buffer(零拷贝的Buffer)

包结构

  • netty-common
  • netty-buffer
  • netty-transport
  • netty-handler
  • codec
  • resover
netty-common

common包主要有一些通用的工具类,还有Netty自己封装的一个并发包,里面有它重新实现的future和Promise以及EventExecutor和FastThreadLocal等通用的类,
common包作为netty的一个核心基础包,其他的包都需要依赖他

netty-buffer

buffer包实现了一个设计优美的ByteBuf(最初被设计为接口,后来被改为抽象类)组件,主要用来承载字节,包括字节的写入与读取。除了可以申请堆内存,通过Netty的ByteBuf还可以申请堆外内存,即DirectBuffer。另外对于Buffer的管理,Netty也是非常棒的,它实现了一个内存池,对于已经分配的内存使用完之后可以不释放,而是回收到内存池中去,下次再次申请时可以在池中寻找一个匹配的内存进行分配

netty-transport

transport包中有四种重要的类(或接口): Bootstrap,Channel,ChannelHandler和EventLoop

  • Bootstrap是一种辅助应用启动类,它包括服务端和客户端
  • Channel则是netty中核心组件之一,它表示一个网络套字节。通过Channel我们可以进行包括绑定端口,连接远程服务器,从网络中读取数据,向网站中写入数据等操作
  • ChannelHandler是对IO操作进行处理的一种抽象,通过ChannelHandler我们可以将IO操作简化为一个个Handler类,
    并且所有的Handler会在一个叫做ChannelPipeline的接口中进行传递。
  • EventLoop是一个具体执行IO操作的容器,每一个EventLoop中有一个线程,一个Channel被创建后将被指定一个EventLoop,该Channel中所有的IO操作都会由分配到EventLoop来进行
    执行,知道Channel被销毁,需要注意的是同一个EventLoop可能同时处理着多个Channel的任务,但是一个Channel只会由一个EventLoop处理
netty-handler

handler包中主要是为我们内置实现的一些开箱即用的ChannelHandler的实现类。比如说我们需要记录下所有的时间的日志,那么只要在pipeline中增加一个LogginHandler就可以了,再比如我们需要将一个http协议升级到HTTPS,那么只需要在我们的pipeline中增加一个SslHandler就可以了

codec

codec包只要是实现编解码,只要的两个基础抽象类:ByteToMessageDecoder,MessageToByteEncoder,分别是将字节解码为对象,以及将对应的编码为字节。其他所有的编解码的实现都是基于这两个类。我们可以通过集成这两个类来实现自己的编解码逻辑,也可以使用netty中已有的一些编解码方法,因为netty为我们内置了很多开箱即用的编码类
如:HttpRequestDecoder,HttpResponseEncoder,ProtobufDecoder,LineBasedFrameDecoder等等

resover

resover包主要是实现了一些解析器,包括address,host,name,dns等数据的解析

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值