响应式编程的基本概念

简介:

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

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

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

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

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

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

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

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

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

订阅者是事件订阅方。

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

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

====================================分割线================================
文章转载自 开源中国社区[http://www.oschina.net]

目录
相关文章
|
8月前
|
存储 缓存 JavaScript
深入浅出 RxJS 核心原理(响应式编程篇)
在最近的项目中,我们面临了一个需求:监听异步数据的更新,并及时通知相关的组件模块进行相应的处理。传统的事件监听和回调函数方式可能无法满足我们的需求,因此决定采用响应式编程的方法来解决这个问题。在实现过程中发现 RxJS 这个响应式编程库,可以很高效、可维护地实现数据的监听和组件通知。
169 0
深入浅出 RxJS 核心原理(响应式编程篇)
|
2月前
|
数据库
补偿事务基本概念
补偿事务基本概念
22 2
|
6月前
|
存储 Kubernetes API
【k8s概念】一文搞懂k8s核心概念!!!(下)
【k8s概念】一文搞懂k8s核心概念!!!(下)
53287 8
|
6月前
|
Kubernetes 应用服务中间件 nginx
【k8s概念】一文搞懂k8s核心概念!!!(中)
【k8s概念】一文搞懂k8s核心概念!!!(中)
304 1
|
6月前
|
存储 Kubernetes 调度
【k8s概念】一文搞懂k8s核心概念!!!(上)
【k8s概念】一文搞懂k8s核心概念!!!(上)
509 0
|
7月前
|
存储 Kubernetes API
k8s基本概念-1
k8s基本概念
58 0
|
7月前
|
Kubernetes 调度 Docker
k8s基本概念-2
k8s基本概念
32 0
|
8月前
|
存储 Kubernetes 负载均衡
K8S(一)基本概念篇
最近公司要搭建一个微服务项目,之前的docker-compose部署的方式需要替换成K8S了,然后,哈哈,这个机会了又落到我身上了,虽然我并不知道怎么部署,但是我还是挺高兴的,又可以边学习边运用了,真是不赖。接下来不定期更新K8S系列文章,记录我的成长和踩坑记。
99 0
|
存储 前端开发 Dubbo
响应式编程的实践
响应式编程的实践
响应式编程的实践
|
Scala 开发工具 git
剖析响应式编程的本质
剖析响应式编程的本质
剖析响应式编程的本质