官网
介绍
Netty框架的设计思路是基于NIO的事件驱动编程模型,核心组件包括:
Channel:通道,负责网络数据的读写操作;
EventLoop:事件循环,处理I/O事件和用户自定义事件;
ChannelFuture:异步操作的结果,可以添加回调函数;
ChannelHandler:处理器,用于处理各种事件,实现业务逻辑;
ByteBuf:字节缓冲区,提供快速高效的数据读写。
具体分解的组件步骤如下:
创建一个ServerBootstrap或者Bootstrap类实例,该实例是Netty应用程序的主入口,用于设置启动参数;
配置EventLoopGroup,可以设置Boss线程组和Worker线程组,其中Boss线程组负责接收客户端连接请求,Worker线程组负责处理客户端请求;
配置Channel,可以选择不同的Channel类型,如NioServerSocketChannel、NioSocketChannel等;
设置ChannelPipeline,用于管理ChannelHandler,每个Channel都有独立的ChannelPipeline;
向ChannelPipeline中添加ChannelHandler,可以添加多个ChannelHandler,按照顺序依次执行;
绑定服务器端口,调用bind方法绑定服务器端口,并返回ChannelFuture对象;
等待服务器关闭,调用ChannelFuture对象的sync方法等待服务器关闭。
maxContentLength参数配置
maxContentLength 是 Netty 框架中的一个配置参数,用于限制可以接收的最大字节数。它通常被用于防止缓冲区溢出攻击和流量过载等问题。当数据包大小超过 maxContentLength 时,Netty 将拒绝接收该数据包并关闭连接。在 HTTP 协议中,maxContentLength 可以用于限制请求体或响应体的最大大小。在 Netty 中,maxContentLength 的设置可以通过 ChannelPipeline 的 ChannelHandler 进行配置。
HttpObjectAggregator配置
“HttpObjectAggregator” 是 Netty 框架中的一个聚合器(aggregator),用于将 HTTP 请求或响应的多个部分合并成单个完整的消息。在使用 HttpObjectAggregator 时,需要设置最大聚合字节数作为参数,以指定聚合后生成的完整消息的最大大小限制。这个参数通常被称为 “maxContentLength”。