開微服務項目tomcat更換成undertow

歡迎關注點贊轉發留言!

第一講 開源微服務架構介紹
第二講 支持國產,開源微服務架構項目之Knife4j使用
第三講 開源微服務項目集成Knife4j——解密Knife4j
第四講 開源微服務項目認證中心增加移動端認證

Undertow是一種用Java編寫的靈活的高性能開源Web服務器,它提供基於NIO的阻塞和非阻塞API。具有基於合成的體系結構,該體系結構允許您通過組合小型單一用途處理程序來構建Web服務器。使用,您可以靈活地在完整的Java EE Servlet 4.0容器或低級別的非阻塞處理程序之間進行選擇。 設計為完全可嵌入的,並具有易於使用的流暢的Builder API。Undertow的生命週期完全由嵌入應用程序控制。在高併發系統中undertow 吞吐量 比tomcat,jetty好。

下面介紹undertown在開源微服務項目Ruoyi-cloud下的應用

1 在項目模塊下pom文件引入依賴

<code>   

<

dependency

>

<

groupId

>

org.springframework.boot

groupId

>

<

artifactId

>

spring-boot-starter-undertow

artifactId

>

dependency

>

<

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

>

   /<code>

2 undertown 配置及原理

2.1 以Ruoyi-cloud 模塊下ruoyi-system yam文件做配置

<code>

server:

port:

9201

undertow:

io-threads:

16

worker-threads:

256

buffer-size:

1024

buffers-per-region:

1024

direct-buffers:

true

/<code>

2.2 2.1的配置undertown怎樣去獲取?啟動時候undertown 會去讀取yml 文件server 開頭的配置參數,並對數據封裝,初始化數據。依據這個ServerProperties得知一些原理的

開微服務項目tomcat更換成undertow

ServerProperties源碼

開微服務項目tomcat更換成undertow

untertown配置參數

2.3 undertown 怎樣處理請求呢?

A 當用戶訪問系統,undertown接收到請求後建立鏈接,XNIO調用io.undertow.server.HttpOpenListener,此監聽器創建一個新的io.undertow.server.HttpServerConnection以保持與此連接關聯的狀態,

B 然後調用io.undertow.server.HttpReadListener負責解析傳入的請求,並創建一個新 io.undertow.server.HttpServerExchange的存儲請求狀態,交換對象包含請求和響應狀態。

C 通過執行根處理程序io.undertow.server.Connectors#executeRootHandler(Connectors下面的函數executeRootHandler())。處理程序鏈接在一起,每個處理程序可以修改交換,發送響應或委託給其他處理程序。

D 最後調用ServletInitialHandler 裡面函數dispatchRequest(HttpServerExchange exchange, ServletRequestContext servletRequestContext, ServletChain servletChain, DispatcherType dispatcherType)把請求分發到對應處理接口上。

歡迎關注點贊轉發留言!


分享到:


相關文章: