歡迎關注點贊轉發留言!
第一講 開源微服務架構介紹
第二講 支持國產,開源微服務架構項目之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.bootgroupId
><
artifactId
>spring-boot-starter-undertowartifactId
>dependency
><
dependency
><
groupId
>org.springframework.bootgroupId
><
artifactId
>spring-boot-starter-webartifactId
><
exclusions
><
exclusion
><
groupId
>org.springframework.bootgroupId
><
artifactId
>spring-boot-starter-tomcatartifactId
>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得知一些原理的
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)把請求分發到對應處理接口上。
歡迎關注點贊轉發留言!
關鍵字: artifactId 開源 處理程序