初识reactor响应式编程

起源

Reactor响应式编程起源于数据流和变化的传播概念,其核心概念是由底层的执行模型通过数据流自动传播变化。这种编程范式最早由.NET平台上的Reactive Extensions (Rx)库实现,后来迁移到Java平台后,产生了著名的RxJava库,并衍生出Reactor等响应式编程库。Reactor是Pivotal旗下的项目,与Spring框架有着紧密的联系,是Spring WebFlux等响应式模块的“御用”响应式流。

应用场景

Reactor响应式编程的用途广泛,主要应用场景包括:

Web应用程序:在处理高并发请求时,Reactor提供了一种基于事件的模型,能更高效地处理并发请求,并在I/O操作上提高效率。
数据库查询:Reactor可用于异步数据库查询,以更好地处理高并发负载,显著提高性能和可伸缩性。
网络编程:特别是在处理高并发连接时,Reactor的反应式编程模型能更好地处理连接和数据传输,提高网络应用程序的性能和可伸缩性。

优点

Reactor响应式编程的优点主要体现在以下几个方面:
异步非阻塞:Reactor提供了一种异步、非阻塞的编程模型,使得应用程序能够更高效地处理事件驱动的场景,避免了传统同步阻塞模型中的线程等待和资源浪费。
高性能:通过数据流自动传播变化,Reactor能够减少不必要的计算和资源消耗,从而提高应用程序的性能。
可伸缩性:Reactor的响应式编程模型使得应用程序能够更好地处理高并发场景,轻松应对流量增长带来的挑战。
简洁易用:Reactor提供了流畅的API和使用lambdas的便利,使得开发者能够更简洁地编写代码,同时处理同步或异步操作,对数据进行各种转换。
总的来说,Reactor响应式编程是一种高效、高性能、可伸缩的编程范式,适用于处理各种事件驱动的应用程序场景。

Project Reactor核心接口

Reactor项目核心为reactor-core,一个基于Java8的响应式流标准实现,实现了reactive streams标准。

reactive streams标准核心接口有四个:

Publisher
Subscriber
Subscription
Processor<T,R>
其中最重要的接口为Publisher,代表了一个响应式的流。
Publisher核心实现为Flux和Mono。

Flux

Flux代表了一个可以返回0…N个元素的响应式流。
在这里插入图片描述

该流起始于subscribe信号,根据request信号持续返回数据,结束于completion信号或者error信号。

Mono

Mono 也是标准的Publisher的实现,代表了一个可以返回0或1个元素的数据流。
在这里插入图片描述
该流接收到onComplete时返回一个元素并结束,接收到onError信号时返回0个元素并结束。

Mono可以用于表示无数据返回的异步流程,如等同于Runnable的概念,此时可以使用Mono。

参考文献

Project Reactor学习(1)–核心接口简介
:https://zhuanlan.zhihu.com/p/35964846
Reactor 3 Reference Guide:https://projectreactor.io/docs/core/release/reference/#flux

  • 2
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 2
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值