• WebFlux 详解


    今天我们开始来学习下 WebFlux,为什么突然要学这个东西?

    因为我之前是想学习 Spring Cloud Gateway 来着,然后发现它是基于 Spring5.0+SpringBoot2.0+WebFlux等技术开发的。所以学之前才要来简单了解下 WebFlux 技术。

    然后要学习 WebFlux 时我发现又需要 Java 8 中的函数式编程、Stream 流等技术作为前置知识。环环相扣啊,套娃一样。

    所以前面还有两篇学习的文章:来系统学习下 lambda 表达式吧来一起学习下 Java 8 的 Stream 流

    我只是想学下 Spring Cloud Gateway 而已,作为前置知识,WebFlux 我暂时也不打算深深的研究了,就先简单学习下吧。

    话说这么多,开始今天的学习吧。

    什么是 WebFlux

    Spring Framework 中包含的原始 Web 框架 Spring Web MVC 是专门为 Servlet API 和 Servlet 容器构建的。反应式堆栈 Web 框架 Spring WebFlux 是在 5.0 版的后期添加的。它是完全非阻塞的,支持反应式流(Reactive Stream)背压,并在Netty,Undertow和Servlet 3.1 +容器等服务器上运行。

    image.png

    上面的文字和图片都是来自官网的。从中我们可以大概知道 Spring WebFlux 是对标 Spring MVC 的。

    Spring WebFlux 是一个异步非阻塞式 IO 模型,通过少量的容器线程就可以支撑大量的并发访问。底层使用的是 Netty 容器,这点也和传统的 SpringMVC 不一样,SpringMVC 是基于 Servlet 的。

    接口的响应时间并不会因为使用了 WebFlux 而缩短,服务端的处理结果还是得由 worker 线程处理完成之后再返回给前端。

    反应式库

    1. Reactive Stream

    相信你应该注意到上面的一个名词 反应式流(Reactive Stream)。是什么意思呐?

    我们先看下这个概念:
    反应式编程(Reactive Programming) ,这是微软为了应对高并发环境下的服务端编程,提出的一个实现异步编程的方案。

    反应式流(Reactive Stream) 就是反应式编程相关的规范,在 Java 平台上,由Netflix(开发了 RxJava)、TypeSafe(开发了 ScalaAkka)、Pivatol(开发了 SpringReactor)共同制定。

    它由以下几个组件组成:

    • 发布者:发布元素到订阅者
    • 订阅者:消费元素
    • 订阅:在发布者中,订阅被创建时,将与订阅者共享
    • 处理器:发布者与订阅者之间处理数据

    2. Reactor

    Reactive Stream 是一套反应式编程的规范,但作为应用程序 API,应用程序肯定还是需要一个更高级、更丰富的功能 API 来编写异步逻辑。这就是 反应式库 所扮演的角色。

    Reactor 框架是 Pivotal 基于 Reactive Programming 思想实现的。它符合 Reactive Streams 规范。它提供了[这里是代码023]

  • 相关阅读:
    简单了解JDBC相关操作
    消息队列Kafka从入门到高级应用
    MySQL — VARCHAR 长度截断问题
    官宣!软考机考模拟练习平台于10月16日至11月3日开放
    【slam十四讲第二版】【课本例题代码向】【第十讲~后端2】
    3D Gaussian Splatting Windows安装
    宏的优缺点&&宏的替代技术
    csp初赛总结 & 那些年编程走过的坑 & 初高中信竞常考语法算法点
    [附源码]Python计算机毕业设计SSM考研信息共享博客系统(程序+LW)
    Linux 命令(164)—— who 命令
  • 原文地址:https://blog.csdn.net/web18534207985/article/details/126793957