天天看點

springMvc與springWebflux簡介

springMvc與springWebflux簡介

1.個人了解

同步:一直等待得到結果。

異步:一個線程接受請求後 直接傳回 并不會得到結果 等後端處理完畢之後 在選擇一個線程傳回結果。

阻塞:等待着一個請求完成 挂起線程 沒完成的話下一個請求不執行

非阻塞:在一個請求執行時并且沒得到結果 不會阻塞改線程

1.springMvc

springMvc一般會部署在tomcat上,而tomcat一般會建立一個線程池,每發送一個請求,就會為請求綁定一個線程,對于每個線程是同步阻塞的。(也可以配置成異步 這樣會提升吞吐量) 當請求過多,線程池中線程消耗完畢之後,服務就會阻塞,這樣會大大影響,服務的效率,同時因為線程池也太過沉重,這樣就引出了webFlux。

2.springWebFlux

WebFlux隻是響應式程式設計中的一部分(在Web控制端),是以一般我們用它與SpringMVC來對比,而webFlux通過資料流和響應式程式設計使服務異步非阻塞。

2.同步、異步、阻塞、非阻塞解釋

老張愛喝茶,廢話不說,煮開水。

出場人物:老張,水壺兩把(普通水壺,簡稱水壺;會響的水壺,簡稱響水壺)。

1 老張把水壺放到火上,立等水開。(同步阻塞)

老張覺得自己有點傻

2 老張把水壺放到火上,去客廳看電視,時不時去廚房看看水開沒有。(同步非阻塞)

老張還是覺得自己有點傻,于是變高端了,買了把會響笛的那種水壺。水開之後,能大聲發出嘀~~~~的噪音。

3 老張把響水壺放到火上,立等水開。(異步阻塞)

老張覺得這樣傻等意義不大

4 老張把響水壺放到火上,去客廳看電視,水壺響之前不再去看它了,響了再去拿壺。(異步非阻塞)

老張覺得自己聰明了。

所謂同步異步,隻是對于水壺而言。

普通水壺,同步;響水壺,異步。

雖然都能幹活,但響水壺可以在自己完工之後,提示老張水開了。這是普通水壺所不能及的。

同步隻能讓調用者去輪詢自己(情況2中),造成老張效率的低下。

所謂阻塞非阻塞,僅僅對于老張而言。

立等的老張,阻塞;看電視的老張,非阻塞。

情況1和情況3中老張就是阻塞的,媳婦喊他都不知道。雖然3中響水壺是異步的,可對于立等的老張沒有太大的意義。是以一般異步是配合非阻塞使用的,這樣才能發揮異步的效用。