一起养成写作习惯!这是我参与「掘金日新计划 · 4 月更文挑战」的第2天,点击查看活动详情。
今天我们来了解响应式编程,对于响应式编程很多资料写的不系统、不简单、所以我决定写一篇自己对响应式编程的理解,希望对大家有所帮助。
响应式流
响应式流是我们首先要了解的基础概念,因为这会对我们后续更好的理解响应式编程提供帮助,那到底什么是响应式流呢?我们可以这样了解,任何系统都有输入和输出,我们可以把流式处理过程看成是电动扶梯,想象一下:我们每天出地铁,乘坐电梯到达出站口。
我们每个人都可以看成是数据,每趟地铁下来的人群就是数据流。
数据流就是不断的产生实时数据,其原地址可位于数据库、网站或者某个文件中,我们不关心流的终点是何方,我们只关心,他们是否交了过道费。
更通俗一点:比如我们在掘金发表文章,然后掘金需要对文章的内容进行审核,每一篇文章进来就是一个数据流。
异步:整个数据处理过程是异步的,就是说审核你这篇文章的时候,你还可以继续发表文章,不会卡死在审核。
非阻塞:整个数据处理的流程是不阻塞的。
背压:非常大,且快速的数据流
然后我们对数据流进行处理就形成了响应式流了。
响应式编程
🆗,那我们的响应式编程就是应这样的情形而生的,实现响应式的编程方式有很多,这里主要介绍rx java。
我们需要清楚以下几个概念:
- 元素:数据流的数据
- 发布者:数据流的起点,也叫数据流的入口
- 订阅者:数据流的终点,也就是数据流的出口
- 处理者:发布和订阅者之前,有很多的处理
整个数据处理的流程是非常丝滑的,类似于下面的流程图:
当然也可能看起来非常复杂,比如多对多的情况。