启动引导类Bootstrap模块
目录
1) group :设置线程组模型,Reactor线程模型对比EventLoopGroup
2)channel:设置channel通道类型NioServerSocketChannel、OioServerSocketChannel
3) ***** option: 作用于每个新建立的channel,设置TCP连接中的一些参数,如下
4)childOption: 作用于被accept之后的连接
5) childHandler: 用于对每个通道里面的数据处理
启动引导类Bootstrap模块
大系统都有一个启动的引导类 启动的主流程 在里面加配置参数读取配置文件等
Netty启动引导类Bootstrap作用和tcp通道参数设置
参考: https://blog.****.net/QH_JAVA/article/details/78383543
1)服务器启动引导类ServerBootstrap
1) group :设置线程组模型,Reactor线程模型对比EventLoopGroup
1)单线程 一个接待员
2)多线程 一个接待员 多个服务生
3)主从线程 多个接待员 多个服务生
单线程 ):
多线程):
主从线程):
参考:https://blog.****.net/QH_JAVA/article/details/78443646
2)channel:设置channel通道类型NioServerSocketChannel、OioServerSocketChannel
建立文件通道的类型
3) ***** option: 作用于每个新建立的channel,设置TCP连接中的一些参数,如下
ChannelOption.SO_BACKLOG: 存放已完成三次握手的请求的等待队列的最大长度;
Linux服务器TCP连接底层知识:
syn queue:半连接队列,洪水攻击,tcp_max_syn_backlog
accept queue:全连接队列(等待), net.core.somaxconn
系统默认的somaxconn参数要足够大 ,如果backlog(等待队列)比somaxconn大,则会优先用后者
https://github.com/netty/netty/blob/4.1/common/src/main/java/io/netty/util/NetUtil.java#L250
ChannelOption.TCP_NODELAY: 为了解决Nagle的算法问题,默认是false,
要求高实时性,有数据时马上发送,就将该选项设置为true关闭Nagle算法;如果要减少发送次数,就设置为false,会累积一定大小后再发送;
知识拓展:https://baike.baidu.com/item/Nagle%E7%AE%97%E6%B3%95/5645172
https://www.2cto.com/article/201309/241096.html