NIO通信了解
1.數(shù)據(jù)包序列化后通過(guò)字節(jié)流管道 out(輸出)tcp/ip協(xié)議
2.高并發(fā)情況下,阻塞式的通信業(yè)務(wù)模型(每一個(gè)客服端的請(qǐng)求都會(huì)重啟一個(gè)新的線程去響應(yīng)),將極大地占用線程資源,會(huì)增大創(chuàng)建和銷(xiāo)毀的資源消耗
導(dǎo)致服務(wù)器響應(yīng)緩慢,甚至任務(wù)排隊(duì)過(guò)久、超時(shí)、丟失 ? ? ?BIO
二:NIO的通信模式:
NIO:一種非阻塞式通信模式,線程在執(zhí)行這個(gè)通信業(yè)務(wù)過(guò)程中,如果有一個(gè)環(huán)節(jié)沒(méi)有準(zhǔn)備好,那么線程可以去執(zhí)行其他任務(wù),線程占用的情況大幅度釋放。
相對(duì)于獨(dú)有組成部分:
1. Channel ?NIO 通信當(dāng)中啟用的一種高速通道,這個(gè)通道能滿足業(yè)務(wù)來(lái)回,減少50%創(chuàng)建管道資源,傳輸速度大大加快(封裝socker)
2.Buffer(緩沖區(qū)) 增大了通信的吞吐量的港口
3.Selector(多用服用注冊(cè)器) ?注冊(cè)通信事件地方,多路復(fù)用注冊(cè)器 Netty 是在nio基礎(chǔ)拓展 事件驅(qū)動(dòng)模型的通信框架
4.SelectKey Socket 事件類(lèi)型描述組件 Selectkey包含了信息包中所屬哪個(gè)客戶端的信息(Channel信息),還包含了這個(gè)通信的具體事件類(lèi)型
一個(gè)線程可以維護(hù)Selector達(dá)到維護(hù)對(duì)個(gè)客戶端通信業(yè)務(wù)
總結(jié):1.NIO是基于事件驅(qū)動(dòng)模型,因此占用服務(wù)器資源大大減少
2.緩存區(qū)的出現(xiàn)配上高速通道 大大加速傳輸?shù)男?/p>
3.一個(gè)線程維護(hù)多個(gè)客戶端處理模型(客戶端的狀態(tài)都是維護(hù)在Select 一個(gè)線程去監(jiān)聽(tīng)Selector 等于維護(hù)了多個(gè)客戶端)
4.SelectKey ?Channel 里面的信息 ,信息包含這個(gè)客戶端的信息和客戶端處于什么事件類(lèi)型
Netty 緩存區(qū)改善:
線程池維護(hù)多個(gè)Selector
引進(jìn)Reactor線程模型 通過(guò)啟動(dòng)參數(shù)確定最終適合系統(tǒng)的運(yùn)行模式 輔助啟動(dòng)類(lèi)的構(gòu)建使用
緩沖區(qū)讀寫(xiě)模式切換不需要手動(dòng)了
?
轉(zhuǎn)載于:https://www.cnblogs.com/yxb-ylp-520/p/7732768.html
總結(jié)
- 上一篇: 欢迎来怼第二周Scrum会议六(总第十三
- 下一篇: 设计模式 (3) : 单例模式的几种方法