响应式编程的基本概念

简介:

在参加了许多次谈话并阅读了大量的博文后,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 核心原理(响应式编程篇)
|
6天前
|
存储 C# 开发者
深入了解 C#编程的核心概念
【4月更文挑战第20天】C#是一种强大的面向对象编程语言,关键概念包括:面向对象(类、对象、继承、多态)、封装、数据类型、变量与常量、控制流、异常处理、委托和事件、泛型及集合。掌握这些概念并通过阅读代码、实践编写和学习新技巧行动,是成为熟练C#开发者的基石。了解并运用这些核心概念能提升代码效率、灵活性和可维护性。
|
6月前
|
存储 Kubernetes API
【k8s概念】一文搞懂k8s核心概念!!!(下)
【k8s概念】一文搞懂k8s核心概念!!!(下)
53287 8
|
6月前
|
存储 Kubernetes 调度
【k8s概念】一文搞懂k8s核心概念!!!(上)
【k8s概念】一文搞懂k8s核心概念!!!(上)
510 0
|
6月前
|
Kubernetes 应用服务中间件 nginx
【k8s概念】一文搞懂k8s核心概念!!!(中)
【k8s概念】一文搞懂k8s核心概念!!!(中)
304 1
|
存储 前端开发 Dubbo
响应式编程的实践
响应式编程的实践
响应式编程的实践
|
Scala 开发工具 git
剖析响应式编程的本质
剖析响应式编程的本质
剖析响应式编程的本质
|
Java
Java面向对象基础1——基础概念
Java面向对象基础1——基础概念
77 0
Java面向对象基础1——基础概念
|
存储 SQL 监控
第四章 核心概念
第四章 核心概念
第四章 核心概念
|
缓存 前端开发 API
ReactiveCocoa 进阶,轻松搞定函数式编程框架
函数式编程已经变得越来越流行,而且也有很大的优势,作为iOS开发者,函数式编程框架**ReactiveCocoa**到底怎么使用呢, 接下来我们来深入介绍**ReactiveCocoa**及其在**MVVM**中的用法。
138 0