Reactor 实现原理和使用实例、相关对比 - 指南

Reactor 实现原理深度解析:无需连接的响应式流引擎

核心结论先行
Reactor 不需要像 WebSocket 那样建立“连接”
✅ 它是 纯内存中的事件驱动数据流处理引擎,基于 订阅-发布模型回调链实现异步非阻塞计算。


一、根本区别:Reactor vs WebSocket

特性ReactorWebSocket
本质编程模型 / 库(JVM 内存计算)网络协议(TCP 长连接)
是否需要连接❌ 无网络连接,纯本地管理✅ 必须建立 TCP 长连接
数据来源内存对象、异步任务、数据库、HTTP 响应等远程客户端/服务端推送的消息
背压机制✅ 内置(通过 request(n)❌ 无(需应用层达成)
线程模型事件循环 + 线程池(非阻塞)通常每个连接绑定线程(易阻塞)

简单类比

  • WebSocket电话专线(必须先拨通才能说话)
  • Reactor广播电台(你“订阅”频道,节目自动推给你,无需专线)

二、Reactor 核心实现原理

1. 基于 Reactive Streams 规范的“拉取式”流

Reactor 的核心不是“推数据”,而是消费者主动拉取(Pull),通过 Subscription.request(n) 控制流量。

关键流程(以 Flux.just(1,2,3).map(x -> x*2).subscribe() 为例):
JustPublisherMapSubscriberSubscriberJustPublisherMapSubscriberSubscriberonSubscribe(sub)onSubscribe(sub)
posted @ 2026-03-08 17:32  clnchanpin  阅读(10)  评论(0)    收藏  举报