Netty基础(四)优化和源码

178 阅读1分钟

资料来源:黑马netty 五、优化

1. 拓展序列化算法

  image.png

image.png

image.png

image.png

2. 参数调优

CONNECT_TIMEOUT_MILLIS

  • 属于 SocketChannal 的参数

  • 用在客户端建立连接时,如果在指定毫秒内无法连接,会抛出 timeout 异常

  • 注意:Netty 中不要用成了SO_TIMEOUT 主要用在阻塞 IO,而 Netty 是非阻塞 IO

SO_BACKLOG

  • 该参数是 ServerSocketChannel 的参数

TCP_NODELAY

  • 属于 SocketChannal 参数
  • 因为 Nagle 算法,数据包会堆积到一定的数量后一起发送,这就可能导致数据的发送存在一定的延时
  • 该参数默认为false,如果不希望的发送被延时,则需要将该值设置为true

SO-SNDBUF-&-SO-RCVBUF

  • SO_SNDBUF 属于 SocketChannal 参数
  • SO_RCVBUF 既可用于 SocketChannal 参数,也可以用于 ServerSocketChannal 参数(建议设置到 ServerSocketChannal 上)
  • 该参数用于指定接收方与发送方的滑动窗口大小

ALLOCATOR

  • 属于 SocketChannal 参数

  • 用来配置 ByteBuf 是池化还是非池化,是直接内存还是堆内存

RCVBUF_ALLOCATOR

  • 属于 SocketChannal 参数
  • 控制 Netty 接收缓冲区大小
  • 负责入站数据的分配,决定入站缓冲区的大小(并可动态调整),统一采用 direct 直接内存,具体池化还是非池化由 allocator 决定

3. RPC框架(略)

六、源码

1、启动流程

  • bind
  • doBind
  • initAndRegisterd
  • doBind0
  • 总结

2、组成

  • NIO线程启动时机
  • Java NIO空轮询BUG
  • ioRatio
  • 处理事件

3、Accept剖析

4、Read剖析