返回顶部
首页 > 资讯 > 后端开发 > Python >ReactiveProgramming入门概念详解
  • 428
分享到

ReactiveProgramming入门概念详解

2024-04-02 19:04:59 428人浏览 安东尼

Python 官方文档:入门教程 => 点击学习

摘要

目录正文Reactive ProgrammingReactive Streamsspring ReactorReactive Streams、Reactor和WEBFlux 区别?正

正文

为了应对高并发环境下的服务端编程,xx提出了一个实现异步编程的方案 -Reactive Programming,中文名称反应式编程。反应式编程(reactive programming)并不是一个新的概念,也不是一个新的技术,很早之前就被提出来了。

先从几个概念入门说起:

  • Reactive Programming
  • Reactive Streams
  • Reactor
  • Webflux

Reactive Programming

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

响应式编程使用三个核心概念:数据流,变化传递和异步观察。

换句话说:使用异步数据流进行编程,这意味着可以在编程语言中很方便地表达静态或动态的数据流,而相关的计算模型会自动将变化的值通过数据流进行传播。反应式编程提高了代码的抽象级别,可以只关注定义了业务逻辑的那些相互依赖的事件。

Reactive Streams

Reactive Streams :The purpose of Reactive Streams is to provide a standard for asynchronous stream processing with non-blocking backpressure。

Reactive Streams 的目的是为具有非阻塞背压的异步流处理提供标准。

对于Java程序员,Reactive Streams是一个api。Reactive Streams为我们提供了Java中的Reactive Programming的通用API。

Reactive Streams API的范围是找到一组最小的接口,方法和协议,这些接口,方法和协议将描述必要的操作和实体,从而实现具有非阻塞背压的异步数据流。

Reactive Streams API中如下四个接口:(后面文章详细)

  • Publisher 发布者(生产者)
public interface Publisher<T> {    
    public void subscribe(Subscriber<? super T> s);
}
  • Subscriber订阅者(消费者)
public interface Subscriber<T> {    
    public void onSubscribe(Subscription s);    
    public void onNext(T t);    
    public void onError(Throwable t);    
    public void onComplete();
}
  • Subscription 订阅
public interface Subscription {   
    public void request(long n);    
    public void cancel();
}
  • Processor 处理者
public interface Processor<T, R> extends Subscriber<T>, Publisher<R> {
}

Spring Reactor

Reactor 是第四代响应式库,基于Reactive Streams规范,用于在 JVM 上构建非阻塞应用程序。是Spring提供的非阻塞式响应式编程框架,实现了Reactive Streams规范而已

  • reactor-core: Reactor 完全无阻塞,并提供高效的管理,它直接与Java的函数式API,CompletableFuture,Stream配合使用
    • [0|1| N]序列:Reactore提供了两个响应式和可组合的API,Flux 和 Mono。

Flux 表示的是包含 0 到 N 个元素的异步序列。在该序列中可以包含三种不同类型的消息通知:正常的包含元素的消息、序列结束的消息和序列出错的消息。当消息通知产生时,订阅者中对应的方法 onNext(), onComplete()和 onError()会被调用。Mono 表示的是包含 0 或者 1 个元素的异步序列。该序列中同样可以包含与 Flux 相同的三种类型的消息通知。Flux 和 Mono 之间可以进行转换。对一个 Flux 序列进行计数操作,得到的结果是一个 Mono对象。把两个 Mono 序列合并在一起,得到的是一个 Flux 对象。

  • webflux

Spring 产品组合提供了两个并行堆栈。 一种是基于带有 Spring mvc 和 Spring Data 结构的 Servlet API。 另一个是完全反应式堆栈,它利用了 Spring WebFlux 和 Spring Data 的反应式存储库。 如下技术栈:Spring官方提供

数据库:以一种反应的方式访问和处理数据是非常重要的。mongoDBRedis和Cassandra都有原生的Spring数据响应支持。许多关系数据库(Postgres、Microsoft SQL ServerMysql、H2和GoogleSpanner)通过R2DBC提供了反应性支持。

在消息传递的世界中,spring cloud Stream还支持对RabbitMQkafka等平台的反应性访问。

Reactive Streams、Reactor和WebFlux 区别?

上面介绍了反应式编程的一些概念。三者的关系:

  • Reactive Streams 是一套反应式编程标准和规范;
  • Reactor 是基于 Reactive Streams 一套反应式编程框架;
  • WebFlux 以 Reactor 为基础,实现 Web 领域的反应式编程框架。

参考:

  • Reactive Streams :GitHub.com/reactive-st…
  • jdk-reactive:www.reactive-streams.org/
  • reactor官方地址: projectreactor.io/

以上就是Reactive Programming入门概念详解的详细内容,更多关于Reactive Programming入门的资料请关注编程网其它相关文章!

--结束END--

本文标题: ReactiveProgramming入门概念详解

本文链接: https://lsjlt.com/news/168625.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

猜你喜欢
  • ReactiveProgramming入门概念详解
    目录正文Reactive ProgrammingReactive StreamsSpring ReactorReactive Streams、Reactor和WebFlux 区别?正...
    99+
    2024-04-02
  • elk入门概念详解
    开始第一步我们现在开始进行一个简单教程,它涵盖了一些基本的概念介绍,比如索引(indexing)、搜索(search)以及聚合(aggregations)。通过这个教程,我们可以让你对Elasticsear...
    99+
    2024-04-02
  • 新手入门Mysql--概念
    1. 是什么? MySQL 是最流行的关系型数据库管理系统,在 WEB 应用方面 MySQL 是最好的 RDBMS(Relational Database Management S...
    99+
    2024-04-02
  • 网络基础入门(网络基础概念详解)
      本篇文章主要是对网络初学的概念进行解释,可以让你对网络有一个大概整体的认知。 文章目录 一、简单认识网络 1、1 什么是网络 1、2 网络分类  二、网络模型 2、1OSI七层模型 2、1、1 简单认识协议 2...
    99+
    2023-10-03
    网络
  • 详解SpringMVC中拦截器的概念及入门案例
    目录一、拦截器概念二、拦截器入门案例一、拦截器概念 拦截器(Interceptor)是一种动态拦截方法调用的机制,在SpringMVC中动态拦截控制器方法的执行 作用: 在指定的方法...
    99+
    2024-04-02
  • 音视频基本概念和FFmpeg的简单入门教程详解
    目录写在前面基本概念容器/文件(Conainer/File):媒体流(Stream):数据帧/数据包(Frame/Packet):编解码器(Codec):复用(mux):解复用(mu...
    99+
    2024-04-02
  • k8s入门集群组件介绍及概念理解
    目录master节点:集群的控制中枢node节点:工作节点,也叫worker节点kube-system命名空间:系统组件podk8s是谷歌以Borg为前身,基于谷歌15年生产环境经验...
    99+
    2024-04-02
  • C#Marshal类基本概念和入门实例讲解
    目录C# Marshal类基本概念及入门C# Marshal.Copy实现非托管指针和数组之间的转换挑战写文件读文件总结C# Marshal类基本概念及入门 marshal:直译为...
    99+
    2023-02-26
    C# Marshal类 Marshal类基本概念 Marshal类入门
  • 快速入门系列TSQL基础概念
    T-SQL(Transact-SQL)是一种用于管理和操作关系型数据库的编程语言,在Microsoft SQL Server数据库中...
    99+
    2023-09-28
    TSQL
  • MySQL 事务概念与用法深入详解
    本文实例讲述了MySQL 事务概念与用法。分享给大家供大家参考,具体如下: 事务的概念 MySQL事务是一个或者多个的数据库操作,要么全部执行成功,要么全部失败回滚。 事务是通过事务日志来实现的,事务日志包括:red...
    99+
    2022-05-25
    MySQL 事务
  • 数据库入门必知的基本概念
    数据库的基本概念: 动态网站开发离不开数据存储,数据存储离不开数据库,数据库技术是计算机技术中的重要部分,在软件开发等领域起着至关重要的作用。所谓数据库,可以理解为用来存储信息的仓库。而信息就是要存储下来的...
    99+
    2024-04-02
  • JAVA基本概念详解
    目录一、java发展史二、Java跨平台二、JRE和JDK三、下载JDK四、常用的DOS命令五、配置Path环境变量六、第一个程序六、bug(甲壳虫)七、Notepad八、注释九、关...
    99+
    2024-04-02
  • nodejs入门教程一:概念与用法简介
    本文实例讲述了nodejs概念与用法。分享给大家供大家参考,具体如下: 一. nodejs 的特点 1.nodejs 是一个javaScript 的运行平台,采用了Google Chrome浏览器的V8引擎...
    99+
    2022-06-04
    入门教程 概念 简介
  • 一篇文章带你入门Java基本概念
    目录Java基本概念一、JRE(Java运行时环境)二、JDK(Java开发工具)三、Java源代码文件(.class)四、Java字节码文件(.java)五、Java虚拟机(JVM...
    99+
    2024-04-02
  • 【网络】计算机网络基础概念入门
    🍁 博主 "开着拖拉机回家"带您 Go to New World.✨🍁 🦄 个人主页——🎐个人主页 🎐✨🍁 🪁...
    99+
    2023-10-19
    计算机网络 OSI网络模型 TCP/IP模型 MAC帧地址 套接字 虚拟网络互联 网络分类
  • H5混合开发手机WebApp入门:概念篇
    如果你开始学习手机 App 开发,就一定会听到 H5 这个词。它是目前的主流开发技术之一,容易上手,开发周期短、成本低、兼容传统 Web 开发。但是,很少有文章详细介绍,H5 到底是...
    99+
    2022-12-03
    H5开发app Web App
  • ZooKeeper入门教程一简介与核心概念
    目录1、ZooKeeper介绍与核心概念1.1 简介1.2分布式系统面临的问题1、通过网络进行信息共享2、通过共享存储1.3 ZooKeeper如何解决分布式系统面临的问题1.4 z...
    99+
    2024-04-02
  • J2ME与JVM的概念详解
    这篇文章主要介绍“J2ME与JVM的概念详解”,在日常操作中,相信很多人在J2ME与JVM的概念详解问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”J2ME与JVM的概念详解”...
    99+
    2024-04-02
  • node.js http模块概念详解
    目录node.js-http模块服务器相关概念什么是 http 模块http模块的作用创建最基本的web服务器创建web 服务器的步骤req请求对象res 响应对象中文乱码问题nod...
    99+
    2024-04-02
  • SpringBoot零基础入门之基本操作与概念
    目录1.什么是Spring Boot2.Spring Boot优点3.Spring Boot 项目创建3.1 使用Idea 创建3.2 Spring Boot 项目3.3 启动并验证...
    99+
    2024-04-02
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作