Netty组件

EventLoopGroup

NioEventLoopGroup继承关系

NioEventLoopGroup

1
2
EventLoopGroup boss = new NioEventLoopGroup();
EventLoopGroup worker = new NioEventLoopGroup();
  • 创建的 boss 和 worker 就是 NioEventLoopGroup

Bootstrap

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 的内部结构

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)