Reactor 实现原理和使用实例、相关对比 - 指南
Reactor 实现原理深度解析:无需连接的响应式流引擎
核心结论先行:
✅ Reactor 不需要像 WebSocket 那样建立“连接”。
✅ 它是 纯内存中的事件驱动数据流处理引擎,基于 订阅-发布模型 和 回调链实现异步非阻塞计算。
一、根本区别:Reactor vs WebSocket
| 特性 | Reactor | WebSocket |
|---|---|---|
| 本质 | 编程模型 / 库(JVM 内存计算) | 网络协议(TCP 长连接) |
| 是否需要连接 | ❌ 无网络连接,纯本地管理 | ✅ 必须建立 TCP 长连接 |
| 数据来源 | 内存对象、异步任务、数据库、HTTP 响应等 | 远程客户端/服务端推送的消息 |
| 背压机制 | ✅ 内置(通过 request(n)) | ❌ 无(需应用层达成) |
| 线程模型 | 事件循环 + 线程池(非阻塞) | 通常每个连接绑定线程(易阻塞) |
简单类比:
- WebSocket 像 电话专线(必须先拨通才能说话)
- Reactor 像 广播电台(你“订阅”频道,节目自动推给你,无需专线)
二、Reactor 核心实现原理
1. 基于 Reactive Streams 规范的“拉取式”流
Reactor 的核心不是“推数据”,而是消费者主动拉取(Pull),通过 Subscription.request(n) 控制流量。
浙公网安备 33010602011771号