写点什么

响应式编程的基本概念

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

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

关注

评论 1 条评论

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

区块链的前世今生(1)

抗哥

架构师第 3 课作业及学习总结

小诗

「架构师训练营第 1 期」

【薪火计划】08 - 非暴力沟通

码上生长

管理 28天写作

架构师训练营第 1 期 - 第 12 周 - 命题作业

wgl

架构师训练营第 1 期

手把手教你如何巧用Github的Action功能

flutter android 持续集成

CSS10 - 盒子模型&常用无序列表样式

Mr.Cactus

html/css

SpringBoot系列1——概述和快速入门

程序员的时光

springboot 七日更 28天写作

职业成长就是一个逐渐“变帅”的过程

L3C老司机

【Node.js】静态页面和简单的路由

德育处主任

大前端 Node 28天写作

缓存穿透,缓存击穿,缓存雪崩

en

redis 缓存穿透 缓存击穿 缓存并发

架构师训练营 1 期 - 第 十四周总结(vaik)

行之

「架构师训练营第 1 期」

谬误词典:置信度

lidaobing

随机漫步的傻瓜 28天写作 谬误词典

SafePoint 与 Stop The World 全解(基于OpenJDK 11版本)

AI乔治

Java 架构 jdk JVM

架构师第 4 课作业及学习总结

小诗

「架构师训练营第 1 期」

架构师训练营第 1 期 - 第 12 周 - 学习总结

wgl

「架构师训练营第 1 期」

28天瞎写的第二百一二天:一次删库没跑路的故事

树上

28天写作 删库

LeetCode题解:17. 电话号码的字母组合,BFS,JavaScript,详细注释

Lee Chen

算法 大前端 LeetCode

资深大牛带你了解源码!阿里内部Android笔记火爆IT圈,醍醐灌顶!

欢喜学安卓

android 程序员 面试 移动开发

【计算机内功修炼】三:一文彻底理解IO多路复用

码农的荒岛求生

epoll

MySQL中的哥哥表、妹妹字段,是什么鬼?

Java MySQL 数据库

网络工程师职业指南

意识会在哪个早晨降落——「幻想短篇1/28」

道伟

28天写作

腾讯T3面试官透露!360°深入了解Flutter,聪明人已经收藏了!

欢喜学安卓

android 程序员 面试 移动开发

jstat使用实用教程

JavaPub

Java JVM

生产环境全链路压测建设历程 24:FAQ 5、6负载均衡、如何不影响正常业务?

数列科技杨德华

28天写作

技术人小故事-团队愿景篇-第1段

Ian哥

28天写作

牛啤了!阿里技术官整理的这份《Java面试手册5000题》已经成功让数百名社招生“圆梦BATJ”

Java 编程 面试

芯片破壁者(二十四):1987战役启示录

脑极体

写在再次学习python之前-why篇

赵开忠

Python 28天写作

kill -9 导致 kafka 重启失败的惨痛经历!

AI乔治

Java kafka 架构

记一次JVM OOM 实战优化

AI乔治

Java 架构 JVM OOM

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