Reactive Streams异步流处理标准

14-04-21 banq

Reactive Streams开源项目提供一个非堵塞的异步流处理的抗压标准。

流数据特点是“活”的,其大小是无法预先确定的,在异步系统中需要特别关注。最突出的问题是,资源消耗需要仔细控制,使得如果有一个快速的数据源不至于压倒流的目的地(如同自来水厂水压突然增大,会冲垮水管末端的居民家的水龙头)。异步对于激活计算资源的并行使用是必要的,计算资源包括:多主机或一台机器内多个CPU核心。

Reactive Streams目标是管制流数据在跨越异步边界进行流数据交换,可以认为是将元素传递到另一个线程或线程池,同时确保在接收端不是被迫缓冲任意数量的数据。换句话说,抗压是该模型重要组成部分,设置协调线程之间的队列大小是有限制的,如果不同异步模型之间的通信是同步的将削弱异步的好处。因此必须采取谨慎措施,强制完全无阻塞的反应流能在系统的各个方面异步实施。

这个规范的目标是建立一个规则,使得很多流反应框架能够遵守规则标准,这样才能顺利实现互操作,才能发挥整个流应用上的优点。

Reactive Streams是一个基于JVM的面向流的库包的标准和规范:

1. 处理潜在的无边界限制的元素

2.顺序

3.在组件之间异步传递元素

4.使用强制性的非堵塞的抗压。

RS由以下部分组成:

SPI:定义了不同实现组件之间的交互层和互操作性

API:定义 Reactive Streams用户使用的类型

技术兼容Kit(TCK):实现的标准测试。

4
猜你喜欢