面向小白的响应式编程初体验

135 阅读2分钟

一起养成写作习惯!这是我参与「掘金日新计划 · 4 月更文挑战」的第2天,点击查看活动详情

今天我们来了解响应式编程,对于响应式编程很多资料写的不系统、不简单、所以我决定写一篇自己对响应式编程的理解,希望对大家有所帮助。

响应式流

响应式流是我们首先要了解的基础概念,因为这会对我们后续更好的理解响应式编程提供帮助,那到底什么是响应式流呢?我们可以这样了解,任何系统都有输入和输出,我们可以把流式处理过程看成是电动扶梯,想象一下:我们每天出地铁,乘坐电梯到达出站口。

我们每个人都可以看成是数据,每趟地铁下来的人群就是数据流

数据流就是不断的产生实时数据,其原地址可位于数据库、网站或者某个文件中,我们不关心流的终点是何方,我们只关心,他们是否交了过道费。

更通俗一点:比如我们在掘金发表文章,然后掘金需要对文章的内容进行审核,每一篇文章进来就是一个数据流。

异步:整个数据处理过程是异步的,就是说审核你这篇文章的时候,你还可以继续发表文章,不会卡死在审核。

非阻塞:整个数据处理的流程是不阻塞的。

背压:非常大,且快速的数据流

然后我们对数据流进行处理就形成了响应式流了。

响应式编程

🆗,那我们的响应式编程就是应这样的情形而生的,实现响应式的编程方式有很多,这里主要介绍rx java。

我们需要清楚以下几个概念:

  • 元素:数据流的数据
  • 发布者:数据流的起点,也叫数据流的入口
  • 订阅者:数据流的终点,也就是数据流的出口
  • 处理者:发布和订阅者之前,有很多的处理

整个数据处理的流程是非常丝滑的,类似于下面的流程图:

image.png

当然也可能看起来非常复杂,比如多对多的情况。