Reactive Streams

Reactive Streams 是一项倡议,以提供标准的非阻塞异步流处理,包含运行环境(JVM,JavaScript)和网络协议的标准统一

处理数据流特别是体积大小无法预知的「live(实时)」数据流,需要在异步系统里进行特别「关照」,最突出的问题是要知道资源消耗的量和对资源消耗的控制,
防止被大量的数据流入,消耗大量资源压垮系统
为了可以在多机协作网络或单机多核上并行使用计算资源,异步是不可或缺的
reactive streams的主要目标是管理流数据跨异步域传输,(跨异步域传输:可以类比想象成数据跨线程传递,)同时确保流的接收端不需缓冲任何数据,也即,作为
本模型一部分的背压(反压 back pressure)使得线程间的中介——队列 的大小被限制了。
如果背压的通讯是同步的,则异步带来的优点将毫无意义,因此必须注意Reactive Stream所有的具体实现(非阻塞和异步的实现等)

本规范的目的:所有遵守本规范的各实现可以顺利平滑地交互,以在整个流处理应用/系统中保留前面所述的好处和特性

Scope

Reactive Stream的范畴是找到 实现非阻塞异步数据流的back pressure目标 的 操作/实体 的接口interface,方法Method,协议protocol
端的DSL和绑定API的协议

基本语义

基本语义定义了如何通过背压调节流元素的传输,至于元素如何传输,元素在传输过程中的表现,如何发出背压信号等都不属于本规范的范畴

给实现者的提示

若要实现本规范,建议先阅读READMEJava API documentation
,然后看SpecificationTCK
example implementations
如果有任何疑问,可以查阅closed issues,若依旧无法解决你的疑问,则
new issue提出你的问题

深入阅读:

背压(Back Pressure)与流量控制
本文参考:Reactive Streams