在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: 8
      max: 200
相关推荐
Rust研习社3 分钟前
深入 Rust 引用计数智能指针:Rc 与 Arc 从入门到实战
开发语言·后端·rust
Tirzano3 分钟前
SpringOAuth2Server 自定义授权码认证,登录和授权码混合
spring boot
树獭叔叔9 分钟前
OpenCLI:让任何网站成为你的命令行工具
后端·aigc·openai
一 乐16 分钟前
饮食营养信息|基于springboot + vue饮食营养管理信息平台系统(源码+数据库+文档)
java·数据库·vue.js·spring boot·论文·毕设·饮食营养管理信息系统
峥嵘life21 分钟前
Android + Kiro AI软件开发实战教程
android·后端·学习
石榴树下的七彩鱼1 小时前
Python OCR 文字识别 API 接入完整教程
开发语言·人工智能·后端·python·ocr·api·图片识别
Memory_荒年1 小时前
别让用户“剁手”把你搞破产:接口幂等性与防重的终极防线
后端
Devin~Y1 小时前
大厂Java面试实战:Spring Boot/WebFlux、Redis+Kafka、K8s可观测性与Spring AI RAG/Agent三轮连环问
java·spring boot·redis·kafka·kubernetes·resilience4j·spring webflux
掘金者阿豪1 小时前
程序员必踩的一个坑:Codex 报错 Missing environment variable `OPENAI_API_KEY`,完整解决指南(附架构图)
后端
神奇小汤圆2 小时前
从分析 Claude Code 源码到自己写一个:AnyCoder,支持 DeepSeek/Qwen 等任意大模型的开源 AI 编程 Agent
后端