亚洲精品久久久久久久久久久,亚洲国产精品一区二区制服,亚洲精品午夜精品,国产成人精品综合在线观看,最近2019中文字幕一页二页

0
  • 聊天消息
  • 系統(tǒng)消息
  • 評論與回復
登錄后你可以
  • 下載海量資料
  • 學習在線課程
  • 觀看技術視頻
  • 寫文章/發(fā)帖/加入社區(qū)
會員中心
創(chuàng)作中心

完善資料讓更多小伙伴認識你,還能領取20積分哦,立即完善>

3天內(nèi)不再提示

使用Spring Boot 3.2虛擬線程搭建靜態(tài)文件服務器

OSC開源社區(qū) ? 來源:程序猿DD ? 2024-01-09 09:34 ? 次閱讀
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

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

虛擬線程:利用 Project Loom 的虛擬線程釋放可擴展性,從而減少資源消耗并增強并發(fā)性。

Native Image支持:通過Native Image編譯制作速度極快的應用程序,減少啟動時間并優(yōu)化資源利用率。

JVM 檢查點:利用 CRaC 項目的 JVM 檢查點機制實現(xiàn)應用程序的快速重啟,無需冗長的重新初始化。

RestClient:采用新的 RestClient 接口的功能方法,簡化 HTTP 交互并簡化代碼。

Spring for Apache Pulsar:利用 Apache Pulsar 的強大功能實現(xiàn)強大的消息傳遞功能,無縫集成到您的 Spring Boot 應用程序中。

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

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

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

測試環(huán)境

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

軟件版本為:

Java v21.0.1

Spring Boot 3.2.1

程序配置

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

application.properties文件如下:

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

使用虛擬線程時,我們將通過添加以下行來啟用它們:

spring.threads.virtual.enabled=true

pom.xml內(nèi)容:


org.springframework.boot
spring-boot-starter-parent
3.2.1


com.example
demo
0.0.1-SNAPSHOT
demo
DemoprojectforSpringBoot

21



org.springframework.boot
spring-boot-starter-web



org.springframework.boot
spring-boot-starter-test
test


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

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

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

使用 Bombardier 的修改版本,為每次運行生成隨機請求 URL: http://localhost:3000/static/

應用場景

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

然后,在不同范圍的并發(fā)連接級別(50、100 和 300)中仔細記錄測量結(jié)果,每個級別都承受 500 萬個請求工作負載。

結(jié)果評估

除了簡單地跟蹤原始速度之外,我們還將采用詳細的指標框架來捕獲延遲分布(最小值、百分位數(shù)、最大值)和吞吐量(每秒請求數(shù))。

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

測試結(jié)果

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

06224228-ae1a-11ee-8b88-92fbcf53809c.png062f5292-ae1a-11ee-8b88-92fbcf53809c.png06390eb8-ae1a-11ee-8b88-92fbcf53809c.png06437376-ae1a-11ee-8b88-92fbcf53809c.png0647384e-ae1a-11ee-8b88-92fbcf53809c.png0653c172-ae1a-11ee-8b88-92fbcf53809c.png065b428a-ae1a-11ee-8b88-92fbcf53809c.png06666d90-ae1a-11ee-8b88-92fbcf53809c.png066b9356-ae1a-11ee-8b88-92fbcf53809c.png066fde52-ae1a-11ee-8b88-92fbcf53809c.png

總結(jié)

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

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

審核編輯:湯梓紅

聲明:本文內(nèi)容及配圖由入駐作者撰寫或者入駐合作網(wǎng)站授權轉(zhuǎn)載。文章觀點僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場。文章及其配圖僅供工程師學習之用,如有內(nèi)容侵權或者其他違規(guī)問題,請聯(lián)系本站處理。 舉報投訴
  • 服務器
    +關注

    關注

    13

    文章

    10027

    瀏覽量

    90449
  • JAVA
    +關注

    關注

    20

    文章

    2993

    瀏覽量

    115289
  • 線程
    +關注

    關注

    0

    文章

    508

    瀏覽量

    20702
  • SpringBoot
    +關注

    關注

    0

    文章

    175

    瀏覽量

    588

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

文章出處:【微信號:OSC開源社區(qū),微信公眾號:OSC開源社區(qū)】歡迎添加關注!文章轉(zhuǎn)載請注明出處。

收藏 人收藏
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

    評論

    相關推薦
    熱點推薦

    Spring Boot虛擬線程和Webflux性能對比

    早上看到一篇關于Spring Boot虛擬線程和Webflux性能對比的文章,覺得還不錯。內(nèi)容較長,抓重點給大家介紹一下這篇文章的核心內(nèi)容,方便大家快速閱讀。
    發(fā)表于 09-24 14:54 ?1517次閱讀
    <b class='flag-5'>Spring</b> <b class='flag-5'>Boot</b><b class='flag-5'>虛擬</b><b class='flag-5'>線程</b>和Webflux性能對比

    如何讓FTP文件服務器支持.7z文件

    如何讓FTP文件服務器支持.7z文件此軟件壓縮的壓縮比要比普通ZIP文件高30-50%。因此,它可以把經(jīng)WinZip壓縮的文件再壓縮2-10%。文件
    發(fā)表于 04-21 23:41

    啟動Spring Boot項目應用的三種方法

    基礎。我們知道了Spring Boot是個什么了,那么我們又該如何啟動Spring Boot應用呢?這里小編給大家推薦常用的三種方法。分別是IDEA編輯
    發(fā)表于 01-14 17:33

    如何配置嵌入式服務器

    嵌入式Web服務器每個Spring Boot Web應用程序都包含一個嵌入式Web服務器。此功能會導致許多操作方法問題,包括如何更改嵌入式服務器
    發(fā)表于 10-27 08:35

    Spring Boot使用Tomcat作為默認的嵌入式服務器

    默認情況下,Spring Boot使用Tomcat作為默認的嵌入式服務器,將其更改為Jetty,只需排除Tomcat并包含如下的Jetty即可:1. spring-boot-start
    發(fā)表于 12-15 08:59

    為什么要使用嵌入式服務器?

    嵌入式服務器就是我們的可執(zhí)行單元包含服務器的二進制文件(例如,tomcat.jar)。例如,對于一個 Spring Boot 應用程序來說,
    發(fā)表于 12-27 06:38

    服務器,服務器的作用是什么?

    服務器,服務器的作用是什么? 戴爾服務器服務器指一個管理資源并為用戶提供服務的計算機軟件,通常分為文件
    發(fā)表于 04-06 17:18 ?2.8w次閱讀

    學習Spring Boot 嵌入式服務器

    嵌入式Web服務器每個Spring Boot Web應用程序都包含一個嵌入式Web服務器。此功能會導致許多操作方法問題,包括如何更改嵌入式服務器
    發(fā)表于 10-20 15:36 ?7次下載
    學習<b class='flag-5'>Spring</b> <b class='flag-5'>Boot</b> 嵌入式<b class='flag-5'>服務器</b>

    http文件服務器

    一句命令構建文件下載服務器,局域網(wǎng)便于較大文件相互分享,使用方法:“./server.exe port”
    發(fā)表于 02-10 11:11 ?0次下載

    網(wǎng)站搭建時該如何選擇租用服務器

    搭建網(wǎng)站的時候是必須要用到服務器服務器分很多種,有用來開發(fā)游戲叫游戲服務器,用來存放數(shù)據(jù)叫數(shù)據(jù)庫服務器,有應用
    發(fā)表于 03-14 09:44 ?1134次閱讀

    FTP服務器搭建詳細步驟

    FTP服務器是一種用于文件傳輸?shù)?b class='flag-5'>服務器,它可以讓用戶通過FTP客戶端上傳和下載文件。FTP服務器是一種非常實用的
    的頭像 發(fā)表于 04-12 14:39 ?3.3w次閱讀

    JServer:用json文件做數(shù)據(jù)存儲的零代碼API測試服務器

    Rust 編寫的 json 接口和靜態(tài)文件服務器
    的頭像 發(fā)表于 07-19 16:31 ?1293次閱讀
    JServer:用json<b class='flag-5'>文件</b>做數(shù)據(jù)存儲的零代碼API測試<b class='flag-5'>服務器</b>

    服務器數(shù)據(jù)恢復-XenServer虛擬機磁盤文件數(shù)據(jù)恢復案例

    服務器數(shù)據(jù)恢復環(huán)境: 某單位一臺Dell服務器上使用RAID卡搭建了一組由4盤RAID10。 服務器安裝的XenServer虛擬化操作系
    的頭像 發(fā)表于 08-07 15:22 ?756次閱讀
    <b class='flag-5'>服務器</b>數(shù)據(jù)恢復-XenServer<b class='flag-5'>虛擬</b>機磁盤<b class='flag-5'>文件</b>數(shù)據(jù)恢復案例

    Spring Boot的啟動原理

    spring-boot-maven-plugin 的 maven 項目打包插件,可以方便的將 Spring Boot 項目打成 jar 包。這樣我們就不再需要部署 Tomcat 、Jetty等之類的 Web
    的頭像 發(fā)表于 10-13 11:44 ?1129次閱讀
    <b class='flag-5'>Spring</b> <b class='flag-5'>Boot</b>的啟動原理

    Spring Boot 3.2支持虛擬線程和原生鏡像

    Spring Boot 3.2 前幾日發(fā)布,讓我們用 Java 21、GraalVM 和虛擬線程來嘗試一下。
    的頭像 發(fā)表于 11-30 16:22 ?1368次閱讀