博客
关于我
Netty常用组件一
阅读量:795 次
发布时间:2023-02-15

本文共 1825 字,大约阅读时间需要 6 分钟。

一、EventLoopGroup和EventLoop

EventLoopGroup是一组EventLoop的抽象,负责为每个新创建的Channel分配一个EventLoop。一个EventLoopGroup中可以包含一个或多个EventLoop。EventLoopGroup提供next接口,可以从一组EventLoop中按照一定规则获取其中一个EventLoop来处理任务。

常用的实现类包括NioEventLoopGroup(异步非阻塞)和OioEventLoopGroup(同步阻塞)。EventLoop接口定义了Netty核心抽象,用于处理网络连接生命周期中发生的事件。每个EventLoop在其生命周期内只与一个Thread绑定,所有由它处理的I/O事件都将在该Thread上被处理。一个EventLoop负责处理一个或多个Channel,而一个Channel在其生命周期内只注册于一个EventLoop。

二、Channel

Channel和EventLoop的关系:Channel需要注册到某个EventLoop上,整个生命周期内由该EventLoop处理I/O事件。一个Channel在其生命周期内只与一个EventLoop进行绑定,而一个EventLoop可以同时被多个Channel绑定。

Channel接口提供了所有I/O操作的API,降低了直接使用Socket的复杂性。Channel也是一个专门化实现的广泛类层次结构的根,并作为Comparable的一个子接口。常见方法包括eventLoop、pipeline、isActive、localAddress、remoteAddress、write、flush、writeAndFlush等。

三、ChannelPipeline

ChannelPipeline为Channel提供了一个处理事件的管道,每个Channel都有自己的ChannelPipeline。ChannelPipeline以双向链表形式维护ChannelHandler,定义了入站和出站事件流的API。开发中需要在初始化或引导阶段安装ChannelHandler,通过这些Handler接收和处理事件。ChannelHandlerContext用于关联ChannelHandler和ChannelPipeline,提供了触发事件和管理I/O操作的方法。

ChannelHandlerContext的方法包括alloc、bind、channel、close、connect、deregister、disconnect、executor、fireChannelActive、fireChannelInactive等。这些方法用于处理事件传播和I/O操作。与ChannelPipeline上的方法不同,ChannelHandlerContext的方法只会在其关联的ChannelPipeline中传播给下一个ChannelHandler。

四、ChannelOption类

ChannelOption类提供了多个套接字选项属性,常用的包括SO_BACKLOG、SO_REUSEADDR、SO_KEEPALIVE、SO_RCVBUF、SO_LINGER和TCP_NODELAY。这些选项可以根据需求进行设置,例如SO_BACKLOG用于设置服务端接受连接的队列长度,SO_REUSEADDR允许重复使用本地地址和端口。

通过配置ChannelOption,可以优化网络连接的性能和稳定性。例如,在创建服务端Bootstrap对象时,可以设置SO_BACKLOG和SO_KEEPALIVE选项,并为每个子通道设置相应的选项。

五、ChannelFuture接口

ChannelFuture接口用于处理异步I/O操作的完成通知。通过addListener方法可以注册一个ChannelFutureListener,用于在操作完成时接收通知。例如,客户端连接服务端时,可以添加一个监听器,接收连接状态的变化。

ChannelFuture的方法包括alloc、bind、channel、close、connect、deregister、disconnect、executor、fireChannelActive、fireChannelInactive等。这些方法用于管理I/O操作和事件处理,确保异步编程的高效性和非阻塞性。

转载地址:http://tpcfk.baihongyu.com/

你可能感兴趣的文章
nginx net::ERR_ABORTED 403 (Forbidden)
查看>>
vue中处理过内存泄露处理方法
查看>>
Nginx RTMP 模块使用指南
查看>>
Nginx SSL 性能调优
查看>>
nginx ssl域名配置
查看>>
Nginx SSL私有证书自签,且反代80端口
查看>>
Nginx upstream性能优化
查看>>
Nginx 中解决跨域问题
查看>>
nginx 代理解决跨域
查看>>
Nginx 做负载均衡的几种轮询策略分析
查看>>
Nginx 入门,一篇搞定!
查看>>
Nginx 利用代理转发请求示例
查看>>
Nginx 动静分离与负载均衡的实现
查看>>
Nginx 反向代理 MinIO 及 ruoyi-vue-pro 配置 MinIO 详解
查看>>
nginx 反向代理 转发请求时,有时好有时没反应,产生原因及解决
查看>>
Nginx 反向代理+负载均衡
查看>>
Nginx 反向代理解决跨域问题
查看>>
Nginx 反向代理配置去除前缀
查看>>
nginx 后端获取真实ip
查看>>
Nginx 多端口配置和访问异常问题的排查与优化
查看>>