最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

在Spring?Boot使用Undertow服務(wù)的方法

 更新時(shí)間:2023年05月16日 09:49:19   作者:Hello.Reader  
Undertow是RedHAT紅帽公司開源的產(chǎn)品,采用JAVA開發(fā),是一款靈活,高性能的web服務(wù)器,提供了NIO的阻塞/非阻塞API,也是Wildfly的默認(rèn)Web容器,這篇文章給大家介紹了在Spring?Boot使用Undertow服務(wù)的方法,感興趣的朋友跟隨小編一起看看吧

在Spring Boot使用Undertow服務(wù)

1.undertow簡介

Undertow是RedHAT紅帽公司開源的產(chǎn)品,采用JAVA開發(fā),是一款靈活,高性能的web服務(wù)器,提供了NIO的阻塞/非阻塞API,也是Wildfly的默認(rèn)Web容器。在javaweb容器的世界里,Tomcat和jetty是大眾熟知的,undertow目前逐步進(jìn)入大眾的視角,它是一款能和tomcat媲美的神器,在性能方面吊打tomcat。目前Undertow已經(jīng)成為springboot 默認(rèn)集成的三大容器之一。

2.undertow特點(diǎn)

undertow在高并發(fā)業(yè)務(wù)場景中,性能優(yōu)于tomcat

高性能,在多款同類產(chǎn)品的壓測對(duì)比中,高并發(fā)情況下表現(xiàn)出色。Servlet4.0支持,它提供了對(duì)Servlet4.0的支持。Web Socket完全支持,包含JSR-356,用以滿足Web應(yīng)用巨大數(shù)量的客戶端。內(nèi)嵌式,它不需要容器,只需要通過api即可快速搭建Web服務(wù)器。靈活性,交由鏈?zhǔn)紿andler配置和處理請(qǐng)求,可以最小化按需加載模塊,無須加載多余功能。輕量級(jí),它是一個(gè)內(nèi)嵌Web服務(wù)器,由兩個(gè)核心jar包組成。 3.springboot集成的web服務(wù)器

<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
         xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 https://maven.apache.org/xsd/maven-4.0.0.xsd">
    <modelVersion>4.0.0</modelVersion>
    <parent>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-parent</artifactId>
        <version>2.7.4</version>
    </parent>
    <groupId>com.konne</groupId>
    <artifactId>push-demo</artifactId>
    <version>0.0.1-SNAPSHOT</version>
    <name>push-demo</name>
    <description>Demo project for Spring Boot</description>
    <properties>
        <java.version>1.8</java.version>
    </properties>
    <dependencies>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-web</artifactId>
            <!-- 移除掉默認(rèn)支持的 Tomcat -->
            <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>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-test</artifactId>
            <scope>test</scope>
        </dependency>
    </dependencies>
    <build>
        <plugins>
            <plugin>
                <groupId>org.springframework.boot</groupId>
                <artifactId>spring-boot-maven-plugin</artifactId>
            </plugin>
        </plugins>
    </build>
</project>

配置啟動(dòng)成功顯示如下信息:

  .   ____          _            __ _ _
 /\\ / ___'_ __ _ _(_)_ __  __ _ \ \ \ \
( ( )\___ | '_ | '_| | '_ \/ _` | \ \ \ \
 \\/  ___)| |_)| | | | | || (_| |  ) ) ) )
  '  |____| .__|_| |_|_| |_\__, | / / / /
 =========|_|==============|___/=/_/_/_/
 :: Spring Boot ::                (v2.7.4)

2022-12-13 09:41:21.625  INFO 2416 --- [           main] com.konne.pushdemo.PushDemoApplication   : Starting PushDemoApplication using Java 1.8.0_202 on 2F-KF03 with PID 2416 (D:\i-word\push-demo\target\classes started by Administrator in D:\i-word\push-demo)
2022-12-13 09:41:21.628  INFO 2416 --- [           main] com.konne.pushdemo.PushDemoApplication   : No active profile set, falling back to 1 default profile: "default"
2022-12-13 09:41:22.226  WARN 2416 --- [           main] io.undertow.websockets.jsr               : UT026010: Buffer pool was not set on WebSocketDeploymentInfo, the default pool will be used
2022-12-13 09:41:22.241  INFO 2416 --- [           main] io.undertow.servlet                      : Initializing Spring embedded WebApplicationContext
2022-12-13 09:41:22.241  INFO 2416 --- [           main] w.s.c.ServletWebServerApplicationContext : Root WebApplicationContext: initialization completed in 578 ms
2022-12-13 09:41:22.482  INFO 2416 --- [           main] io.undertow                              : starting server: Undertow - 2.2.19.Final
2022-12-13 09:41:22.486  INFO 2416 --- [           main] org.xnio                                 : XNIO version 3.8.7.Final
2022-12-13 09:41:22.490  INFO 2416 --- [           main] org.xnio.nio                             : XNIO NIO Implementation Version 3.8.7.Final
2022-12-13 09:41:22.514  INFO 2416 --- [           main] org.jboss.threads                        : JBoss Threads version 3.1.0.Final
2022-12-13 09:41:22.544  INFO 2416 --- [           main] o.s.b.w.e.undertow.UndertowWebServer     : Undertow started on port(s) 8080 (http)
2022-12-13 09:41:22.552  INFO 2416 --- [           main] com.konne.pushdemo.PushDemoApplication   : Started PushDemoApplication in 1.217 seconds (JVM running for 1.807)

SpringBoot使用Undertow做服務(wù)器

說明

        undertow,jetty和tomcat可以說是javaweb項(xiàng)目當(dāng)下最火的三款服務(wù)器,tomcat是apache下的一款重量級(jí)的服務(wù)器,不用多說歷史悠久,經(jīng)得起實(shí)踐的考驗(yàn)。然而:當(dāng)下微服務(wù)興起,spring boot ,spring cloud 越來越熱的情況下,選擇一款輕量級(jí)而性能優(yōu)越的服務(wù)器是必要的選擇。spring boot 完美集成了tomcat,jetty和undertow,本文將通過對(duì)jetty和undertow服務(wù)器的分析以及測試,來比較兩款服務(wù)器的性能如何。

  值得一提的是jetty和undertow都是基于NIO實(shí)現(xiàn)的高并發(fā)輕量級(jí)的服務(wù)器,支持servlet3.1和websocket。所以,有必要先了解下什么是NIO。

NIO(非阻塞式輸入輸出)

  • Channel
  • Selector
  • Buffer
  • Acceptor

  Client和Server只向Buffer讀寫數(shù)據(jù)不關(guān)注數(shù)據(jù)的流向,數(shù)據(jù)通過Channel通道進(jìn)行流轉(zhuǎn)。而Selector是存在與服務(wù)端的,用于Channel的注冊以此實(shí)現(xiàn)數(shù)據(jù)I/O操作。Acceptor負(fù)責(zé)接受所以的連接通道并且注冊到Channel中。而整個(gè)過程客戶端與服務(wù)端是非阻塞的也就是異步操作。

下面是壓力測試對(duì)比圖:

服務(wù)器命中成功率吞吐量平均耗時(shí)
Jetty11488100%96.25 trans/sec0.00sec
18393100%153.92 trans/sec0.01sec
2148499.99%179.51 trans/sec0.01sec
Undertow11280100%94.02 trans/sec0.00sec
19442100%163.35 trans/sec0.01sec
23277100%195.54 tran/sec0.01sec
Tomcat10845100%90.95 trans/sec0.02sec
2167399.98%181 trans/sec0.01sec
2508499.98%209.10 trans/sec0.01sec

從中可以看出在高負(fù)載下Undertow的吞吐量高于Jetty而且隨著壓力增大Jetty和Undertow成功率差距會(huì)拉大。而在負(fù)載不是太大情況下服務(wù)器處理能力差不多,jetty還略微高于Undertow。而tomcat的負(fù)載能力似乎和Undertow很接近。

  對(duì)比三個(gè)服務(wù)器發(fā)現(xiàn)在Undertow在負(fù)載過重情況下比Jetty和Tocmat更加頑強(qiáng),實(shí)踐證明在負(fù)載繼續(xù)加大情況下Undertow的成功率高于其它兩者,但是在并發(fā)不是太大情況下三款服務(wù)器整體來看差別不大。

從中可以看出在高負(fù)載下Undertow的吞吐量高于Jetty而且隨著壓力增大Jetty和Undertow成功率差距會(huì)拉大。而在負(fù)載不是太大情況下服務(wù)器處理能力差不多,jetty還略微高于Undertow。而tomcat的負(fù)載能力似乎和Undertow很接近。

  對(duì)比三個(gè)服務(wù)器發(fā)現(xiàn)在Undertow在負(fù)載過重情況下比Jetty和Tocmat更加頑強(qiáng),實(shí)踐證明在負(fù)載繼續(xù)加大情況下Undertow的成功率高于其它兩者,但是在并發(fā)不是太大情況下三款服務(wù)器整體來看差別不大。

快速開始

更新pom.xml文件:

        <!--<dependency>-->
            <!--<groupId>org.springframework.boot</groupId>-->
            <!--<artifactId>spring-boot-starter-web</artifactId>-->
        <!--</dependency>-->
        <!-- 下面的配置將使用undertow來做服務(wù)器而不是tomcat -->
        <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>

application.yml配置:

server:
  port: 8081
  # 下面是配置undertow作為服務(wù)器的參數(shù)
  undertow:
    # 設(shè)置IO線程數(shù), 它主要執(zhí)行非阻塞的任務(wù),它們會(huì)負(fù)責(zé)多個(gè)連接, 默認(rèn)設(shè)置每個(gè)CPU核心一個(gè)線程
    io-threads: 4
    # 阻塞任務(wù)線程池, 當(dāng)執(zhí)行類似servlet請(qǐng)求阻塞操作, undertow會(huì)從這個(gè)線程池中取得線程,它的值設(shè)置取決于系統(tǒng)的負(fù)載
    worker-threads: 20
    # 以下的配置會(huì)影響buffer,這些buffer會(huì)用于服務(wù)器連接的IO操作,有點(diǎn)類似netty的池化內(nèi)存管理
    # 每塊buffer的空間大小,越小的空間被利用越充分
    buffer-size: 1024
    # 是否分配的直接內(nèi)存
    direct-buffers: true

配置比較簡單,和tomcat使用基本一樣,然后就可以快樂的使用undertow啦~

到此這篇關(guān)于在Spring Boot使用Undertow服務(wù)的文章就介紹到這了,更多相關(guān)Spring Boot使用Undertow服務(wù)內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • java內(nèi)存優(yōu)化的方法總結(jié)

    java內(nèi)存優(yōu)化的方法總結(jié)

    在本篇文章里小編給大家分享的是一篇關(guān)于java內(nèi)存優(yōu)化的方法總結(jié)內(nèi)容,有需要的朋友們可以學(xué)習(xí)下。
    2021-06-06
  • java之構(gòu)造器的重載問題

    java之構(gòu)造器的重載問題

    這篇文章主要介紹了java之構(gòu)造器的重載問題,具有很好的參考價(jià)值,希望對(duì)大家有所幫助,如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2024-03-03
  • 使用JPA+querydsl如何實(shí)現(xiàn)多條件動(dòng)態(tài)查詢

    使用JPA+querydsl如何實(shí)現(xiàn)多條件動(dòng)態(tài)查詢

    這篇文章主要介紹了使用JPA+querydsl如何實(shí)現(xiàn)多條件動(dòng)態(tài)查詢,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2022-03-03
  • Mybatis-Plus之ID自動(dòng)增長的設(shè)置實(shí)現(xiàn)

    Mybatis-Plus之ID自動(dòng)增長的設(shè)置實(shí)現(xiàn)

    本文主要介紹了Mybatis-Plus之ID自動(dòng)增長的設(shè)置實(shí)現(xiàn),文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2022-07-07
  • Java 對(duì)稱加密幾種算法分別實(shí)現(xiàn)

    Java 對(duì)稱加密幾種算法分別實(shí)現(xiàn)

    這篇文章主要介紹了Java 對(duì)稱加密使用DES / 3DES / AES 這三種算法分別實(shí)現(xiàn)的相關(guān)資料,這里提供了實(shí)例代碼,需要的朋友可以參考下
    2017-01-01
  • Springboot整合hutool驗(yàn)證碼的實(shí)例代碼

    Springboot整合hutool驗(yàn)證碼的實(shí)例代碼

    在 Spring Boot 中,你可以將 Hutool 生成驗(yàn)證碼的功能集成到 RESTful API 接口中,這篇文章主要介紹了Springboot整合hutool驗(yàn)證碼,需要的朋友可以參考下
    2024-08-08
  • Java圖像處理之RGB調(diào)色面板

    Java圖像處理之RGB調(diào)色面板

    這篇文章主要為大家詳細(xì)介紹了Java圖像處理之RGB調(diào)色面板,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2022-06-06
  • Java使用synchronized修飾方法來同步線程的實(shí)例演示

    Java使用synchronized修飾方法來同步線程的實(shí)例演示

    synchronized下的方法控制多線程程序中的線程同步非常方便,這里就來看一下Java使用synchronized修飾方法來同步線程的實(shí)例演示,需要的朋友可以參考下
    2016-06-06
  • SpringBoot的屬性賦值@Value的用法說明

    SpringBoot的屬性賦值@Value的用法說明

    這篇文章主要介紹了SpringBoot的屬性賦值@Value的用法說明,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2022-03-03
  • Java上傳文件到服務(wù)器端的方法

    Java上傳文件到服務(wù)器端的方法

    這篇文章主要為大家詳細(xì)介紹了Java上傳文件到服務(wù)器端的方法,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2018-01-01

最新評(píng)論

徐州市| 罗山县| 彭山县| 安仁县| 肇庆市| 景德镇市| 天长市| 姚安县| 正蓝旗| 黔江区| 高雄市| 黄梅县| 鄂伦春自治旗| 宁南县| 木里| 竹山县| 阳山县| 饶阳县| 肇源县| 鹤岗市| 霍山县| 阿巴嘎旗| 婺源县| 彝良县| 小金县| 蒙自县| 确山县| 宜黄县| 珲春市| 曲沃县| 吴桥县| 南皮县| 博客| 定西市| 新源县| 辽宁省| 运城市| 开鲁县| 易门县| 台北县| 开封市|