QCon北京「鸿蒙专场」火热来袭!即刻报名,与创新同行~ 了解详情
写点什么

响应式编程的基本概念

  • 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:0011352
用户头像

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

关注

评论 1 条评论

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

Homework01

王欣欣

「架构实战营」

8.《重学 JAVA》-- 数组

杨鹏Geek

Java 25 周年 28天写作 12月日更

[架构实战营] 模块一作业:微信业务架构与学生管理系统

Geek_0ed632

「架构实战营」

故事:“麻省理工已失控”,他的网站被黑了

喀拉峻

网络安全

前端异常监控系统Sentry的基本使用

AR7

Vue sentry

在线SQL(Insert/Update)语句转JSON工具

入门小站

工具

架构实战营-第4期-模块一作业

Evan

「架构实战营」

活动预告|Feature Store Meetup

第四范式开发者社区

OpenMLDB Feature Store

面试吹牛B,入职就倒霉了

喵叔

28天写作 12月日更

作业

AUV

「架构实战营」

威廉古堡:用宜搭个性化定制企业应用,提升5倍运营效率

一只大光圈

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

架构实战营模块一作业

lchx08

「架构实战营」

Helm 介绍

xcbeyond

Helm 28天写作 12月日更

数据大体系(一)——数据纵向分层

圣迪

sql 数据仓库 数仓 DW

[Pulsar] Consumer 确认消息原理

Zike Yang

Apache Pulsar 12月日更

盘点JavaScript运行机制:简单类型和复杂类型

你好bk

JavaScript 大前端 字符串 作用域 12月日更

微信业务架构图

DENG.S

Keep Going

Nydia

架构实战营 第一周作业

姬凌伟

架构实战营模块一作业

Poplar

「架构实战营」

架构实战营-模块1-作业

CH

架构实战营

为什么private方法加了@Transactional,事务也没有生效?

JavaEdge

12月日更

你了解集合?那你倒是给我说说啊!【2】

XiaoLin_Java

12月日更

聊聊 Kafka:编译 Kafka 源码并搭建源码环境

老周聊架构

签约计划第二季

Gbase8a学习笔记-学习环境安装

南渡北归

数据库 gbase8a

架构训练营 -4- 模块一作业

glenny

「架构实战营」

电商系统微服务架构

AHUI

「架构实战营」

39 K8S之Flannel网络插件

穿过生命散发芬芳

k8s 28天写作 12月日更

报表功能升级|宜搭新增的这4项图表组件太好用了吧

一只大光圈

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

Week01 Summerize

王欣欣

总结

钉钉宜搭招募爱心极客:用低代码传递爱与温暖

一只大光圈

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

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