1. Введение в Undertow
Undertowэто гибкий, высокопроизводительный веб-сервер, разработанный на Java, который обеспечивает как блокировку, так иNIO
неблокирующий механизм.UndertowЭто продукт Red Hat с открытым исходным кодом, который является веб-сервером по умолчанию для Wildfly.UndertowПредоставляет базовую структуру для создания веб-сервера, это полностью встроенный проект, предоставляет простой в использовании API-интерфейс конструктора и полностью совместим с предыдущими версиями.Java EE Servlet 3.1
и низкоуровневые неблокирующие процессоры.
2. Особенности подводного течения
- Высокая производительность При тестировании под давлением многих аналогичных продуктов он показал хорошие результаты при высокой степени параллелизма.
- Поддержка Servlet4.0 Обеспечивает поддержку Servlet4.0.
- Веб-сокеты полностью поддерживаются, включая JSR-356, чтобы удовлетворить огромное количество клиентов для веб-приложений.
- Встроенный. Не требует контейнера и может быстро создать веб-сервер через API.
- Гибкость Конфигурация и обработка запросов объединенными в цепочку обработчиками может свести к минимуму необходимость загрузки модулей по запросу без загрузки избыточных функций.
- Легкий Это встроенный веб-сервер, состоящий из двух основных пакетов Jar.
3. Замените Tomcat по умолчанию
Spring boot использует по умолчаниюTomcatВстроенный контейнер. зависит отspring-boot-starter-web
. Нам просто нужно исключитьTomcatполагаться. ЦитироватьUndertowВот и все,maven
Конфигурация выглядит следующим образом:
<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>
4. Пользовательская конфигурация Undertow
В самом деле, третий шаг был в состоянии играть счастливо. вы можете немедленноfelord.cnНайдите другие руководства по изучению Spring Boot. Конечно, вы также можете подбросить немного больше, настроив файл конфигурации Spring Bootapplication.yml
Средняя конфигурацияServerProperties
иServerProperties.Undertow
связанные свойства. Обобщить относительно незнакомоеServerProperties.Undertow
свойства:
# 设置IO线程数, 它主要执行非阻塞的任务,它们会负责多个连接, 默认设置每个CPU核心一个线程
# 不要设置过大,如果过大,启动项目会报错:打开文件数过多
server:
undertow:
io-threads: 16
# 阻塞任务线程池, 当执行类似servlet请求阻塞IO操作, undertow会从这个线程池中取得线程
# 它的值设置取决于系统线程执行任务的阻塞系数,默认值是IO线程数*8
worker-threads: 256
# 以下的配置会影响buffer,这些buffer会用于服务器连接的IO操作,有点类似netty的池化内存管理
# 每块buffer的空间大小,越小的空间被利用越充分,不要设置太大,以免影响其他应用,合适即可
buffer-size: 1024
# 每个区分配的buffer数量 , 所以pool的大小是buffer-size * buffers-per-region
buffers-per-region: 1024
# 是否分配的直接内存(NIO直接分配的堆外内存)
direct-buffers: true
5. Резюме
Сегодня мы продемонстрировали, как использовать отличную производительностьUndertowПоставляется как Spring BootServlet Webконтейнер. На самом деле, в случае небольшого параллелизмаUndertow
, а два другихServlet WebконтейнерJetty
,Tomcat
Разница не очень большая.Undertow
Преимущество заключается в пропускной способности при высокой степени параллелизма. Вы можете выбрать в соответствии с вашими реальными потребностями.
关注公众号:Felordcn获取更多资讯