Undertow 是紅帽公司開發(fā)的一款基于 NIO 的高性能 Web 嵌入式服務(wù)器
公司主營業(yè)務(wù):成都網(wǎng)站設(shè)計(jì)、做網(wǎng)站、移動(dòng)網(wǎng)站開發(fā)等業(yè)務(wù)。幫助企業(yè)客戶真正實(shí)現(xiàn)互聯(lián)網(wǎng)宣傳,提高企業(yè)的競爭能力。成都創(chuàng)新互聯(lián)公司是一支青春激揚(yáng)、勤奮敬業(yè)、活力青春激揚(yáng)、勤奮敬業(yè)、活力澎湃、和諧高效的團(tuán)隊(duì)。公司秉承以“開放、自由、嚴(yán)謹(jǐn)、自律”為核心的企業(yè)文化,感謝他們對我們的高要求,感謝他們從不同領(lǐng)域給我們帶來的挑戰(zhàn),讓我們激情的團(tuán)隊(duì)有機(jī)會用頭腦與智慧不斷的給客戶帶來驚喜。成都創(chuàng)新互聯(lián)公司推出沁縣免費(fèi)做網(wǎng)站回饋大家。
Untertow 的特點(diǎn):
輕量級:它是一個(gè) Web 服務(wù)器,但不像傳統(tǒng)的 Web 服務(wù)器有容器概念,它由兩個(gè)核心 Jar 包組成,加載一個(gè) Web 應(yīng)用可以小于 10MB 內(nèi)存
Servlet3.1 支持:它提供了對 Servlet3.1 的支持
WebSocket 支持:對 Web Socket 完全支持,用以滿足 Web 應(yīng)用巨大數(shù)量的客戶端
嵌套性:它不需要容器,只需通過 API 即可快速搭建 Web 服務(wù)器
默認(rèn)情況下 Spring Cloud 使用 Tomcat 作為內(nèi)嵌 Servlet 容器,可啟動(dòng)一個(gè) Tomcat 的 Spring Boot 程序與一個(gè) Undertow 的 Spring Boot 程序,通過 VisualVM 工具進(jìn)行比較,可看到 Undertow 性能優(yōu)于 Tomcat
添加依賴
???? org.springframework.boot ????spring-boot-starter-web ???????????? ???????????? ????org.springframework.boot ????????????spring-boot-starter-tomcat ???????????? org.springframework.boot ????spring-boot-starter-undertow
支持 HTTP2
//?在@Configuration的類中添加@bean@BeanUndertowEmbeddedServletContainerFactory?embeddedServletContainerFactory()?{ ???? ????UndertowEmbeddedServletContainerFactory?factory?=?new?UndertowEmbeddedServletContainerFactory();???? ????//?這里也可以做其他配置 ????factory.addBuilderCustomizers(builder?->?builder.setServerOption(UndertowOptions.ENABLE_HTTP2,?true));???? ????return?factory; }
配置 Undertow
#?Undertow?日志存放目錄server.undertow.accesslog.dir#?是否啟動(dòng)日志server.undertow.accesslog.enabled=false?#?日志格式server.undertow.accesslog.pattern=common#?日志文件名前綴server.undertow.accesslog.prefix=access_log#?日志文件名后綴server.undertow.accesslog.suffix=log#?HTTP?POST請求最大的大小server.undertow.max-http-post-size=0? #?設(shè)置IO線程數(shù),?它主要執(zhí)行非阻塞的任務(wù),它們會負(fù)責(zé)多個(gè)連接,?默認(rèn)設(shè)置每個(gè)CPU核心一個(gè)線程server.undertow.io-threads=4#?阻塞任務(wù)線程池,?當(dāng)執(zhí)行類似servlet請求阻塞操作,?undertow會從這個(gè)線程池中取得線程,它的值設(shè)置取決于系統(tǒng)的負(fù)載server.undertow.worker-threads=20#?以下的配置會影響buffer,這些buffer會用于服務(wù)器連接的IO操作,有點(diǎn)類似netty的池化內(nèi)存管理#?每塊buffer的空間大小,越小的空間被利用越充分server.undertow.buffer-size=1024#?每個(gè)區(qū)分配的buffer數(shù)量?,?所以pool的大小是buffer-size?*?buffers-per-regionserver.undertow.buffers-per-region=1024#?是否分配的直接內(nèi)存server.undertow.direct-buffers=true
歡迎工作一到五年的Java工程師朋友們加入Java技術(shù)交流:659270626
群內(nèi)提供免費(fèi)的Java架構(gòu)學(xué)習(xí)資料(里面有高可用、高并發(fā)、高性能及分布式、Jvm性能調(diào)優(yōu)、Spring源碼,MyBatis,Netty,redis,Kafka,MySQL,Zookeeper,Tomcat,Docker,Dubbo,Nginx等多個(gè)知識點(diǎn)的架構(gòu)資料)合理利用自己每一分每一秒的時(shí)間來學(xué)習(xí)提升自己,不要再用"沒有時(shí)間“來掩飾自己思想上的懶惰!趁年輕,使勁拼,給未來的自己一個(gè)交代!