WebFlux简单测试

一、介绍

响应式的web框架,不同于传统的WebMVC,WebFlux其内部使用Netty,基于异步和事件驱动,用少量Loop线程处理request、response io操作,而业务中阻塞的操作交由Work线程处理。总的来说客户端感知(响应时间)没什么差别,但是服务器端线程数能减少不少,适合网关这种io密集型服务。

二、测试

测试用的windows系统,8核16线程cpu,1s内1000个请求(tomcat默认上限200线程),接口没考虑延迟

  • WebFlux:

在这里插入图片描述在这里插入图片描述在这里插入图片描述

  • WebMVC

在这里插入图片描述在这里插入图片描述在这里插入图片描述

三、大概聊聊

大致测试了下,虽然肯定是不全面的,所以后续又做了很多测试,就总结了下。
WebFlux这边,请求进来后,开了16个parallel线程,16个reactor线程,后续常驻内存,工作方式就是Netty那套,相当于并行处理请求,适合网关这种io密集型。
WebMVC那边,请求进来后,tomcat开了200个线程,由于每个线程都是持续等待,相当于线性处理请求,所以并发数高的时候,请求耗时长(无用等待),并且线程不是常驻内存,峰值过后,线程数维持在10左右,个人觉得由于WebFlux学习成本高,除了网关,还是都用WebMVC吧,必要时加集群。
SpringCloudGateway有集成WebMVC,通过RouteLocatorBuilder构建路由
在这里插入图片描述在这里插入图片描述
然后有请求来了,DispatcherHandler会找到对应handler,
在这里插入图片描述适配器模式运行。
在这里插入图片描述

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/474142.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

探索【注解】、【反射】、【动态代理】,深入掌握高级 Java 开发技术

文章目录 Java注解1.注解基础2.注解原理 反射1.Class对象的获取1.基础公共类1.1.Object > getClass()1.2.类名.class 的方式1.3.Class.forName() 2.获取类的成员变量3.获取成员方法并调用4.反射优缺点 代理1.结构2.静态代理2.1.案例1-计算前后校验2.1.1.创建接口2.1.2.创建实…

使用Thonny搭建MicroPython 开发环境,简单易用,保姆级教程

MicroPython Thonny开发环境搭建,简单易用,保姆级教程 MicroPython为广大Python编程开发人员打开了通往单片机、物联网开发的大门,但是在开发工具方面却不是很给力,虽然VSCode的插件很多,但是针对MicroPython却不是很…

【leetcode】深搜、暴搜、回溯、剪枝(C++)3

深搜、暴搜、回溯、剪枝(C)3 一、解数独1、题目描述2、代码3、解析 二、单词搜索1、题目描述2、代码3、解析 三、黄金矿工1、题目描述2、代码3、解析 四、不同路径III1、题目描述2、代码3、解析 一、解数独 1、题目描述 leetcode链接 2、代码 class…

MCU电源控制(PWR)与低功耗

目录 一、STM32 的内核和外设电源系统管理: 二、MCU电源监控: 三、三种低功耗模式: 1、睡眠模式: 2、停止模式: 3、待机模式: 一、STM32 的内核和外设电源系统管理: ① 电池备份区域&#…

力扣OJ题——旋转数组

题目:189.旋转数组 给定一个整数数组 nums,将数组中的元素向右轮转 k 个位置,其中 k 是非负数 思路一: 1.每次挪动旋转1位(用tmp将最后一位存起来,其余所有数据向后移,然后将tmp放在第一个位…

语音唤醒——

文章目录 配置主代码 参考文档:https://picovoice.ai/docs/quick-start/porcupine-python/ 配置 pip install pvporcupine主代码 ACCESS_KEY:需要将该参数填入即可 # # Copyright 2018-2023 Picovoice Inc. # # You may not use this file except in …

数据库设计、JDBC、数据库连接池

数据库设计 数据库设计概念 数据库设计就是根据业务 系统的具体需求,结合我们所选用的DBMS,为这个业务系统构造出最优的数据存储模型。建立数据库中的表结构以及表与表之间的关联关系的过程。有哪些表?表里有哪些字段?表和表之间有什么关系? 数据库设计的步骤…

WordPress站点成功升级后的介绍页地址是什么?

我们一般在WordPress站点后台 >> 仪表盘 >> 更新中成功升级WordPress的话,最后打开的就是升级之后的版本介绍页。比如boke112百科前两天升级到WordPress 6.4.2后显示的介绍页如下图所示: 该介绍除了介绍当前版本修复了多少个问题及修补了多少…

图数据库、知识图谱、装配模型

一、图数据库 图数据库简介 ​ 图数据库(Graph Database)是基于图论实现的一种新型NoSQL数据库。它的数据存储结构和数据的查询方式都是以图论为基础的。图论中图的基本元素为节点和边,在图数据库中对应的就是节点和关系。 图数据库是基于图…

Transformer——Attention 注意力机制

注意力机制 Transformer的注意力机制借鉴了人类的注意力机制。人类通过眼睛的视觉单元去扫描图像,其中的重点区域会被大脑的神经元处理从而获得更多的信息,这是人类长期精华所获得的一种能力。 以论文中的例子来看,红色区域表示我们人脑视觉…

C++并发编程 -3.同步并发操作

本文介绍如何使用条件变量控制并发的同步操作、C 并发三剑客,函数式编程 一.条件变量 1.概念 C条件变量(condition variable)是一种多线程编程中常用的同步机制,用于线程间的通信和协调。它允许一个或多个线程等待某个条件的发生…

HTTP 请求 400错误

问题 HTTP 请求 400错误 详细问题 客户端发送请求 public static UserInfo updateUserInfo(UserInfo userInfo) {// 创建 OkHttpClient 对象OkHttpClient client new OkHttpClient();// 创建请求体MediaType JSON MediaType.parse("application/json; charsetutf-8&…