咱们先聊下什么是Reactive,官网给的定义如下:
Reactive systems have certain characteristics that make them ideal for low-latency, high-throughput workloads. Project Reactor and the Spring portfolio work together to enable developers to build enterprise-grade reactive systems that are responsive, resilient, elastic, and message-driven.
反应式系统具有某些特性,使其成为低延迟、高吞吐量工作负载的理想选择。 Project Reactor 和 Spring 产品组合协同工作,使开发人员能够构建具有响应性、弹性、弹性和消息驱动的企业级反应式系统。
What is reactive processing?
响应式处理是一种范例,它使开发人员能够构建可以处理背压(流控制)的非阻塞、异步应用程序。
Why use reactive processing?
Reactive systems better utilize modern processors. Also, the inclusion of back-pressure in reactive programming ensures better resilience between decoupled components.
反应式系统更好地利用现代处理器。 此外,在反应式编程中包含背压可确保解耦组件之间具有更好的弹性。
什么是响应式编程(Reactive Programming)?
维基百科上的定义是:reactive programming is a declarative programming paradigm concerned with data streams and the propagation of change
响应式编程(reactive programming)是一种基于数据流(data stream)和变化传递(propagation of change)的声明式(declarative)的编程范式
声明式(declarative): Lambda 表达式
Lambda表达式创建线程的时候,并不关心接口名,方法名,参数名。只关注他的参数类型,参数个数,返回值。
jdk:
表格中的一元接口表示只有一个入参,二元接口表示有两个入参
数据流:Stream:
Reactive Streams 接口:
Publisher:负责发布类型为T的元素,并为订阅者提供连接到它的订阅方法
Subscriber:连接Publisher,通过onSubscribe接收确认,然后通过onNext接收数据,通过onError和onComplete回调和返回其他信号
Subscription:代表发布者和订阅者之间的链接,允许通过请求对发布者进行背压,或者取消终止链接
Processor:在单个接口中结合了Publisher和Subscriber的功能