码农知识堂 - 1000bd
  •   Python
  •   PHP
  •   JS/TS
  •   JAVA
  •   C/C++
  •   C#
  •   GO
  •   Kotlin
  •   Swift
  • 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(开发了 Scala、Akka)、Pivatol(开发了 Spring、Reactor)共同制定。

    它由以下几个组件组成:

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

    2. Reactor

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

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

  • 相关阅读:
    “熊猫视图”.Net图形控件功能介绍 [十二]:图像图元
    await 关键字在 async 函数中确实表现出“等待”的效果,那异步的含义呢,异步指整个不影响主进程
    【读书笔记】信息架构:超越Web设计-第二章
    LeetCode中等题之统计一个圆中点的数目
    Arduino IDE + Esp32 Cam + 实现视频流 + 开发环境部署
    自定义MVC增查
    高级篇之ENC2-V2编码器的RTSP另一个妙用(长地址转换为短地址)
    第十四届蓝桥杯(web应用开发)模拟赛2期 -大学组
    js 数组根据某个字段去重
    [操作系统笔记]处理机调度
  • 原文地址:https://blog.csdn.net/web18534207985/article/details/126793957
  • 最新文章
  • 沪漂五周年了:我越来越迷茫了
    Agentic Skill Routing 实战:别再把所有 Skill 塞进 AI Agent 上下文
    MySQL-Seconds_behind_master的精度误差
    [MAF预定义ChatClient中间件-03]CachingChatClient——利用缓存省钱省时间
    AI的至暗历史:从万众期待到被政府撤资,AI的两次死亡徘徊
    Agent OS :五种驯服不确定性的范式
    PortSwigger SQL注入LAB11
    数据库即时编译JIT
    [Begin]AI Learn Data Day 0
    深度学习进阶(二十七)现代 LLM 的核心架构设计其二:SwiGLU
  • 热门文章
  • 十款代码表白小特效 一个比一个浪漫 赶紧收藏起来吧!!!
    奉劝各位学弟学妹们,该打造你的技术影响力了!
    五年了,我在 CSDN 的两个一百万。
    Java俄罗斯方块,老程序员花了一个周末,连接中学年代!
    面试官都震惊,你这网络基础可以啊!
    你真的会用百度吗?我不信 — 那些不为人知的搜索引擎语法
    心情不好的时候,用 Python 画棵樱花树送给自己吧
    通宵一晚做出来的一款类似CS的第一人称射击游戏Demo!原来做游戏也不是很难,连憨憨学妹都学会了!
    13 万字 C 语言从入门到精通保姆级教程2021 年版
    10行代码集2000张美女图,Python爬虫120例,再上征途
小工具 小游戏
Copyright © 2022 侵权请联系2656653265@qq.com    京ICP备2022015340号-1

京公网安备 11010502049817号