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

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程语言 > java >内容正文

java

图灵学院Java架构师五期笔记

發布時間:2024/1/1 java 38 豆豆
生活随笔 收集整理的這篇文章主要介紹了 图灵学院Java架构师五期笔记 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

緣起
日前在看netty的工作原理,對netty的線程模型很是不能理解,查閱了諸多資料,終于有了一些眉目。特此記錄,以備查閱。

閱讀對象
netty中的NIO編程模型是基于java Nio的封裝,所以需要讀者對java NIO有一定的了解,篇幅所限,本文不會對NIO再做詳述,有需要的讀者可以查看??JAVA BIO,NIO,AIO詳解(附代碼實現)以及Netty的簡介??

Netty的NIO線程模型
說netty的線程模型之前,先說傳統NIO的使用方式中的關鍵代碼

可以看到是當前線程獲得了客戶端的連接之后再重新把channel注冊到selector上,同時把事件注冊為讀,這樣就可以開始讀消息了。也就是說獲取tcp連接和讀取消息都是在同一個線程里面處理的。那么這種方式有什么問題呢?對于一些小流量應用場景,可以使用單線程模型。但是對于高負載、大并發的應用場景卻不合適,主要原因如下:


一個 NIO 線程同時處理成百上千的鏈路,性能上無法支撐,即便 NIO 線程的 CPU 負荷達到 100%,也無法滿足海量消息的編碼、解碼、讀取和發送;
當 NIO 線程負載過重之后,處理速度將變慢,這會導致大量客戶端連接超時,超時之后往往會進行重發,這更加重了 NIO 線程的負載,最終會導致大量消息積壓和處理超時,成為系統的性能瓶頸;
可靠性問題:一旦 NIO 線程意外跑飛,或者進入死循環,會導致整個系統通信模塊不可用,不能接收和處理外部消息,造成節點故障。

那么你可能會想,既然一個線程不行,那我在讀取消息的時候采用線程池不就可以了嗎?的確是可行的,事實上,在Netty中也確實是這么做的。

netty的一個啟動程序如下

可以看到開頭new了兩個EventLoopGroup,EventLoopGroup可以暫時理解為一個線程組。其中bossGroup負責處理客戶端的 TCP 連接請求,如果系統只有一個服務端端口需要監聽,則建議 bossGroup 線程組線程數設置為 1,workerGroup 是真正負責 I/O 讀寫操作的線程組

先看一張netty的執行流程圖

圖中可以看到boosGroup在接收到請求后會重新注冊到workerGroup上,也就是對應了前面說的bossGroup負責處理客戶端的 TCP 連接請求,而workerGroup是真正負責 I/O 讀寫操作的線程組。就像軟件開發里面的boss負責分配任務,而worker即程序員負責寫代碼。那么bossGroup是如何處理tcp的連接請求同時把他注冊到workerGroup上的呢?

bossGroup是如何分配任務的
workerGroup中的每一個線程,都有一個多路復用器 Selector,bossGroup每接收到一個客戶端連接,就會從workerGroup選擇一個線程然后把channel注冊到它的Selector上。

偽代碼實現

boss中的代碼

可以看到,bossGroup接收到了新客戶端的請求后,就會調用一個算法,從多個worker中選取一個worker,然后調用worker的注冊方法,把這個新客戶端的channel注冊上去。我們再看workerGroup中的注冊方法實現

可以看到,就是把新的channel注冊到自己的Selector上,注冊好后就會觸發workerGroup的堵塞代碼塊,這樣這個workerGroup中的這個線程就會開始讀取數據,下面看看worker線程讀取數據的偽代碼實現(其實就是普通的NIO中讀取數據的方式)

總結:bossGroup負責處理客戶端的 TCP 連接請求,bossGroup每接收到一個客戶端連接,就會從workerGroup選擇一個線程然后把channel注冊到它的Selector上,這樣的話請求接收和請求處理就通過不同的線程分開了,這也是netty高效的原因之一。當然Netty高效的原因絕不僅僅是由于優秀的線程模型的設計,與Netty的編碼協議,virtual buffer,以及Zero-Copy(零拷貝)也息息相關 。

總結

以上是生活随笔為你收集整理的图灵学院Java架构师五期笔记的全部內容,希望文章能夠幫你解決所遇到的問題。

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

主站蜘蛛池模板: 天天摸天天做天天爽 | 中文字幕日本一区二区 | 久久久久综合网 | 黑人操欧美人 | 六月婷婷七月丁香 | 国产精品国产三级国产aⅴ浪潮 | 国产黄色片子 | 国产夜色精品一区二区av | 国产91久久婷婷一区二区 | 亚洲25p| av在线成人 | 欧美乱子伦 | 欧美高大丰满少妇xxxx | 国产精品日日做人人爱 | 亚洲成人播放 | 宝贝乖h调教灌尿穿环 | 日韩美女一区 | 成人网入口 | 女人张开腿让男人桶爽 | 91久久中文字幕 | 亚一区二区 | 毛片毛片毛片毛片毛片毛片毛片 | 99riAv国产精品无码鲁大师 | 人妻少妇偷人精品久久性色 | 亚洲大尺度av| 可以免费看污视频的网站 | 色啪视频 | 免费在线观看污 | 中文字幕在线播放第一页 | 国产精品免费无遮挡无码永久视频 | 男人狂揉女人下部视频 | 国产在线一二 | 欧美成人三级精品 | 一本在线免费视频 | 国产男男gay体育生网站 | 白白色在线播放 | 日韩乱码一区二区 | 一级特黄av | 91在线无精精品白丝 | a级免费网站 | 玖玖爱在线精品视频 | 无码人妻aⅴ一区二区三区日本 | 欧美在线不卡视频 | 欧美36p | 国产黄站| 黄色片网站在线观看 | 中文字幕人妻伦伦 | 天堂精品一区二区三区 | 久久久久九九九九 | xxxxx亚洲| 人人超碰在线 | 欧美xxxxav | 99热影院| 日韩中文字幕免费 | 亚洲综合中文字幕在线 | 亚洲AV成人无码电影在线观看 | 国产视频资源 | 欧美日韩精品一区二区在线观看 | 欧美情侣性视频 | 欧美黑人精品一区二区不卡 | 免费在线黄色片 | 亚洲综合黄色 | 久久国产美女 | h片大全| 国产制服丝袜在线 | 免费一区视频 | 免费荫蒂添的好舒服视频 | 国产精品视频久久久 | 自拍偷拍亚洲 | 九九九视频在线观看 | 神马久久精品 | 奇米在线视频 | 国内毛片毛片毛片毛片毛片 | 日本精品在线一区 | 借种(出轨高h) | 国产一级片免费在线观看 | 久久中文字幕精品 | 日韩极品一区 | 国产婷婷色一区二区三区在线 | 91麻豆蜜桃一区二区三区 | 色av一区二区三区 | 爱情岛亚洲论坛入口福利 | 日韩精品免费电影 | 波多野结衣视频播放 | 成人小视频在线看 | 理论片第一页 | 久久午夜场 | 国产在线一区不卡 | 主播福利在线 | 超碰公开免费 | 都市激情亚洲色图 | 亚州男人的天堂 | 久久久久国色av免费观看性色 | 国产精品69久久久久 | 香蕉视频18 | 国产大片黄 | 99久久综合网 | 日韩精品免费一区二区夜夜嗨 | 中国少妇高潮 |