日韩黑丝制服一区视频播放|日韩欧美人妻丝袜视频在线观看|九九影院一级蜜桃|亚洲中文在线导航|青草草视频在线观看|婷婷五月色伊人网站|日本一区二区在线|国产AV一二三四区毛片|正在播放久草视频|亚洲色图精品一区

分享

為什么Netty使用NIO而不是AIO?

 liang1234_ 2019-02-21

NIO模型
同步非阻塞
NIO有同步阻塞和同步非阻塞兩種模式,一般講的是同步非阻塞,服務(wù)器實(shí)現(xiàn)模式為一個(gè)請(qǐng)求一個(gè)線程,但客戶端發(fā)送的連接請(qǐng)求都會(huì)注冊(cè)到多路復(fù)用器上,多路復(fù)用器輪詢到連接有I/O請(qǐng)求時(shí)才啟動(dòng)一個(gè)線程進(jìn)行處理。
AIO模型
異步非阻塞
服務(wù)器實(shí)現(xiàn)模式為一個(gè)有效請(qǐng)求一個(gè)線程,客戶端的I/O請(qǐng)求都是由OS先完成了再通知服務(wù)器應(yīng)用去啟動(dòng)線程進(jìn)行處理,
注:AIO又稱為NIO2.0,在JDK7才開(kāi)始支持。

為什么Netty使用NIO而不是AIO?

  1. Netty不看重Windows上的使用,在Linux系統(tǒng)上,AIO的底層實(shí)現(xiàn)仍使用EPOLL,沒(méi)有很好實(shí)現(xiàn)AIO,因此在性能上沒(méi)有明顯的優(yōu)勢(shì),而且被JDK封裝了一層不容易深度優(yōu)化
  2. Netty整體架構(gòu)是reactor模型, 而AIO是proactor模型, 混合在一起會(huì)非?;靵y,把AIO也改造成reactor模型看起來(lái)是把epoll繞個(gè)彎又繞回來(lái)
  3. AIO還有個(gè)缺點(diǎn)是接收數(shù)據(jù)需要預(yù)先分配緩存, 而不是NIO那種需要接收時(shí)才需要分配緩存, 所以對(duì)連接數(shù)量非常大但流量小的情況, 內(nèi)存浪費(fèi)很多
  4. Linux上AIO不夠成熟,處理回調(diào)結(jié)果速度跟不到處理需求,比如外賣員太少,顧客太多,供不應(yīng)求,造成處理速度有瓶頸(待驗(yàn)證)

作者原話:
Not faster than NIO (epoll) on unix systems (which is true)
There is no daragram suppport
Unnecessary threading model (too much abstraction without usage)

其他:
Netty背后的事件驅(qū)動(dòng)機(jī)制


技術(shù)討論 & 疑問(wèn)建議 & 個(gè)人博客

版權(quán)聲明: 本博客所有文章除特別聲明外,均采用 CC BY-NC-SA 3.0 許可協(xié)議,轉(zhuǎn)載請(qǐng)注明出處!

    本站是提供個(gè)人知識(shí)管理的網(wǎng)絡(luò)存儲(chǔ)空間,所有內(nèi)容均由用戶發(fā)布,不代表本站觀點(diǎn)。請(qǐng)注意甄別內(nèi)容中的聯(lián)系方式、誘導(dǎo)購(gòu)買等信息,謹(jǐn)防詐騙。如發(fā)現(xiàn)有害或侵權(quán)內(nèi)容,請(qǐng)點(diǎn)擊一鍵舉報(bào)。
    轉(zhuǎn)藏 分享 獻(xiàn)花(0

    0條評(píng)論

    發(fā)表

    請(qǐng)遵守用戶 評(píng)論公約

    類似文章 更多