日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 前端技术 > HTML >内容正文

HTML

响应式web(一):什么是响应式web,异步调用,callback的本质,servlet3的异步

發布時間:2024/2/28 HTML 33 豆豆
生活随笔 收集整理的這篇文章主要介紹了 响应式web(一):什么是响应式web,异步调用,callback的本质,servlet3的异步 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

Reactive

同步與異步

傳統的web模型 “命令式編程”:阻塞式模型,一個請求發過來,也許你會開啟新的線程,但最后需要等待完成所有操作之后,才能返回response。

一個一個的操作組成了整個業務線,操作之間有先后順序。所有具有先后順序的操作,都在同一個線程內。

微服務:開啟一個新的線程A去請求別的服務,A線程要等待業務結果返回之后,才能繼續執行下面的業務邏輯。這是阻塞的。

Tomcat的NIO異步網絡

網絡連接的線程池,作用是和客戶端建立連接:BIO,NIO;你也可以用多路復用器
但是到了Tomcat之后,業務線程要阻塞地等待業務處理結果,才能返回。
固定線程:連接線程與業務線程1:1的比例,這樣的模式的缺陷是
每開啟一個線程,需要1024KB的棧內存開銷;(64位 jdk8下)
500個并發請求,在JVM至少需要占用500M內存,這還是沒干活的情況下。如果棧內存滿了,會stack over flow,整個JVM的棧就掛了。
當線程個數越多,系統響應的時間會越長。

如何具有彈性?用線程池。

輪詢/長輪詢
長連接是客戶端和服務端同時設置才生效,長輪詢是服務端編程處理手動掛起請求,與客戶端無關。

長輪詢:http可以保持90s,90s還沒有返回的話,需要續租。這樣就用http協議偽造了一個假的長連接。
這就是響應式的web。響應的是誰?響應的是客戶端。
keep-alived:復用的TCP的連接通道,http復用了tcp連接。http是無狀態的,并不是復用的http連接。

長輪詢
SSE:Server sent event,服務器發送事件。服務器給我推消息,我就沒法給服務器推消息了。

傳統的sevlet api,SSE:


拋一個線程,實際上并不是異步,因為還要等后面的線程返回數據,才能繼續

觀察者模式

你要有一個Observer對象,有一個Subject對象。Observer作為觀察者,觀察有沒有新的事件發生。
要有一個觀察者里面存了List,集合里面存放事件。

A是一個線程組,B也是一個線程組。A想要吃飯,告訴觀察者。觀察者讓B做飯。B做完飯返回,A再去觀察者那里拿。
每一個線程都在做自己該做的事,解耦。線程之間通過觀察者通信。

兩個線程組的連接數量是不對等的。

線程池是獨立的,相互之間不影響,這樣就不會因為某個業務阻塞。

懂了這個原理,然后我們就可以開始引入響應式的框架webflux了。

命令式編程與響應式


服務器推技術,Servlet3.0與3.1…

總結

以上是生活随笔為你收集整理的响应式web(一):什么是响应式web,异步调用,callback的本质,servlet3的异步的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。