写点什么

响应式编程的基本概念

  • 2016-01-22
  • 本文字数:798 字

    阅读完需:约 3 分钟

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

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

  • 响应性是指一个系统应该总是能够及时响应用户请求,并且保持很低的延迟。
  • 弹性是指一个系统即使在部分组件开始出现故障的情况下也应该能够作出响应,将停机时间将至最低。
  • 可伸缩性是指一个系统在负载增加时应该能够根据需求增加资源以确保响应性,但同时也应该能在负载降低时减少资源,保持高效的资源利用率。
  • 消息驱动是指在一个系统的不同部分之间传递消息,Ledbrook 认为这是响应式系统的一个必备特点。

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

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

  • 发布者是事件的发送方,可以向它订阅。
  • 订阅者是事件订阅方。
  • 订阅将发布者和订阅者联系起来,使订阅者可以向发布者发送信号。

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

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

2016-01-22 18:0011395
用户头像

发布了 1008 篇内容, 共 411.4 次阅读, 收获喜欢 346 次。

关注

评论 1 条评论

发布
用户头像
写的不错,真的是从设计理念和解决问题的出发点开始说才能把问题说清楚
2021-04-08 22:14
回复
没有更多了
发现更多内容

react源码解析10.commit阶段

buchila11

React

英特尔中国研究院携手南京麒麟科创园成立智能边缘计算联合研究院,首批项目公布!

科技新消息

Android C++系列:C++最佳实践1虚函数

轻口味

c++ android 4月月更

详解动静态缓存各种方式

穿过生命散发芬芳

4月月更

在线CSV转TSV工具

入门小站

工具

什么是中国企业信息化

秋去冬来春未远

数字化信息化中国文化

开启 JSON 和多模,让生态更多可能 | OceanBase 社区版 3.1.3 发版

OceanBase 数据库

OceanBase 社区版

宜搭小技巧|自动计算日期时长,3个公式帮你搞定!

一只大光圈

低代码 数字化 钉钉宜搭 宜搭

Linux驱动开发-编写VS1053芯片音频驱动

DS小龙哥

4月月更

渗透测试系列之靶机渗透

网络安全学海

网络安全 信息安全 渗透测试 WEB安全 漏洞挖掘

北京朝阳医院与英特尔中国研究院宣布合作,共同打造未来智慧急诊创新模式

科技新消息

分布式shiro权限验证

Rubble

4月日更

逐向双碳:绿色计算的误区与正确打开方式

脑极体

[Day13]-[动态规划]爬楼梯

方勇(gopher)

LeetCode 数据结构和算法

在线标准程序员计算器

入门小站

工具

从架构上详解技术(SLB,Redis,Mysql,Kafka,Clickhouse)的各类热点问题

利志分享

架构 #热点问题

linux之chsh命令

入门小站

Linux

多模块项目 mybatis mapper bean 找不到问题

Z冰红茶

领导看了我写的关闭超时订单,让我出门左转!

阿Q说代码

RabbitMQ 延时队列 4月月更 关闭订单

你还在因为数学对AI望而却步?看看这本秘籍吧!

博文视点Broadview

压力如同下雨一样具有存在的必要性,我和你交个朋友吧。

叶小鍵

当 dbt 遇见 TiDB丨高效的数据转换工具让数据分析更简单

PingCAP

动态压测模型让工作更轻松

FunTester

SeekTiger迎来新征程,STI即将登录Gate.io

BlockChain先知

jackson学习之八:常用方法注解

程序员欣宸

4月月更

如何从阿里云Code升级至Codeup | 云效

阿里云云效

阿里云 研发效能 代码 代码管理 Codeup

智能风控中台设计与落地

第四范式开发者社区

人工智能 自动化 金融 中台架构 风险控制

Android C++系列:JNI开发准则

轻口味

c++ android 4月月更

cdr2022订阅版本安装包

茶色酒

cdr2022

redis中报too many connections错误的解决

杨彦星

redis

架构训练营-作业八

默光

消息队列 训练营

响应式编程的基本概念_语言 & 开发_Jan Stenberg_InfoQ精选文章