精品欧美一区二区三区在线观看 _久久久久国色av免费观看性色_国产精品久久在线观看_亚洲第一综合网站_91精品又粗又猛又爽_小泽玛利亚一区二区免费_91亚洲精品国偷拍自产在线观看 _久久精品视频在线播放_美女精品久久久_欧美日韩国产成人在线

同步 vs 異步性能差十倍!SpringBoot 高吞吐接口實現終極方案

數據庫
在 Java 世界里,同步接口就像這位 “一根筋” 的柜員 ——Tomcat 線程池里的每個線程都必須從頭到尾處理一個請求,哪怕中間需要等待數據庫查詢、調用第三方接口這類耗時操作。

兄弟們,當你去銀行辦業務,柜員必須等你填完表格、簽字、蓋章,再慢悠悠處理下一個客戶。這種模式就是同步編程的典型寫照。在 Java 世界里,同步接口就像這位 “一根筋” 的柜員 ——Tomcat 線程池里的每個線程都必須從頭到尾處理一個請求,哪怕中間需要等待數據庫查詢、調用第三方接口這類耗時操作。

這種模式在低并發時沒啥問題,但一旦流量暴漲,就會暴露三大致命缺陷:

  • 線程資源黑洞:Tomcat 默認線程數有限(比如 200 個),如果每個請求都卡在 IO 操作上,新請求只能在隊列里排隊,甚至直接被拒絕。這就像收費站只有 200 個窗口,后面的車卻排到了天邊。
  • CPU 摸魚現場:當線程被 IO 阻塞時,CPU 只能閑著發呆。你的服務器有 8 核 CPU 又怎樣?全被 “堵車” 的線程拖后腿。
  • 資源耗盡危機:被阻塞的線程仍然占用內存、網絡連接等資源。高并發下,這些資源很快就會被榨干,導致系統崩潰。

一、異步編程:開啟線程 “渦輪增壓”

異步編程就像給收費站開通了 “ETC 專用車道”——Tomcat 線程只負責接收請求和返回結果,耗時操作交給專門的線程池處理。這樣一來,Tomcat 線程可以被高效復用,吞吐量自然飆升。

Spring Boot 提供了四種異步實現方式,每種都有獨特的 “技能點”:

1. Callable:簡單粗暴的異步入門

@GetMapping("/async-callable")
public Callable<String> asyncCallable() {
    return () -> {
        // 模擬耗時操作
        Thread.sleep(1000);
        return "Hello, Callable!";
    };
}
  • 原理:Tomcat 線程接收到請求后,立即返回一個 Callable 對象,然后釋放自身去處理其他請求。Callable 中的代碼會被提交到 AsyncTaskExecutor 線程池執行。
  • 缺點:默認使用 SimpleAsyncTaskExecutor,每次都會創建新線程。高并發下容易導致性能問題,建議自定義線程池。

2. WebAsyncTask:帶 “超時控制” 的升級版

@GetMapping("/async-web")
public WebAsyncTask<String> asyncWeb() {
    Callable<String> task = () -> {
        Thread.sleep(2000);
        return "Hello, WebAsyncTask!";
    };
    return new WebAsyncTask<>(3000, task); // 3秒超時
}
  • 優勢:支持設置超時時間(優先級高于全局配置),還能添加超時回調、錯誤回調等事件監聽。
  • 應用場景:適合需要精確控制任務執行時間的場景,比如限時搶購接口。

3. DeferredResult:靈活的 “結果托管”

private final Map<String, DeferredResult<String>> deferredResultMap = new ConcurrentHashMap<>();
@GetMapping("/async-deferred")
public DeferredResult<String> asyncDeferred() {
    DeferredResult<String> deferredResult = new DeferredResult<>(60000L);
    deferredResultMap.put("key", deferredResult);
    // 設置超時回調
    deferredResult.onTimeout(() -> deferredResult.setErrorResult("請求超時"));
    return deferredResult;
}
// 另一個線程設置結果
public void setDeferredResult() {
    DeferredResult<String> deferredResult = deferredResultMap.get("key");
    deferredResult.setResult("Hello, DeferredResult!");
}
  • 原理:控制器返回 DeferredResult 后,Tomcat 線程立即釋放。結果可以在另一個線程中通過setResult()方法設置,適合長輪詢等復雜場景。
  • 注意事項:必須及時清理過期的 DeferredResult 對象,避免內存泄漏。

4. @Async 注解:方法級別的 “懶人異步”

@Service
public class AsyncService {
    @Async("taskExecutor") // 指定線程池
    public CompletableFuture<String> asyncMethod() throws InterruptedException {
        Thread.sleep(1000);
        return CompletableFuture.completedFuture("Hello, @Async!");
    }
}
@RestController
public class AsyncController {
    @Autowired
    private AsyncService asyncService;
    @GetMapping("/async-annotation")
    public CompletableFuture<String> asyncAnnotation() {
        return asyncService.asyncMethod();
    }
}
  • 優勢:通過 AOP 代理實現異步調用,代碼侵入性低,適合將耗時操作封裝在 Service 層。
  • 坑點:同一類中調用 @Async 方法無效,因為 Spring AOP 無法攔截內部調用。

二、線程池配置:異步系統的 “心臟”

不管用哪種異步方式,線程池配置都是性能的關鍵。以ThreadPoolExecutor為例,核心參數如下:

  • corePoolSize:核心線程數,線程池啟動時創建的線程數。
  • maxPoolSize:最大線程數,線程池允許創建的最大線程數。
  • queueCapacity:任務隊列容量,建議根據業務場景設置為有界隊列(如ArrayBlockingQueue),避免內存溢出。
  • keepAliveTime:非核心線程的存活時間。
  • 拒絕策略:當線程池和隊列都滿時,如何處理新任務。常見策略有AbortPolicy(直接拒絕)、DiscardPolicy(靜默丟棄)等。

最佳實踐:

  • IO 密集型任務:核心線程數可設置為 CPU 核心數的 2-3 倍,充分利用線程等待 IO 的時間。
  • CPU 密集型任務:核心線程數應等于 CPU 核心數,避免過多線程上下文切換。
  • 動態監控:通過 Spring Boot Actuator 監控線程池狀態,及時調整參數。

三、性能測試:用數據說話

1. JMeter 壓測實戰

  • 步驟 1:創建線程組,設置線程數(如 1000)、Ramp-Up 時間(模擬流量逐漸增加)。
  • 步驟 2:添加 HTTP 請求默認值,配置接口 URL、請求方法。
  • 步驟 3:添加聚合報告監聽器,查看吞吐量(TPS)、響應時間等指標。

2. 測試結果對比

假設同步接口 TPS 為 1000,異步接口可輕松達到 10000+,性能提升 10 倍以上!但要注意:異步接口的單次響應時間可能略高于同步接口,因為涉及線程切換開銷。

3. 監控工具推薦

  • Arthas:實時查看線程狀態、方法執行耗時,定位性能瓶頸。
  • Grafana + Prometheus:可視化監控線程池、JVM 內存等指標。

四、WebFlux:響應式編程的 “終極殺器”

如果你追求極致性能,Spring WebFlux 響應式編程是必學技能。它基于 Netty 實現全異步非阻塞處理,吞吐量比傳統 Servlet 容器高 3-5 倍。

1. 核心特性

  • 事件驅動模型:通過少量線程(如 4 個)處理大量請求,避免線程上下文切換開銷。
  • 背壓(Backpressure)機制:消費者可以控制生產者的生產速度,防止數據過載。
  • 零拷貝技術:數據直接在內核緩沖區和網絡套接字之間傳輸,減少內存拷貝次數。

2. 代碼示例

@RestController
@RequestMapping("/webflux")
public class WebFluxController {
    @GetMapping("/flux")
    public Flux<String> flux() {
        return Flux.interval(Duration.ofSeconds(1))
                .map(i -> "Data " + i);
    }
}
  • 原理:返回Flux或Mono類型表示異步數據流,數據會被自動序列化為響應體。
  • 注意事項:WebFlux 要求數據庫驅動、第三方客戶端等全鏈路支持響應式編程,否則性能優勢會大打折扣。

3. 性能對比

指標

Spring MVC(Tomcat)

Spring WebFlux(Netty)

吞吐量

12K req/s

38K req/s

內存占用

1.2GB

860MB

CPU 利用率

92%

78%

Full GC 次數 / 小時

8 次

0 次

五、數據庫優化:異步系統的 “糧草補給線”

即使接口異步化,如果數據庫訪問依然是瓶頸,整體性能也會大打折扣。以下是幾個優化方向:

1. 連接池配置

  • HikariCP:Spring Boot 默認連接池,參數優化示例:
spring.datasource.hikari.maximum-pool-size=100
spring.datasource.hikari.minimum-idle=20
spring.datasource.hikari.idle-timeout=30000
spring.datasource.hikari.max-lifetime=600000
  • 異步連接池:使用 R2DBC(如spring-boot-starter-data-r2dbc)實現數據庫訪問異步化,避免阻塞 WebFlux 線程。

2. 索引優化

  • 覆蓋索引:確保查詢字段都包含在索引中,避免回表查詢。
CREATE INDEX idx_user ON users(user_id, username);
  • 索引選擇性:為選擇性高的字段(如user_id)添加索引,避免在性別、狀態等低選擇性字段上創建索引。

3. 批量操作

  • JPA 批量插入:使用@Modifying注解和@Query批量更新,避免逐條操作。
@Modifying
@Query("UPDATE User u SET u.status = :status WHERE u.id IN :ids")
void batchUpdateStatus(@Param("status") String status, @Param("ids") List<Long> ids);
  • 異步批量處理:結合@Async注解或 WebFlux 實現異步批量操作,提升吞吐量。

六、終極方案:全鏈路異步架構

要實現 “性能差 10 倍” 的目標,需要從客戶端到數據庫的全鏈路異步化:

  • 前端:使用 Axios 等支持 Promise 的 HTTP 庫,避免同步請求阻塞頁面渲染。
  • 網關層:Nginx 開啟異步 IO(use [kqueue|epoll]),配置keepalive_timeout減少連接開銷。
  • 服務層:Spring Boot 采用 WebFlux 響應式編程,結合@Async注解實現業務邏輯異步化。
  • 數據庫層:使用 R2DBC 驅動 + 異步連接池,配合覆蓋索引、批量操作優化查詢性能。
  • 第三方調用:通過 WebClient 發起響應式 HTTP 請求,避免阻塞線程。

七、避坑指南:這些 “坑” 你踩過嗎?

  • 異步調用無效:同一類中調用@Async方法,或未啟用@EnableAsync注解。
  • 線程池耗盡:未正確配置maxPoolSize和queueCapacity,導致任務被拒絕。
  • 內存泄漏:未及時清理DeferredResult、Callable等異步對象。
  • 阻塞代碼混入:在 WebFlux 控制器中使用Thread.sleep()等阻塞方法,導致事件循環線程被占用。

結語

同步編程就像綠皮火車,雖然穩定但速度慢;而異步編程則是高鐵,能在高并發場景下輕松 “飆車”。通過 Spring Boot 的異步實現、線程池調優、WebFlux 響應式編程和數據庫優化,你完全可以打造出吞吐量提升 10 倍的高性能接口。記?。寒惒讲皇倾y彈,但在 IO 密集型場景下,它就是性能優化的核武器!

責任編輯:姜華 來源: 石杉的架構筆記
相關推薦

2025-04-16 08:25:00

2024-09-12 15:24:29

2024-09-09 14:12:38

2025-03-13 11:59:00

2025-05-26 00:02:00

TypeScriptGo 語言前端

2025-06-05 04:22:00

SQL性能索引

2023-09-07 11:29:36

API開發

2024-10-09 11:31:51

2009-12-15 21:49:05

2025-10-10 05:56:11

2025-07-08 09:33:08

2022-04-28 07:31:41

Springkafka數據量

2017-09-26 14:56:57

MongoDBLBS服務性能

2022-09-15 16:59:46

人工智能空調能源

2016-07-07 15:38:07

京東

2021-04-13 14:25:41

架構運維技術

2009-11-19 08:46:16

Windows 7系統驅動

2025-06-05 03:00:00

Spring異步接口

2025-08-12 07:46:29

2021-09-13 10:25:35

開發技能代碼
點贊
收藏

51CTO技術棧公眾號

久久久久久国产精品视频| 国产免费又粗又猛又爽| 亚洲aⅴ乱码精品成人区| 久久xxxx| 麻豆国产va免费精品高清在线| 久久久久中文字幕亚洲精品| 亚洲精品福利电影| 亚洲丝袜另类动漫二区| 精品国产二区在线| 91精东传媒理伦片在线观看| 亚洲三级国产| 久久国产一区二区三区| 一本加勒比波多野结衣| 欧美jizz18| 黄网动漫久久久| 中日韩在线视频| 三区在线观看| 国产盗摄视频一区二区三区| 国产精品 欧美在线| 麻豆疯狂做受xxxx高潮视频| 国产一区二区精品久| 日韩三级.com| 亚洲欧美自拍另类日韩| 第一福利在线视频| 亚洲九九爱视频| 五月天国产一区| 午夜视频免费在线| 国产成人av资源| 国产乱肥老妇国产一区二| 毛片在线免费视频| 欧美日韩福利| 久久综合网hezyo| 超碰人人干人人| 欧美精品momsxxx| 亚洲精品720p| 91精品人妻一区二区三区四区| 九七电影院97理论片久久tvb| 粉嫩av一区二区三区免费野| 99热久久这里只有精品| yellow91字幕网在线| 国产精品九色蝌蚪自拍| 欧美亚洲另类在线一区二区三区 | 波多野结衣中文在线| 国产精品免费视频观看| 欧美自拍资源在线| 西西人体44www大胆无码| 成熟亚洲日本毛茸茸凸凹| 91免费欧美精品| 国产日韩一级片| 激情六月婷婷久久| 91欧美激情另类亚洲| 一级特黄aaa大片| 麻豆精品一区二区| 国产日韩精品在线播放| 国产在线一级片| 日本视频一区二区三区| 国产精品久久久久久久久影视| 欧美精品一二三四区| 亚洲影院一区| 国产91精品最新在线播放| 五月婷婷激情视频| 日本亚洲免费观看| 国产色视频一区| 国产免费高清视频| 国产成人免费视频| 国产区欧美区日韩区| 日中文字幕在线| 国产午夜精品美女毛片视频| 婷婷精品国产一区二区三区日韩 | 国产亚洲精品久| 日韩性感在线| 老司机午夜在线| 一区二区三区不卡视频在线观看| 国产精品无码免费专区午夜| 国产福利片在线观看| 欧美午夜激情小视频| 色哟哟精品视频| 日韩午夜视频在线| 欧美大黄免费观看| 国产 中文 字幕 日韩 在线| 国产精品一区高清| 日韩在线观看免费全| 青娱乐免费在线视频| 国产一区二区你懂的| 国产精品免费久久久久久| 国产欧美一区二区三区视频在线观看| 国产成人自拍网| 久久天天狠狠| 秋霞影院午夜丰满少妇在线视频| 亚洲欧洲制服丝袜| 青青艹视频在线| 伦一区二区三区中文字幕v亚洲| 在线不卡中文字幕播放| 9.1在线观看免费| 国产亚洲电影| 久久久久国产精品免费| 无码人妻一区二区三区免费| 国产激情一区二区三区| 国产美女在线精品免费观看| 超碰国产在线| 亚洲不卡一区二区三区| 免费av不卡在线| 秋霞影院一区二区三区| 久久夜色精品国产欧美乱| 国产精品suv一区二区三区| 久久国产精品72免费观看| 国产无套精品一区二区| 免费人成在线观看播放视频| 精品久久久久久国产| 在线观看国产一级片| 欧美大胆视频| 欧美国产高跟鞋裸体秀xxxhd| 少妇高潮av久久久久久| 高清国产午夜精品久久久久久| 日韩精品欧美一区二区三区| ririsao久久精品一区| 欧美日本乱大交xxxxx| 久久久久久久久久久国产精品| 欧美福利电影在线观看| 国产精品久久一区主播| 无码精品人妻一区二区| 亚洲一区在线观看视频| 天堂在线一区二区三区| 欧美一区二区三区高清视频| 97人洗澡人人免费公开视频碰碰碰| a天堂视频在线| 中文字幕一区二| 三级在线免费看| 国产乱码精品一区二区亚洲| 午夜美女久久久久爽久久| 国产黄a三级三级看三级| 国产精品青草综合久久久久99| 黄色动漫在线免费看| 高清精品视频| 久久久久成人网| 国精产品一品二品国精品69xx | 亚洲免费电影一区| 国产精品18p| 国产精品69久久久久水密桃| 伊人色综合久久天天五月婷| 福利一区二区免费视频| 亚洲色图综合网| 亚洲中文一区二区| 日本一区二区在线不卡| www.激情小说.com| 日韩啪啪电影网| 成人亚洲综合色就1024| 黄色在线论坛| 日韩一区二区三区在线| 久久av高潮av无码av喷吹| 国产成人免费在线观看| 久久亚洲国产成人精品无码区| 北条麻妃在线一区二区免费播放 | 外国成人毛片| 最近2019中文免费高清视频观看www99 | 亚洲国产cao| 图片区偷拍区小说区| 伊人天天综合| 久久综合九色综合久99| 唐人社导航福利精品| 国产一区二区三区精品久久久 | 蜜桃视频在线一区| 亚洲欧美日产图| 国产视频一区二| 久久久久久亚洲精品| 日批免费在线观看| 日韩欧美在线网址| 五月天婷婷丁香网| 国产乱码精品一区二区三区五月婷| 少妇高潮大叫好爽喷水| 成人涩涩网站| 国产成人精彩在线视频九色| 欧美人xxx| 亚洲国产高清自拍| 久久久久精彩视频| 亚洲欧美日韩国产成人精品影院| 无码人妻丰满熟妇啪啪网站| 国产视频久久| 亚洲一区二区三区精品视频| 亚洲国产欧美在线观看| 国产91精品青草社区| 一区二区三区视频网站| 日韩女优毛片在线| 国产精品视频一区在线观看| 国产精品国产精品国产专区不蜜| av影片在线播放| 男人的天堂亚洲在线| 中文字幕一区二区三区有限公司| 7777精品| 国产精品天天狠天天看| 欧美xxxxhdvideosex| 国产午夜精品一区二区三区| 国产不卡精品视频| 欧美制服丝袜第一页| 久草免费新视频| 久久精品网站免费观看| 一级黄色大片免费看| 日韩影院精彩在线| h无码动漫在线观看| 久久福利影院| 麻豆传媒一区| 亚洲一区二区三区中文字幕在线观看 | 青青草国产成人99久久| 夜夜添无码一区二区三区| 久久精品国产99久久| 精品国产福利| 亚洲亚洲一区二区三区| 国产精品综合久久久| 涩涩在线视频| 高清欧美性猛交xxxx| 黄色网页在线播放| 中文字幕亚洲激情| 九一在线视频| 亚洲成人xxx| 99久久精品国产一区二区成人| 91精品办公室少妇高潮对白| 国产在线视频99| 亚洲图片欧美激情| 超碰97av在线| 久久精品人人爽人人爽| 国产精品无码网站| 岛国精品一区二区| 人妻体体内射精一区二区| 日本成人中文字幕在线视频 | 国产99在线| 精品中文字幕视频| 国产三级在线播放| 日韩在线观看视频免费| 成年人视频在线看| 在线播放国产一区中文字幕剧情欧美| 婷婷五月综合激情| 精品福利二区三区| 精品人妻无码一区二区三区蜜桃一 | 成人偷拍自拍| 成人9ⅰ免费影视网站| 国产美女亚洲精品7777| 亚洲r级在线观看| 婷婷激情成人| 亚洲一区二区中文字幕| 国产在线不卡一区二区三区| 国产一区二区丝袜| 欧美少妇激情| 91亚洲精华国产精华| 久久er热在这里只有精品66| 国产乱肥老妇国产一区二| 欧美一级做a| 91探花福利精品国产自产在线| 豆花视频一区| 波多野结衣精品久久| 91麻豆精品国产91久久久久推荐资源| 69174成人网| 韩国精品福利一区二区三区| 国产精品毛片va一区二区三区| 成功精品影院| 欧美一区2区三区4区公司二百 | 成人精品鲁一区一区二区| xxxx视频在线观看| gogogo免费视频观看亚洲一| 亚洲精品中文字幕在线播放| 91免费版在线看| 色欲AV无码精品一区二区久久 | 久草国产精品视频| 高潮白浆女日韩av免费看| 亚洲综合久久网| 欧美日韩精品欧美日韩精品一综合| 91麻豆一区二区| 欧美一级午夜免费电影| 精品国产18久久久久久| 亚洲精品v欧美精品v日韩精品| 欧洲天堂在线观看| 日韩亚洲第一页| 青青草视频在线免费直播| 午夜精品久久久久久99热软件| 亚洲男人av| 成人黄色大片在线免费观看| 97青娱国产盛宴精品视频| 蜜桃av噜噜一区二区三区| 精品日韩欧美一区| 蜜桃视频一区二区在线观看| 99这里有精品| 污视频免费在线观看网站| 国产精品18久久久久久久久 | 45www国产精品网站| 成人一区视频| 国产精品一区免费观看| 日韩欧美午夜| 欧美一级视频免费看| 蜜臀久久99精品久久久久久9| 不卡的一区二区| 久久精品视频在线看| 日韩一级片大全| 一本在线高清不卡dvd| 一本色道久久综合无码人妻| 欧美电视剧在线看免费| 韩国三级在线观看久| 久久99精品视频一区97| 国产黄色一区| 极品尤物一区二区三区| 中文一区一区三区免费在线观看| 国产极品尤物在线| 国产精品一区一区三区| 久久视频精品在线观看| 亚洲观看高清完整版在线观看| 成人免费一级片| 亚洲成人aaa| av官网在线播放| 国产精品国产三级国产aⅴ9色| 午夜视频一区二区在线观看| 日韩一本精品| 亚洲一区二区网站| 337p日本欧洲亚洲大胆张筱雨| 国产精品免费丝袜| 一级黄色在线视频| 亚洲精品720p| 国产精品69xx| 91精品久久香蕉国产线看观看| 精品视频免费在线观看| 欧美国产激情视频| 成人国产精品免费网站| 国产麻豆视频在线观看| 欧美日韩国产综合久久| 久久精品色图| 欧美与黑人午夜性猛交久久久| 日韩视频一二区| 神马午夜伦理影院| 久久se这里有精品| 人与动物性xxxx| 欧美体内she精视频| 国产美女性感在线观看懂色av| 韩日精品中文字幕| 国产一区福利| 妞干网在线观看视频| 成人丝袜高跟foot| 国产一级aa大片毛片| 日韩免费电影网站| 制服丝袜在线播放| 亚洲影院色无极综合| 中文字幕一区二区精品区| 中文字幕丰满乱码| 亚洲日本一区二区| 99草在线视频| 欧美激情免费在线| 97久久亚洲| 131美女爱做视频| 久久亚洲免费视频| 黄色av网站免费| 日韩网站免费观看高清| 国产成人77亚洲精品www| 亚洲一区二区免费视频软件合集| 免费在线一区观看| 三级黄色片在线观看| 欧美久久久久久蜜桃| 91精选在线| 成人做爰66片免费看网站| 在线欧美福利| 精品无码在线视频| 欧美在线一区二区| 九七久久人人| 国产成人亚洲欧美| 亚洲一区二区伦理| 精品亚洲aⅴ无码一区二区三区| 欧美在线观看视频一区二区| 男女啪啪在线观看| 91视频在线免费观看| 99精品视频免费全部在线| 一级性生活毛片| 91精品国产一区二区三区| 欧美性爽视频| 免费一区二区三区| 麻豆91在线看| 久久久夜色精品| 亚洲免费伊人电影在线观看av| 九七影院97影院理论片久久| 国产精品久久久影院| 久久综合九色综合久久久精品综合| 波多野结衣一区二区三区在线| 久久久精品999| 欧美爱爱网站| 女同激情久久av久久| 亚洲一区二区成人在线观看| 高清毛片在线看| 91九色极品视频| 视频一区二区中文字幕| 日韩精品123区| 日韩精品日韩在线观看| 国产剧情一区二区在线观看| 青青艹视频在线| 亚洲激情五月婷婷| 黄色在线播放| 动漫一区二区在线| 日韩成人午夜精品| 黄色小视频在线免费看| 国产一区二区欧美日韩| 国产精品宾馆| av免费一区二区| 欧美视频不卡中文| 性欧美videos高清hd4k| 日韩av在线电影观看| 国产98色在线|日韩| 中文字幕理论片|