webflux源码解析(3)-reactor netty

为什么webflux在io密集型的场景能有效的提升系统吞吐量呢? 是因为它使用的是响应式编程,使用的是NIO,但这里的响应式、nio到底是怎么样的呢?响应式编程上一篇已经做了说明,本文会重点梳理结合了NIO的实现。

netty是java里最流行的nio的通信框架,webflux也是用的它,但却不是直接用的,为了适配响应式编程,对于netty进行了一层封装,使用的是 Reactor Netty,其从connection上获取请求,并将请求发送至 DispatcherHandler 中。

1.连接的状态

在编程和网络配置的上下文中,一个连接(connection)的生命周期会经历多个状态,每个状态都具有特定的含义。这些状态的出现顺序和可用性可能会因为不同的网络库和框架(如 Netty、Reactor Netty、Java NIO)而有所不同,但大体上会涉及以下几个常见的状态:

  1. CONFIGURED:连接已被配置。这个状态意味着连接的各种参数(如超时时间、缓冲区大小、协议版本等)已经被设置完毕,准备开始建立连接。

  2. CONNECTING:正在尝试连接。在这个状态下,系统正在尝试与目标服务器建立连接,但连接尚未完成。

  3. CONNECTED:连接成功建立。当连接成功建立后,将进入这个状态,此时可以开始进行数据的发送和接收。

  4. READY:连接准备就绪。某些框架或系统可能会进一步区分“已连接”和“准备就绪”两个状态。"准备就绪"状态意味着连接不仅已建立,且所有初始化步骤(如握手、认证等)都已成功完成,连接可以用于通信。

  5. DISCONNECTING:正在尝试断开连接。在这个状态下,连接正在进行关闭的准备工作,如发送剩余的数据或进行必要的清理操作。

  6. DISCONNECTED:连接已经完全断开。此状态表示连接已经被关闭,所有的资源都已释放,且无法再进行数据传输。

  7. ERROR:连接出错。这个状态表示在连接的建立、使用或关闭过程中遇到了错误。具体的错误信息通常需要通过日志或异常机制进一步检查。

  8. CLOSED:连接被关闭。这个状态往往与 DISCONNECTED 类似,但强调的是连接被有意地关闭,而不是因为错误。

值得注意的是,不同的框架和库可能会有细微的状态差异,一些状态可能会被合并或细分。

2.reactor netty中的连接状态

连接上的状态定义

reactor.netty.ConnectionObserver.State

注意此处是一个interface,在别处还有扩展

评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值