【Reactor】学习笔记-基本概念和Mono、Flux

Reactor基本概念和Mono、Flux

概述

JAVA8的函数式编程我们都比较熟悉,将一段对数据的操作逻辑,通过map、reduce、group、join、foreach、limit、count等算子进行表达最终得出结果,类似于Spark中提供的算子,虽然长的一样,但原理不同,而且Hadoop中也有对应的MapReduce写法,感觉也差不多的样子,现在又有了Reactor,也是一长串函数式编程的代码风格,那区别在哪里;
在这里插入图片描述
代码虽然看起来很像,有两点区别:

1、核心实现上不同,JAVA8的流式计算,通过NextItemEvalProcess的惰性求值来搞的;Spark就是基于数据+计算模型创建出对应的DAG,通过RDD执行;Hadoop的MR也是自己实现的分组聚合逻辑;Reactor是今天我们要了解的部分;
2、从实现的模式上看,一种是Pull-based,一种是Push-based,不进行赘述

聚焦到Reactor上,先尝试用一张图说一下自己对周边技术栈的关系,理清大体脉络:
在这里插入图片描述

几个观点:

  1. 响应式编程语法上集成JAVA8的流式编程,也只是语法上集成
  2. Reactive-programming是编程范式,不是具体的一个组件实现集合
  3. RXJava、Reactor是实现Reactive-programming的两种实现集合
  4. 全称SpringWebflux,对应的技术栈就是SpringBoot,HTTP容器不同,tomcat和netty
  5. Flux/Mono在webflux中使用

Reactor的简介

Reactor是一种JAVA非阻塞的响应式编程,同时具备背压的能力,天然集成JAVA8的函数式编程,提供了Flux/Mono这两种Reactive-programming的实现;Reactor也支持异步的Reactor-Netty项目,在HTTP/TCP/UDP等多种协议下均支持背压;
在JAVA8上的Reactor的依赖是:org.reactivestreams:reactive-streams:1.0.3

Reactor是一种Reactor-Programming的范式实现,关于Ractive-Programming的说明可以了解一下:

Reactive programming is an asynchronous programming paradigm concerned
with data streams and the propagation of change. This means that it
becomes possible to express static (e.g. arrays) or dynamic (e.g.
event emitters) data streams with ea

  • 2
    点赞
  • 14
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值