当前位置: 首页 > news >正文

[3-02-03].第03章:编程模式 - 阻塞式编程与响应式编程对比

SpringBoot学习大纲


一、SpringBoot中的两种开发模式:

  • 基于Spring5重大升级,在SpringBoot中的出现了软件开发的两套解决方案
    • 方案1是:响应式编程
    • 方案2是:基于Servlet的开发(阻塞式编程)
      在这里插入图片描述

二、两种模式说明:

SpringBoot2中基于Servlet的编程模式

基于Servlet的SpringBoot2编程模式,是同步阻塞的,意思就是一个请求过来就会分配一个线程,当大量请求时,tomcat就分配大量的线程,然后交给CPU去执行,这样就可能出现很多问题,如

  • 某个CPU分配了很多的线程 ,导致负载拉满,这样就会导致系统卡顿
  • 某个线程在执行过程中,可能需要等待一些数据,这时候,此线程就会阻塞,那么就会导致某CPU空闲状态,且其他线程又没有使用,那这样就会导致CPU资源浪费
  • 所以说基于Servlet的SpringBoot2开发高并发系统时,需要做较多的架构设计
    在这里插入图片描述

SpringBoot2中响应式编程模式:

a.说明:

对于响应式编程,其底层是基于Reactive Streams规范,搭配上netty、Servlet3.1以上版本这些支持异步的容器,再搭配上一系列的响应式技术栈,如WebFlux、SpringSecurity Reactive等,这样就可以更充分的挖掘多核CPU的能力,实现去处理大量的并发的目的

  • 如下图所示,当大量请求过来的时候,响应式编程的底层会基于缓冲机制,再加上调度器进行工作。当大量请求过来的时候,先把请求放在缓冲区,然后由调度器负责给CPU核心进行调度, 每个核心跑的线程都比较少,但是一旦某线程处于等待时间,cpu会把此线程先暂停掉,去执行其他线程,一旦等待的数据过来的时候,此线程会被唤醒。这样就可以把cpu充分利用

在这里插入图片描述


b.适用场景:

  • 适用于高并发、高吞吐量场景

c.响应式技术栈:

在这里插入图片描述

http://www.dtcms.com/a/286120.html

相关文章:

  • Python爬虫入门到实战(3)-对网页进行操作
  • 用AME获取免费SSL证书
  • 免费PDF文件格式转换工具
  • LeafletJS 与 React:构建现代地图应用
  • leetcode2_135.分发糖果
  • 信息安全性测试:渗透测试、漏洞扫描与代码审计全解析
  • 基于ECDH的隐私求交(PSI)技术发展历程
  • 进阶向:智能图像增强系统
  • 项目优化之开机自启动
  • kubernetes pod 深度解析
  • 持续同调文章阅读(四)
  • Selenium 攻略:从元素操作到 WebDriver 实战
  • 基于Spring Boot的农村农产品销售系统设计与实现
  • SGLang 推理框架深度解析:请求的调度与生命周期
  • 客户知识共享门户的核心价值:提升效率与客户体验
  • 网页的性能优化,以及具体的应用场景
  • 安卓页面卡顿测试方案详解
  • FLTK UI窗口关闭时延时卡顿问题全流程分析与优化实战
  • pip用国内的源 + Hugging Face 官方国内镜像
  • 基于华为openEuler系统安装DailyNotes个人笔记管理工具
  • LP-MSPM0G3507学习--03时钟配置
  • 如何阅读Spring源码
  • 脚手架本地link标准流程
  • 25数据库三级备考自整理笔记
  • Linux文件传输工具:lrzsz
  • C#测试调用ServiceController类查询及操作服务的基本用法
  • Python数据类型探秘:解锁编程世界的魔法钥匙
  • Vue (Official) v3.0.2 新特性 为非类npm环境引入 globalTypesPath 选项
  • 【爬虫】03 - 爬虫的基本数据存储
  • DolphinDB × Vanna:构建支持自然语言查询的企业级 RAG 系统