当前位置: 首页 > 工具软件 > Reactor-Guice > 使用案例 >

Reactive Programing(1)-reactor介绍

霍永年
2023-12-01

What is Reactor

Reactor是JVM的完全无阻塞的响应式编程基础,具有高效的需求管理。它直接与Java 8功能的API,特别是整合CompletableFuture,Stream和 Duration。它提供可组合的异步序列API Flux(用于[N]元素)和 Mono(用于[0 | 1]元素),广泛实现[Reactive Streams](https://www.reactive-streams.org/)规范。
Reactor还支持与reactor-netty项目的非阻塞进程间通信 。适用于微服务架构,Reactor Netty为HTTP(包括Websockets),TCP和UDP提供背压就绪的网络引擎。完全支持无功编码和解码。

Reactive Programming响应式编程

主要有两个:Reactor和RxJava

Why is Reactor

提高效率的方式
并行化:使用更多线程和更多硬件资源。
异步化:基于现有的资源来提高执行效率。
多线程问题:线程上下文切换
异步化
回调
CompletableFuture 异步回调 声明式
无法解决的问题-流量控制
Java Stream是一种同步API。
Java Stream不具备完善的对数据流的流量控制的能力

How Reactor

Backpressure
能够向上游反馈流量请求的机制
反应式编程是一种涉及数据流和变化传播的异步编程范例。这意味着可以通过所采用的编程语言轻松地表达静态(例如阵列)或动态(例如事件发射器)数据流。
迭代器是基于拉的,但是反应流是基于推的。
响应式的核心特点之一:变化传递(propagation of change)
一种生产者只负责生成并发出数据/事件,消费者来监听并负责定义如何处理数据/事件的变化传递方式。
响应式的另一个核心特点:基于数据流(data stream)。
命令式是面向过程的,声明式是面向结构的。
响应式编程(reactive programming)是一种基于数据流(data stream)和变化传递(propagation of change)的声明式(declarative)的编程范式。
具备“异步非阻塞”特性和“流量控制”能力的数据流,我们称之为响应式流(Reactive Stream)。
jdk9中 java.util.concurrent.Flow。
在响应式流中,数据流的发出者叫做Publisher,监听者叫做Subscriber。
响应式流的两个核心特点:异步非阻塞,以及基于“回压”机制的流量控制。
 类似资料: