什么是响应式编程(未完待续)

公司最近想使用响应式技术的新开发技术架构

后端:WebFlux+R2BDC+WebClient+DatabaseClient+Reactive Transaction+Reactive Redis

什么是响应式编程?

响应式编程(reactive programming)是一种基于数据流(data stream)和变化传递(propagation of change)的声明式(declarative)的编程范式。

怎么理解变化传递(propagation of change)?

在命令式编程(我们的日常编程模式)下,式子a=b+c,这就意味着a的值是由b和c计算出来的。如果b或者c后续有变化,不会影响到a的值。

在响应式编程下,式子a:=b+c,这就意味着a的值是由b和c计算出来的。但如果b或者c的值后续有变化,会影响到a的值。

怎么理解数据流和声明式呢?

本来数据是我们自行处理的,后来我们把要处理的数据抽象出来(变成了数据流),然后通过API去处理数据流中的数据(是声明式的)。

比如下面的代码;将数组中的数据变成数据流,通过显式声明调用.sum()来处理数据流中的数据,得到最终的结果:

响应式编程的场景应用

(1)比如一个日志监控系统,我们的前端页面将不再需要通过“命令式”的轮询的方式不断向服务器请求数据然后进行更新,而是在建立好通道之后,数据流从系统源源不断流向页面,从而展现实时的指标变化曲线;

(2)再比如一个社交平台,朋友的动态、点赞和留言不是手动刷出来的,而是当后台数据变化的时候自动体现到界面上的。

异步非阻塞

响应式编程离不开异步非阻塞,响应式编程它是异步的,也可以理解成变化传递它是异步执行的。

JDK8 Stream流是同步的,它就不适合用于响应式编程,JDK9 已经支持响应式流了。

JDK9 Reactive

好文/参考

WebFlux  

https://zhuanlan.zhihu.com/p/92460075

R2BDC

https://www.codercto.com/a/44252.html

原文地址:https://www.cnblogs.com/liaowenhui/p/13836296.html