响应式编程的基本概念 - 开源中国社区
响应式编程的基本概念
oschina 2016年01月24日

响应式编程的基本概念

oschina oschina 发布于2016年01月24日 收藏 64 评论 4

有免费的MySQL,为什么还要买? >>>  

在参加了许多次谈话并阅读了大量的博文后,Peter Ledbrook仍然未能深刻地理解响应式编程的含义。因此他认为,响应式编程领域存在一个关键的问题,就是它之所以那么难以理解是因为所有的术语词汇以及针对这些词汇的许多不同的解释。于是,他决定搞明白这一切,并希望同其他开发人员分享他的知识。

Ledbrook是Grails的核心贡献者之一。他首先阅读了响应式编程宣言,发现响应式系统具备如下特点:

  • 响应性是指一个系统应该总是能够及时响应用户请求,并且保持很低的延迟。

  • 弹性是指一个系统即使在部分组件开始出现故障的情况下也应该能够作出响应,将停机时间将至最低。

  • 可伸缩性是指一个系统在负载增加时应该能够根据需求增加资源以确保响应性,但同时也应该能在负载降低时减少资源,保持高效的资源利用率。

  • 消息驱动是指在一个系统的不同部分之间传递消息,Ledbrook认为这是响应式系统的一个必备特点。

Ledbrook关注的下一个概念是响应式流,他将其描述为随着时间发出的一系列元素。他认为,从观察者模式入手理解这个概念是个不错的出发点。该模式包含一个发出事件的源及一个或多个等待事件的观察者。在Ledbrook看来,响应式实际上是观察者模式加上事件源的完成通知能力、错误传播能力和监听者同事件源通信的能力。

响应式流是一种规范ReactiveX是一种常用的跨平台实现。ProjectReactorAkka是另外两种实现。下面三个重要的概念是响应式流API的构建基础:

  • 发布者是事件的发送方,可以向它订阅。

  • 订阅者是事件订阅方。

  • 订阅将发布者和订阅者联系起来,使订阅者可以向发布者发送信号。

Ledbrook最后指出,许多响应式流都是由我们熟悉的概念构成,但是至少是部分地隐藏了复杂性。它适合于高I/O的环境或者需要处理大量数据的 环境。Java 8的流同响应式流类似,但他指出,Java 8的流只能推送,不能接收监听者的信号,并且没有像响应式流所做的那样真正地针对I/O进行优化。

查看英文原文:The Basics of Being Reactive

转载自:www.infoq.com/cn

本站文章除注明转载外,均为本站原创或编译。欢迎任何形式的转载,但请务必注明出处,尊重他人劳动共创开源社区。
转载请注明:文章转载自 开源中国社区 [http://www.oschina.net]
本文标题:响应式编程的基本概念
分享
评论(4)
最新评论
0
太浅
0
这些不都是erlang/otp的擅长吗
0
拿PHP-FPM来说,利用进程池(pool)的隔离性,把I/O密集请求通过Nginx分发到专用PHP-FPM进程池进行处理,避免影响其他业务,实现"弹性".进程池采用dynamic方式产生进程,请求繁忙时fork出更多的进程,繁忙过后减少进程,实现"可伸缩性".PHP系统的不同部分通过Redis/Memcached/MySQL进行通信,实现"消息驱动".综上,PHP-FPM总能及时响应用户请求,并且保持很低的延迟,实现"响应性".
0
将停机时间将至最低,将至……
顶部