Netty组件
EventLoopGroup
NioEventLoopGroup
1 | EventLoopGroup boss = new NioEventLoopGroup(); |
- 创建的 boss 和 worker 就是 NioEventLoopGroup
Bootstrap
ServerBootstrap
- 服务端引导器
Bootstrap
- 客户端引导器
引导器的作用主要作用:
- boss 和 worker 的指定
- 设置 Channel 类型
- Handler 设置
- TCP 参数设置
- 端口绑定
Channel
NioServerSocketChannel
- 服务端 Channel 类型
NioSocketChannel
- 客户端 Channel 类型
Option
- 为
boss
设置 TCP 参数
ChildOption
- 为
worker
设置 TCP 参数
参数 | 含义 |
---|---|
SO_KEEPALIVE | 设置为 true 代表启用了 TCP SO_KEEPALIVE 属性,TCP 会主动探测连接状态,即连接保活 |
SO_BACKLOG | 已完成三次握手的请求队列最大长度,同一时刻服务端可能会处理多个连接,在高并发海量连接的场景下,该参数应适当调大 |
TCP_NODELAY | Netty 默认是 true,表示立即发送数据。如果设置为 false 表示启用 Nagle 算法,该算法会将 TCP 网络数据包累积到一定量才会发送,虽然可以减少报文发送的数量,但是会造成一定的数据延迟。Netty 为了最小化数据传输的延迟,默认禁用了 Nagle 算法 |
SO_SNDBUF | TCP 数据发送缓冲区大小 |
SO_RCVBUF | TCP数据接收缓冲区大小,TCP数据接收缓冲区大小 |
SO_LINGER | 设置延迟关闭的时间,等待缓冲区中的数据发送完成 |
CONNECT_TIMEOUT_MILLIS | 建立连接的超时时间 |
Handler
ChannelInboundHandler
入站处理器
ChannelOutboundHandler
出站处理器
Pipline
Future&Promise
ByteBuf
ByteBuf 的分类
池化/非池化的 ByteBuf
直接内存/堆内存的 ByteBuf
Unsafe/非Unsafe的ByteBuf
ByteBuf 的内部结构
- readerIndex : 读指针
- writrerIndexer : 写指针
- maxCapactity : 最大容量
常用API
对象创建
- Unpooled
- Pooled
指针操作
- readerIndex
- resetReaderIndex
- markReaderIndex
- writerIndex
- resetWriterIndex
- markWriterIndex
- setIndex
数据读写
isReadable
isReadOnly
asReadOnly
readableBytes
readBytes
readSlice
readRetainedSlice
readType
readByte()
readChar()
readBoolean()
readShort()
readInt()
readLong()
readFloat()
readDouble()
isWritable()
writeBytes(ByteBuf src)
writeCharSequence(CharSequence sequence, Charset charset)
writeType
- writeBoolean(boolean value)
- writeByte(int value)
- writeShort(int value)
- writeInt(int value)
- writeLong(long value)
- writeChar(int value)
- writeFloat(float value)
- writeDouble(double value)
内存管理
- refCnt()
- retain()
- retain(int increment)
- touch()
- touch(Object hint)
- release()
- release(int decrement)