亚洲激情专区-91九色丨porny丨老师-久久久久久久女国产乱让韩-国产精品午夜小视频观看

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

Java Web容器萬級并發怎么實現

發布時間:2021-12-07 14:53:31 來源:億速云 閱讀:280 作者:iii 欄目:大數據

這篇文章主要介紹“Java Web容器萬級并發怎么實現”,在日常操作中,相信很多人在Java Web容器萬級并發怎么實現問題上存在疑惑,小編查閱了各式資料,整理出簡單好用的操作方法,希望對大家解答”Java Web容器萬級并發怎么實現”的疑惑有所幫助!接下來,請跟著小編一起來學習吧!

當前的大部分 Java web 容器基于 Bio 線程模型,例如常見的 Tomcat ,默認 200 線程,即 200 連接。由此帶來的問題是,如果想提高并發,或者提高資源利用率,就得加大線程數。

如下圖:

Java Web容器萬級并發怎么實現  

于是出現了類 Netty 的 Reactor 線程模型。同時,Java 官方也設計了 Servlet 3 異步 API,可以通過返回類 Feature 的方式,實現異步編程。在某些情況下,也可以實現萬級別并發。

Java Web容器萬級并發怎么實現  

但是,為什么 Java 社區的異步編程無法推廣開來?究其原因,數據庫是罪魁禍首,再往上看,其實是 JDBC 的鍋,JDBC 定義了一套阻塞式的數據庫 IO 通信模型。這導致每次請求,線程都阻塞在等待 DB 結果。進而導致,服務器資源無法充分利用。

有沒有一種辦法,讓 Java web 應用的整個鏈路都是非阻塞的呢?

答:有。

異步編程是提高生產力的關鍵。下圖是我們今天假設的模型:

Java Web容器萬級并發怎么實現  

其實非常簡單。

我們讓 Tomcat 支持 Servlet 3 異步編程模型,接口返回 feature 即可,這個功能其實有很多web 容器都實現了。關鍵的是,我們讓 DB 客戶端和服務器都支持異步編程模型。讓 DB 像 netty 復用 IO 連接,業務線程只需要將 SQL 交給數據庫 client 即可返回 feature,然后釋放當前線程(再也不用阻塞,這是關鍵),等 DB 操作結果返回時,只需通知這個 feature 即可。這將極大的提高線程的利用率,不夸張的說,只需 8 條線程,就足以承受萬級別的并發。

整個的調用流程如下圖:

Java Web容器萬級并發怎么實現  

我們看到,當一個 http 請求過來,整個流程是無阻塞的,不用等待 數據庫 返回結果,業務只需添加回調即可,當數據庫結果返回時,自動觸發回調。

當然,這只是我的一個小設想,Mysql 要重寫連接器,我估計是太難了。但是,那些新一代的數據庫,是否能夠把連接器設計成支持異步、支持多路復用的呢?這樣,web 應用的客戶端,就能夠把整個鏈路設計成異步的,這將節約很多資源,提高生產力。

到此,關于“Java Web容器萬級并發怎么實現”的學習就結束了,希望能夠解決大家的疑惑。理論與實踐的搭配能更好的幫助大家學習,快去試試吧!若想繼續學習更多相關知識,請繼續關注億速云網站,小編會繼續努力為大家帶來更多實用的文章!

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

厦门市| 鄂尔多斯市| 资阳市| 株洲县| 安陆市| 开鲁县| 洛隆县| 霍邱县| 镇巴县| 定襄县| 平顶山市| 建德市| 澎湖县| 三门县| 佳木斯市| 西安市| 呼和浩特市| 巫山县| 内江市| 和政县| 康乐县| 崇信县| 土默特右旗| 东港市| 孝义市| 原平市| 中宁县| 色达县| 兴和县| 屏山县| 江源县| 凌云县| 珲春市| 横峰县| 称多县| 云霄县| 盐亭县| 天祝| 阿瓦提县| 衡南县| 双桥区|