簡體   English   中英

Spring Web MVC 與 Spring WebFlux。 阻塞和非阻塞

[英]Spring Web MVC vs Spring WebFlux. Blocking and Non-blocking

我是 Spring 的新手,我正在讀一本書“Pro Spring boot 2”。 這里說 Spring Web MVC 對每個請求都有一些阻塞,而 Spring Webflux 是一個完全非阻塞的堆棧。

  1. 請告訴我,這是什么意思?
  2. 來到 Spring MVC 的請求激活一個線程來執行這個請求。 何時以及為何被封鎖?
  3. 為什么 Spring WebFlux 不阻塞線程?
  1. Spring Web MVC 使用單個線程來處理對 API 的每個請求。 Spring Webflux 不會阻塞線程來處理每個請求,因為沒有線程一直在等待完成某些事情(例如等待來自數據庫的回答)。
  2. 如 1. 中所寫,它可以在等待來自數據庫或通過 HTTP 調用的另一個服務的答案時被阻止。
  3. Spring Webflux 利用了完全無阻塞的反應式堆棧(查看https://projectreactor.io/ )。 這意味着沒有線程被阻塞等待某事發生。 一切都基於響應式流發布者( MonoFlux )使您的代碼對可用的數據(來自數據庫或通過 HTTP 調用的另一個服務作為示例)進行響應。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM