SpringBoot使用Undertow做服务器

Undertow是一款Java编写的轻量级高性能的Web服务器,可提供基于NIO的阻塞和非阻塞API。

Undertow设计为完全可嵌入的,并具有易于使用的流畅的Builder API。 Undertow的生命周期完全由嵌入应用程序控制。

Undertow的特性:

  • 支持HTTP / 2
  • 支持HTTP升级,允许多个协议通过HTTP端口进行多路复用
  • 提供对Web Socket的全面支持,包括JSR-356支持。
  • Servlet 4.0
  • 可以嵌入在应用程序中或独立运行
  • 通过将处理程序链接在一起来配置Undertow服务器。它可以对各种功能进行配置,方便灵活。

Spring Boot项目中的引入方式

Spring Boot 可以内嵌 Jetty , Tomcat , Undertow , 默认是Tomcat

要使用 Undertow 只需要在pom配置文件中移除 Tomcat,添加 Undertow 的依赖:

<code>
<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>

<dependency>
<groupid>org.springframework.boot/<groupid>
<artifactid>spring-boot-starter-undertow/<artifactid>
/<dependency>/<code>

在yml文件中添加Undertow的配置:

<code>server:
# 服务器的HTTP端口,默认为80
port: 8080
http2:
enabled: true
servlet:
# 应用的访问路径
context-path: /
# 下面是配置undertow作为服务器的参数
undertow:
# 设置IO线程数, 它主要执行非阻塞的任务,它们会负责多个连接, 默认设置每个CPU核心一个线程
io-threads: 4
# 阻塞任务线程池, 当执行类似servlet请求阻塞操作, undertow会从这个线程池中取得线程,它的值设置取决于系统的负载
# 它的值设置取决于系统线程执行任务的阻塞系数,默认值是IO线程数*8
worker-threads: 80
# 以下的配置会影响buffer,这些buffer会用于服务器连接的IO操作,有点类似netty的池化内存管理
# 每块buffer的空间大小,越小的空间被利用越充分

buffer-size: 1024
# 是否分配的直接内存
direct-buffers: true/<code>

这样,配置完成了。

在并发量不高的情况下 , Tomcat与undertow的差别不大 , 如果是高并发的业务系统,Undertow是会使一个更好的选择。


SpringBoot使用Undertow做服务器


分享到:


相關文章: