Reactive Streams 规范翻译

翻译自 Reactive Streams Reactive Streams 注:Reactive Streams 直译为响应式流,这里保留英文原词。 Reactive Streams 是一项提议,旨在为具有无阻塞背压的异步处理流提供标准。这包括针对运行环境(JVM 和 JavaScript)以及网络协议的努力。 Reactive Streams 是为了提供一个无阻塞背压异步流式处理的标准的一个提议。 JDK9 java.util.concurrent.Flow 在 JDK 9 的 java.util.concurrent.Flow 中可用的接口,分别为 1 :1 语义上各自对应于 Reactive Streams。这意味着将会有一个迁移期,库(Libraries)将采用 JDK 中的新类型,但是由于库的完全语义等效以及 Reactive Streams <-> Flow 适配器库和直接与 JDK Flow 类型兼容的 TCK,因此这个迁移期预计会很短。 如果你有兴趣了解有关 JVM Reactive Streams,请阅读此 文章 问题 在异步系统中,处理流数据(尤其是数量未先确定的的“实时”数据)需要特别注意。最突出的问题是,需要控制资源消耗,这样快速数据源不会压垮流目的地。为了在并行网络主机或一台多核机器上并行地使用计算资源,需要异步。 Reactive Streams 的主要目标是管理跨异步边界的流数据交换(考虑将元素传递到另一个线程或线程池),同时确保接收方不强制缓存任意数量的数据。换句话说,背压是此模型中不可或缺的一部分,以使在线程之间进行调节的队列收到限制。如果背压的通信是同步的,则异步处理的好处将被抵消(另请看 Reactive Manifesto),因此必须注意对 Reactive Streams 实现的所有方面进行完全无阻塞和异步行为授权。 本说明书旨在允许创建许多符合要求的实现,这些实现通过遵守规则将能够平滑地互相操作,并在流应用程序的整个处理图中保留上述好处和特性。 范围 Reactive Streams 的范围是找接口、方法和协议的最小集,这些接口、方法和协议将描述实现目标——无阻塞背压的异步处理流,所需要的操作和实体。 端用户 DSLs(领域特定语言)或者协议绑定 API(应用编程接口)有目的地被排除在范围之外,以鼓励和支持可能使用不同编程语言的不同实现,以尽可能地遵循其平台的习惯用法。 我们预计,接受这个 Reactive Streams 规范以及它的实现经验将共同导向广泛的集成,例如,包括将来 JDK 版本中的 Java 平台支持或者在将来的网页浏览器中网络协议的支持。...

2019 November 17 · 1 分钟 · Lex Cao