Why netty

Netty是一個基于事件驅(qū)動的異步高吞吐量服務(wù)器客戶端框架。它的架構(gòu)具有高性能、高擴展性及可靠性。

架構(gòu)

架構(gòu)圖片.png
  • Channel 直接負責(zé)I/O的操作的管理,比如: read, write, connect, bind等,這里所有的I/O操作都是異步的
  • EventLoop 處理所有I/O事件
  • Pipeline 負責(zé)事件在鏈中的傳播,且可以動態(tài)的調(diào)整鏈的功能。比如:http server的協(xié)議部分,可以由協(xié)議的handler來進行處理;完成協(xié)議處理后,觸發(fā)業(yè)務(wù)邏輯handler,來完成業(yè)務(wù)操作。

高性能

  • Netty基于nio, 利用Reactor模式,解決基于傳統(tǒng)I/O模式下客戶端線性增長帶來的線程問題
  • 發(fā)送和接收數(shù)據(jù)基于堆外內(nèi)存,實現(xiàn)零拷貝
  • 通過內(nèi)存池來利于ByteBuf, 避免GC帶來的性能消耗
  • 使用原子類,環(huán)形數(shù)組緩沖等提高系統(tǒng)的并發(fā)能力
    無論是Netty官方還是在業(yè)界使用中,Netty框架的性能都是佼佼者, 達到了高吞吐量低延時的目標(biāo)。

高擴展性

Netty本身實現(xiàn)了常用的協(xié)議:

Protocol.png

如果是自定義的協(xié)議,使用Netty來實現(xiàn)很容易。Netty已經(jīng)考慮到了該場景,只需要定制私有的handler,來處理私有協(xié)議的握手、加密、解密,然后動態(tài)的放到到Pipeline中即可。

可靠性

Netty的可靠性體現(xiàn)在幾個方面:

  • 內(nèi)存保護機制
  • 優(yōu)雅停機
  • 通信鏈路檢測
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容