BT

如何利用碎片时间提升技术认知与能力? 点击获取答案

Reactive Streams介绍

| 作者 Jan Stenberg 关注 33 他的粉丝 ,译者 张龙 关注 12 他的粉丝 发布于 2015年12月11日. 估计阅读时间: 3 分钟 | 都知道硅谷人工智能做的好,你知道 硅谷的运维技术 也值得参考吗?QCon上海带你探索其中的奥义

现代软件对近乎实时地处理数据的需求越来越强烈。对变化的信息的即时响应中蕴含着巨大的商业价值,而这个速度是传统的基于批处理的架构所无法比拟的。流处理是一种快速将数据转换为知识的手段,Kevin Webberintroduction to Reactive Streams一文中对此进行了解释说明。他认为适合于流处理的系统有ETL(Extract、Transform、Load)与复杂事件处理(CEP)系统,此外还有报表与分析系统。

Typesafe的负责人Webber将流描述为随着时间的流逝而不断发射的一系列元素,可能没有开始,也没有结束。相比于个数确定的数字数组(很容易计算出平均值)来说,流可能有着无穷尽的数字,这使得如何以及何时能够计算出平均值变得异常困难。这揭示出了流的一个重要方面,即在流中,并不需要处理其中的每一个元素。我们需要将流看作是不断移动、数据不断变化的集合。

Reactive Streams是一个规范,构建系统的开发者们需要使用该规范的实现。Reactive Streams的目标是增加抽象层,而不是进行底层的流处理,规范将这些问题留给了库实现来解决。

Reactive Streams规范的一个主要目标是通过异步边界来解耦系统组件。在同步世界中,每个功能或是操作都是按照顺序处理的,一个接着一个;除了第一个外,其他每一个操作都依赖于前一个操作。这种方式增加了维护成本,并且不利于构建出响应式系统。Webber认为这种设计是响应性反模式,会对系统可伸缩性与弹性造成较大的影响。为了充分利用当今多核CPU架构的优势,Webber认为我们需要一种完全不同的模型,能够实现组件间的解耦,从而实现以并行方式执行同步环境下的各种功能。

Reactive Streams规范的另一个主要目标是为压力处理定义一种模型。流处理的理想范式是将数据从发布者推送到订阅者,这样发布者就可以快速发布数据,同时通过压力处理来确保速度更快的发布者不会对速度较慢的订阅者造成过载。压力处理通过使用流控制来确保操作的稳定性并能实现优雅降级,从而提供弹性能力。

Typesafe高级总监Jamie Allen在最近的一篇博文中从异步、非阻塞与并发视角描述了洗碗动作,并且将其与Reactive Streams处理不断增加的负载的方式进行了比较。

查看英文原文:Introducing Reactive Streams

评价本文

专业度
风格

您好,朋友!

您需要 注册一个InfoQ账号 或者 才能进行评论。在您完成注册后还需要进行一些设置。

获得来自InfoQ的更多体验。

告诉我们您的想法

允许的HTML标签: a,b,br,blockquote,i,li,pre,u,ul,p

当有人回复此评论时请E-mail通知我
社区评论

允许的HTML标签: a,b,br,blockquote,i,li,pre,u,ul,p

当有人回复此评论时请E-mail通知我

允许的HTML标签: a,b,br,blockquote,i,li,pre,u,ul,p

当有人回复此评论时请E-mail通知我

讨论

登陆InfoQ,与你最关心的话题互动。


找回密码....

Follow

关注你最喜爱的话题和作者

快速浏览网站内你所感兴趣话题的精选内容。

Like

内容自由定制

选择想要阅读的主题和喜爱的作者定制自己的新闻源。

Notifications

获取更新

设置通知机制以获取内容更新对您而言是否重要

BT