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

在springboot中如何使用Jetty替换Tomcat

BIO、NIO、AIO分别是什么?

BIO(Blocking IO)同步阻塞式IO

BIO是传统的同步阻塞IO,即客户端发起请求,服务器必须开一个线程接收请求,并开启一个线程进行处理,直到处理完毕后再通过一个线程返回结果。在高并发的情况下,服务器线程开销巨大,容易导致线程堆积和资源浪费。

NIO(Non-blocking IO) 同步非阻塞IO

NIO是一种同步非阻塞IO模型,它通过Selector轮询操作,将阻塞转化为非阻塞。当有数据可读写时,才会去执行相应的IO操作,从而减少了线程的开销和资源的浪费。

AIO(Asynchronous IO)异步非阻塞IO

AIO是一种异步非阻塞IO模型,在AIO模型中,当发起一个IO操作后,线程不会等待,而是继续执行其他操作,当IO操作完成后,该线程会收到通知,从而可以回来处理IO操作的结果。AIO相比NIO的优点是在网络连接处于空闲状态时,不需要通过Selector轮询操作,减少了时间和资源的浪费。

为什么要用Jetty来替换Tomcat?

Tomcat9.0版本之前默认是BIO模式,Tomcat9.0版本才改成默认NIO模式。如果要把Tomcat9.0之前的BIO模式改为NIO模式会非常麻烦。Jetty默认就是NIO模式,性能方面与Tomcat不相上下。另外Google大量的web服务器是发布到Jetty服务器上的,因此可以放心大胆的使用Jetty。

如何在springboot中如何使用Jetty替换Tomcat?

1、在springboot中剔除Tomcat

<dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-web</artifactId><exclusions><exclusion><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-tomcat</artifactId></exclusion></exclusions>
</dependency>

2、添加Jetty依赖

<dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-jetty</artifactId>
</dependency>

3、添加Jetty服务器配置

server:jetty:threads:acceptors: 4 # acceptors线程池用于接受HTTP请求selectors: 8 # selectors线程池用于处理HTTP请求min: 8max: 200

相关文章:

  • 北京网站建设多少钱?
  • 辽宁网页制作哪家好_网站建设
  • 高端品牌网站建设_汉中网站制作
  • 同样数据源走RTMP播放延迟低还是RTSP低?
  • Redis的设计哲学和实现方式
  • Maven创建项目中的groupId, artifactId, 和 version的意思
  • Docker 的安装和使用
  • Day-04-QFile打开文件的两种方式
  • UNIX IPC方法的分类
  • 进程+线程+协程
  • Rust的常数、作用域与所有权
  • 如何将图表数据拟合为函数
  • EmguCV学习笔记 C# 9.3 移动检测类
  • flume系列之:记录一次flume agent进程被异常oom kill -9的原因定位
  • 轻松上手,高效产出:音频剪辑工具年度精选
  • Ubuntu 24.04上卸载LibreOffice
  • 怎样在日常生活中避免泄露个人信息
  • pycharm如何安装selenium
  • $translatePartialLoader加载失败及解决方式
  • echarts花样作死的坑
  • Essential Studio for ASP.NET Web Forms 2017 v2,新增自定义树形网格工具栏
  • Java方法详解
  • Java小白进阶笔记(3)-初级面向对象
  • Joomla 2.x, 3.x useful code cheatsheet
  • QQ浏览器x5内核的兼容性问题
  • Traffic-Sign Detection and Classification in the Wild 论文笔记
  • Vue学习第二天
  • 阿里云前端周刊 - 第 26 期
  • 小程序01:wepy框架整合iview webapp UI
  • - 转 Ext2.0 form使用实例
  • 交换综合实验一
  • ​力扣解法汇总1802. 有界数组中指定下标处的最大值
  • #includecmath
  • (06)Hive——正则表达式
  • (16)Reactor的测试——响应式Spring的道法术器
  • (done) ROC曲线 和 AUC值 分别是什么?
  • (Redis使用系列) Springboot 使用Redis+Session实现Session共享 ,简单的单点登录 五
  • (黑马点评)二、短信登录功能实现
  • (十六)Flask之蓝图
  • (转载)深入super,看Python如何解决钻石继承难题
  • ***测试-HTTP方法
  • .bat文件调用java类的main方法
  • .Family_物联网
  • .NET Core日志内容详解,详解不同日志级别的区别和有关日志记录的实用工具和第三方库详解与示例
  • .net core使用EPPlus设置Excel的页眉和页脚
  • .net 打包工具_pyinstaller打包的exe太大?你需要站在巨人的肩膀上-VC++才是王道
  • .NET 中小心嵌套等待的 Task,它可能会耗尽你线程池的现有资源,出现类似死锁的情况
  • .NET连接MongoDB数据库实例教程
  • .net通过类组装数据转换为json并且传递给对方接口
  • .NET与java的MVC模式(2):struts2核心工作流程与原理
  • @RequestMapping用法详解
  • @Transactional 详解
  • [12] 使用 CUDA 加速排序算法
  • [bzoj4240] 有趣的家庭菜园
  • [C#]winform部署yolov5-onnx模型
  • [C#]猫叫人醒老鼠跑 C#的委托及事件
  • [ERROR] Plugin 'InnoDB' init function returned error
  • [Hibernate] - Fetching strategies