国产 无码 综合区,色欲AV无码国产永久播放,无码天堂亚洲国产AV,国产日韩欧美女同一区二区

用Spring Boot 3.2虛擬線程搭建靜態(tài)文件服務(wù)器有多快?

這篇具有很好參考價(jià)值的文章主要介紹了用Spring Boot 3.2虛擬線程搭建靜態(tài)文件服務(wù)器有多快?。希望對(duì)大家有所幫助。如果存在錯(cuò)誤或未考慮完全的地方,請(qǐng)大家不吝賜教,您也可以點(diǎn)擊"舉報(bào)違法"按鈕提交疑問(wèn)。

Spring Boot 3.2 于 2023 年 11 月大張旗鼓地發(fā)布,標(biāo)志著 Java 開(kāi)發(fā)領(lǐng)域的一個(gè)關(guān)鍵時(shí)刻。這一突破性的版本引入了一系列革命性的功能,包括:

  • 虛擬線程:利用 Project Loom 的虛擬線程釋放可擴(kuò)展性,從而減少資源消耗并增強(qiáng)并發(fā)性。
  • Native Image支持:通過(guò)Native Image編譯制作速度極快的應(yīng)用程序,減少啟動(dòng)時(shí)間并優(yōu)化資源利用率。
  • JVM 檢查點(diǎn):利用 CRaC 項(xiàng)目的 JVM 檢查點(diǎn)機(jī)制實(shí)現(xiàn)應(yīng)用程序的快速重啟,無(wú)需冗長(zhǎng)的重新初始化。
  • RestClient:采用新的 RestClient 接口的功能方法,簡(jiǎn)化 HTTP 交互并簡(jiǎn)化代碼。
  • Spring for Apache Pulsar:利用 Apache Pulsar 的強(qiáng)大功能實(shí)現(xiàn)強(qiáng)大的消息傳遞功能,無(wú)縫集成到您的 Spring Boot 應(yīng)用程序中。

其中,虛擬線程是最近 Java 版本中引入的最具變革性的特性之一。正如官方文件所述:虛擬線程是輕量級(jí)線程,可減少編寫(xiě)、維護(hù)和調(diào)試高吞吐量并發(fā)應(yīng)用程序的工作量。線程是可以調(diào)度的最小處理單元。它與其他此類(lèi)單位同時(shí)運(yùn)行,并且在很大程度上獨(dú)立于其他此類(lèi)單元運(yùn)行。它是 java.lang.Thread 的一個(gè)實(shí)例。有兩種線程:平臺(tái)線程和虛擬線程。平臺(tái)線程是作為操作系統(tǒng) (OS) 線程的瘦包裝器實(shí)現(xiàn)的。平臺(tái)線程在其底層操作系統(tǒng)線程上運(yùn)行 Java 代碼,平臺(tái)線程在平臺(tái)線程的整個(gè)生命周期內(nèi)捕獲其操作系統(tǒng)線程。因此,可用平臺(tái)線程數(shù)限制為操作系統(tǒng)線程數(shù)。與平臺(tái)線程一樣,虛擬線程也是 java.lang.Thread 的實(shí)例。但是,虛擬線程不綁定到特定的操作系統(tǒng)線程。虛擬線程仍在操作系統(tǒng)線程上運(yùn)行代碼。但是,當(dāng)在虛擬線程中運(yùn)行的代碼調(diào)用阻塞 I/O 操作時(shí),Java 運(yùn)行時(shí)會(huì)掛起虛擬線程,直到它可以恢復(fù)為止。與掛起的虛擬線程關(guān)聯(lián)的操作系統(tǒng)線程現(xiàn)在可以自由地對(duì)其他虛擬線程執(zhí)行操作。虛擬線程適用于運(yùn)行大部分時(shí)間被阻塞的任務(wù),通常等待 I/O 操作完成。但是,它們不適用于長(zhǎng)時(shí)間運(yùn)行的 CPU 密集型操作。

雖然人們普遍認(rèn)為虛擬線程在 I/O 密集型方案中表現(xiàn)出色,但它們?cè)?CPU 密集型任務(wù)中的性能仍然是一個(gè)問(wèn)號(hào)。本系列文章深入探討了虛擬線程在各種用例中的潛在優(yōu)勢(shì),從基本的“hello world”到靜態(tài)文件服務(wù)(I/O 密集型)、QR 碼生成(CPU 密集型)和多部分/表單數(shù)據(jù)處理(混合工作負(fù)載)等實(shí)際應(yīng)用。

在本系列的開(kāi)頭文章中,我們已經(jīng)了解了虛擬線程與物理線程相比在最簡(jiǎn)單(且不切實(shí)際)的 hello world 情況下的性能。物理線程和虛擬線程之間幾乎沒(méi)有任何性能或資源使用差異。在本文中,我們將更加“實(shí)用”,并針對(duì)靜態(tài)文件服務(wù)器情況進(jìn)行比較。這絕對(duì)是一個(gè)常見(jiàn)且“真實(shí)世界”的案例。讓我們看看這次我們發(fā)現(xiàn)了什么。

如果大家正在做Spring Boot 2.3升級(jí)Spring 3.2,這里順手給大家推薦Spring Boot 2.x 到 3.2 的升級(jí)指南。

測(cè)試環(huán)境

所有測(cè)試均在配備 16G RAM、8 個(gè)物理內(nèi)核和 4 個(gè)效率內(nèi)核的 MacBook Pro M2 上執(zhí)行。測(cè)試工具是 Bombardier,它是更快的 HTTP 負(fù)載測(cè)試器之一(用 Go 編寫(xiě))。

軟件版本為:

  • Java v21.0.1
  • Spring Boot 3.2.1

程序配置

除了主 Java 類(lèi)之外,不需要編寫(xiě)任何 Java 文件,靜態(tài)文件服務(wù)器只能通過(guò)配置就能發(fā)揮作用。

application.properties文件如下:

server.port=3000
spring.mvc.static-path-pattern=/static/**
spring.web.resources.static-locations=file:/Users/mayankc/Work/source/perfComparisons/static/

使用虛擬線程時(shí),我們將通過(guò)添加以下行來(lái)啟用它們:

spring.threads.virtual.enabled=true

pom.xml內(nèi)容:

<parent>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-parent</artifactId>
    <version>3.2.1</version>
    <relativePath/>
 </parent>
 <groupId>com.example</groupId>
 <artifactId>demo</artifactId>
 <version>0.0.1-SNAPSHOT</version>
 <name>demo</name>
 <description>Demo project for Spring Boot</description>
 <properties>
   <java.version>21</java.version>
 </properties>
 <dependencies>
   <dependency>
     <groupId>org.springframework.boot</groupId>
     <artifactId>spring-boot-starter-web</artifactId>
   </dependency>

  <dependency>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-test</artifactId>
    <scope>test</scope>
  </dependency>
 </dependencies>

測(cè)試數(shù)據(jù)

大小完全相同但數(shù)據(jù)不同的 100K 文件被放置在靜態(tài)資源目錄中。每個(gè)文件大小正好是 102400 字節(jié)。

文件的命名范圍為 1 到 100000。

使用 Bombardier 的修改版本,為每次運(yùn)行生成隨機(jī)請(qǐng)求 URL: http://localhost:3000/static/<file-name>

應(yīng)用場(chǎng)景

為了確保結(jié)果一致,每個(gè)測(cè)試在開(kāi)始數(shù)據(jù)收集之前都會(huì)經(jīng)歷 5K 請(qǐng)求預(yù)熱階段。

然后,在不同范圍的并發(fā)連接級(jí)別(50、100 和 300)中仔細(xì)記錄測(cè)量結(jié)果,每個(gè)級(jí)別都承受 500 萬(wàn)個(gè)請(qǐng)求工作負(fù)載。

結(jié)果評(píng)估

除了簡(jiǎn)單地跟蹤原始速度之外,我們還將采用詳細(xì)的指標(biāo)框架來(lái)捕獲延遲分布(最小值、百分位數(shù)、最大值)和吞吐量(每秒請(qǐng)求數(shù))。

CPU 和內(nèi)存的資源使用情況監(jiān)控將補(bǔ)充此分析,從而提供不同工作負(fù)載下系統(tǒng)性能的全面了解。

測(cè)試結(jié)果

結(jié)果以圖表形式呈現(xiàn)如下:

用Spring Boot 3.2虛擬線程搭建靜態(tài)文件服務(wù)器有多快?

用Spring Boot 3.2虛擬線程搭建靜態(tài)文件服務(wù)器有多快?

用Spring Boot 3.2虛擬線程搭建靜態(tài)文件服務(wù)器有多快?

用Spring Boot 3.2虛擬線程搭建靜態(tài)文件服務(wù)器有多快?

用Spring Boot 3.2虛擬線程搭建靜態(tài)文件服務(wù)器有多快?

用Spring Boot 3.2虛擬線程搭建靜態(tài)文件服務(wù)器有多快?

用Spring Boot 3.2虛擬線程搭建靜態(tài)文件服務(wù)器有多快?

用Spring Boot 3.2虛擬線程搭建靜態(tài)文件服務(wù)器有多快?

用Spring Boot 3.2虛擬線程搭建靜態(tài)文件服務(wù)器有多快?

用Spring Boot 3.2虛擬線程搭建靜態(tài)文件服務(wù)器有多快?

總結(jié)

對(duì)靜態(tài)文件服務(wù)的分析表明,物理線程在性能和資源效率方面略勝一籌(與我們的預(yù)期相反)。

不過(guò),這種受 I/O 限制的場(chǎng)景可能并不是充分發(fā)揮虛擬線程潛力的理想場(chǎng)所。涉及數(shù)據(jù)庫(kù)交互的任務(wù)可能會(huì)顯示出更多令人信服的優(yōu)勢(shì)。也許負(fù)載不足以讓虛擬線程發(fā)揮出最大的作用。為了找出答案,我們將在接下來(lái)的文章中介紹 URL短鏈(數(shù)據(jù)庫(kù)驅(qū)動(dòng))、二維碼生成(CPU受限)和混合工作負(fù)載場(chǎng)景(如表單數(shù)據(jù)處理),旨在揭示虛擬線程真正出類(lèi)拔萃的案例。

歡迎關(guān)注我的公眾號(hào):程序猿DD。第一時(shí)間了解前沿行業(yè)消息、分享深度技術(shù)干貨、獲取優(yōu)質(zhì)學(xué)習(xí)資源文章來(lái)源地址http://www.zghlxwxcb.cn/news/detail-778874.html

到了這里,關(guān)于用Spring Boot 3.2虛擬線程搭建靜態(tài)文件服務(wù)器有多快?的文章就介紹完了。如果您還想了解更多內(nèi)容,請(qǐng)?jiān)谟疑辖撬阉鱐OY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!

本文來(lái)自互聯(lián)網(wǎng)用戶(hù)投稿,該文觀點(diǎn)僅代表作者本人,不代表本站立場(chǎng)。本站僅提供信息存儲(chǔ)空間服務(wù),不擁有所有權(quán),不承擔(dān)相關(guān)法律責(zé)任。如若轉(zhuǎn)載,請(qǐng)注明出處: 如若內(nèi)容造成侵權(quán)/違法違規(guī)/事實(shí)不符,請(qǐng)點(diǎn)擊違法舉報(bào)進(jìn)行投訴反饋,一經(jīng)查實(shí),立即刪除!

領(lǐng)支付寶紅包贊助服務(wù)器費(fèi)用

相關(guān)文章

  • Spring Boot虛擬線程與Webflux在JWT驗(yàn)證和MySQL查詢(xún)上的性能比較

    Spring Boot虛擬線程與Webflux在JWT驗(yàn)證和MySQL查詢(xún)上的性能比較

    早上看到一篇關(guān)于Spring Boot虛擬線程和Webflux性能對(duì)比的文章,覺(jué)得還不錯(cuò)。內(nèi)容較長(zhǎng),我就不翻譯了,抓重點(diǎn)給大家介紹一下這篇文章的核心內(nèi)容,方便大家快速閱讀。 作者采用了一個(gè)盡可能貼近現(xiàn)實(shí)操作的場(chǎng)景: 從授權(quán)頭信息中提取JWT 驗(yàn)證JWT并從中提取用戶(hù)的Email 使用用

    2024年02月08日
    瀏覽(19)
  • Jpa與Druid線程池及Spring Boot整合(一): spring-boot-starter-data-jpa 搭建持久層

    Jpa與Druid線程池及Spring Boot整合(一): spring-boot-starter-data-jpa 搭建持久層

    ? ? ? ? ? ? ? ? ? ? ? Jpa與Druid線程池及Spring Boot整合(一) Jpa與Druid線程池及Spring Boot整合(二):幾個(gè)坑 附錄官網(wǎng)文檔:core.domain-events域事件 docker實(shí)戰(zhàn)(一):centos7 yum安裝docker docker實(shí)戰(zhàn)(二):基礎(chǔ)命令篇 docker實(shí)戰(zhàn)(三):docker網(wǎng)絡(luò)模式(超詳細(xì)) docker實(shí)戰(zhàn)(四):docker架構(gòu)原理 docker實(shí)戰(zhàn)(五

    2024年02月13日
    瀏覽(34)
  • Spring Boot 3.2 + CRaC = 王炸!

    Spring Boot 3.2 + CRaC = 王炸!

    原文:https://foojay.io/today/springboot-3-2-crac/ 前段時(shí)間發(fā)布了 Spring 6.1 和 SpringBoot 3.2,它們都完全支持 CRaC(檢查點(diǎn)協(xié)調(diào)恢復(fù))。 如果你想了解有關(guān) CRaC 的更多信息,請(qǐng)隨時(shí)閱讀此處: https://docs.azul.com/core/crac/crac-introduction CRaC 是一個(gè) OpenJDK 項(xiàng)目,可以“快照”正在運(yùn)行的 JVM(

    2024年02月04日
    瀏覽(22)
  • Java spring-boot項(xiàng)目中如何上傳下載文件或圖片到spring-boot規(guī)定的非靜態(tài)目錄

    spring-boot的項(xiàng)目,雖然它自己定義了一個(gè)靜態(tài)文件的存儲(chǔ)目錄,但是這個(gè)目錄一般是作為前端靜態(tài)文件的目錄來(lái)作為使用的。如果使用這個(gè)靜態(tài)目錄來(lái)作為我們上傳文件的目錄會(huì)有一個(gè)比較尷尬的地方:將spring-boot打包成為jar包后,隨著上傳圖片的增多,這個(gè)jar包也會(huì)跟著變大

    2024年02月16日
    瀏覽(20)
  • 如何使用Nginx搭建詳細(xì)的靜態(tài)文件服務(wù)器【經(jīng)典】

    Nginx是一種強(qiáng)大的Web服務(wù)器,可以用于托管靜態(tài)文件。本文將詳細(xì)介紹如何使用Nginx搭建一個(gè)靜態(tài)文件服務(wù)器,使您能夠輕松地瀏覽目錄、導(dǎo)航子目錄和文件,并通過(guò)瀏覽器下載文件。 以下是使用Nginx搭建靜態(tài)文件服務(wù)器的詳細(xì)步驟: 步驟1:安裝Nginx 首先,確保您已經(jīng)安裝了

    2024年02月08日
    瀏覽(94)
  • Spring Boot 3.2 新特性之 HTTP Interface

    SpringBoot 3.2引入了新的 HTTP interface 用于http接口調(diào)用,采用了類(lèi)似 openfeign 的風(fēng)格。 具體的代碼參照 示例項(xiàng)目 https://github.com/qihaiyan/springcamp/tree/master/spring-http-interface HTTP Interface 是一個(gè)類(lèi)似于 openfeign 的同步接口調(diào)用方法,采用 Java interfaces 聲明遠(yuǎn)程接口調(diào)用的方法,理念上類(lèi)

    2024年02月02日
    瀏覽(25)
  • Spring Boot OAuth2 認(rèn)證服務(wù)器搭建及授權(quán)碼認(rèn)證演示

    Spring Boot OAuth2 認(rèn)證服務(wù)器搭建及授權(quán)碼認(rèn)證演示

    本篇使用JDK版本是1.8,需要搭建一個(gè)OAuth 2.0的認(rèn)證服務(wù)器,用于實(shí)現(xiàn)各個(gè)系統(tǒng)的單點(diǎn)登錄。 這里選擇Spring Boot+Spring Security + Spring Authorization Server 實(shí)現(xiàn),具體的版本選擇如下: Spirng Boot 2.7.14 , Spring Boot 目前的最新版本是 3.1.2,在官方的介紹中, Spring Boot 3.x 需要JDK 17及以上的

    2024年02月15日
    瀏覽(22)
  • Spring boot實(shí)現(xiàn)上傳文件至本地或服務(wù)器

    大家好 我是程序猿小張 圖片文件上傳是項(xiàng)目中必不可少的一個(gè)功能,上傳的地址也當(dāng)然是優(yōu)先選擇第三方的對(duì)象存儲(chǔ),例如七牛云、阿里云等等,但是當(dāng)中的話(huà)只有七牛云是有一個(gè)免費(fèi)額度的,其他都是要收錢(qián)的。所以就想著,哎,這個(gè)能不能上傳到本地呢?答案是肯定可

    2024年02月11日
    瀏覽(98)
  • Spring Boot 3.2項(xiàng)目中使用緩存Cache的正確姿勢(shì)!!!

    Spring Boot 3.2項(xiàng)目中使用緩存Cache的正確姿勢(shì)!!!

    你是否曾想過(guò)為什么在 Spring Boot 應(yīng)用中緩存是如此重要?答案在于它通過(guò)減少數(shù)據(jù)檢索時(shí)間來(lái)提高性能。在本文中,我們將深入探討緩存對(duì)微服務(wù)模式的影響,并探討根據(jù)操作易用性、速度、可用性和可觀測(cè)性等因素選擇正確緩存的重要性。我們還將探討如何最大程度地提高

    2024年02月05日
    瀏覽(29)

覺(jué)得文章有用就打賞一下文章作者

支付寶掃一掃打賞

博客贊助

微信掃一掃打賞

請(qǐng)作者喝杯咖啡吧~博客贊助

支付寶掃一掃領(lǐng)取紅包,優(yōu)惠每天領(lǐng)

二維碼1

領(lǐng)取紅包

二維碼2

領(lǐng)紅包