资料来源:黑马netty 五、优化
1. 拓展序列化算法
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剖析