Netty剖析 - 3. 總結(jié)

前言

本篇為《Netty剖析》系列最后一篇,主要對Netty做簡單的總結(jié),如果對Netty的細節(jié)感興趣,可以閱讀本系列的另外兩篇:

Netty適用場景

Netty只是一套網(wǎng)絡框架,它不可能適用于所有場景,所以選用Netty前最好能想清楚它是否能很好的應對自己的需求。想要知道Netty的適用場景最好的方式就是從Netty本身的特性出發(fā)進行思考,具體可參考本系列第一篇Netty剖析 - 1. 基礎中"Netty的特色"章節(jié),基于此,如果你的需求屬于下列場景,則Netty會比較適合你,包括:

  • 高并發(fā),實時處理,如:游戲服務器,聊天服務器,SOA調(diào)用框架,RPC框架等
  • 對網(wǎng)絡協(xié)議(傳輸層與應用層)有一定的定制需求
  • 一套代碼可能需要同時支持BIO和NIO

而其他情況,Netty并一不定適合,如:

  • 需求較簡單的網(wǎng)絡應用,則不必使用Netty,畢竟在能滿足需求的基礎上,越簡單越好
  • 單次請求處理耗時較長的應用,這種情況下NIO沒有優(yōu)勢,此時使用BIO的方式可能效果會更好

Netty支持的協(xié)議

Netty框架本身已經(jīng)對常用的協(xié)議進行了實現(xiàn),包括:

  • 應用層:HTTP,WebSocket,HTTP2,Redis,SMTP,DNS,MQTT,SSL,STARTTLS ,RTSP
  • 傳輸層:TCP,UDP,SCTP,UDT等
  • 其他:Protobuf,gzip

可以說,一般的應用使用Netty本身的支持就能滿足大部分需求,剩下的關注自己的業(yè)務即可

Netty & MINA & Jetty

Netty和MINA經(jīng)常會放在一起比較,主要是因為兩個框架有很多相似的地方,或者說它們本身就是一對兄弟 -- 都是基于Java NIO封裝的一個網(wǎng)絡框架。其實更深入的了解會發(fā)現(xiàn),Netty的作者Trustin Lee也是MINA的作者(當然已經(jīng)不繼續(xù)參與了),據(jù)說他是對MINA的代碼不滿意,才重新寫了Netty,所以看Netty的代碼經(jīng)常能看到MINA的影子,但就現(xiàn)在來說Netty的社區(qū)遠比MINA要活躍,迭代頻率也更高,大部分的特性也優(yōu)于MINA

至于Jetty之所以會拿來比較,主要是因為和Netty名字類似,但其實這兩者并沒有很大的可比性,因為Jetty是一個輕量級的servlet容器,而Netty是一個基于NIO的異步網(wǎng)絡編程框架,基于Netty可以實現(xiàn)自己的servlet容器或者其它網(wǎng)絡應用

相關項目

很多項目內(nèi)部都使用Netty作為其網(wǎng)絡處理模塊,包括:

總結(jié)

本系列主要針對Netty的基礎概念,框架結(jié)構(gòu)及特色機制做了淺顯的分析,由于本人水平有限,難免有錯誤和不合適的地方,望大家不吝指出。Netty本身是一個優(yōu)秀的框架,其源碼的層次和結(jié)構(gòu)也很清晰,值得一讀;平常很多人說熟悉網(wǎng)絡,但是大部分人也僅僅只是知道一些皮毛(也包括我自己),其實,想要寫一個健壯易用的網(wǎng)絡框架并不容易,如果需要同時支持高并發(fā),那更是難上加難,而Netty在這一點就做得很出色,不僅體現(xiàn)在其本身優(yōu)秀的代碼組織,更多的還是把一些已有的功能和思想進行合適的組裝和適當?shù)膬?yōu)化。另外,結(jié)合當今另一個炙手可熱的高性能服務器Nginx會發(fā)現(xiàn),這兩者的思想有很多相通之處,如都是基于事件機制,都分為主工作組與子工作組,都是在PipeLine上設置一系列的Handler進行數(shù)據(jù)處理,都有通過邏輯映射增強內(nèi)存效率的設計等等,很有意思,感興趣的小伙伴可以找尋相關資料進行深入研究

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

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

  • Netty的簡單介紹 Netty 是一個 NIO client-server(客戶端服務器)框架,使用 Netty...
    AI喬治閱讀 8,623評論 1 101
  • 作者:李林鋒 原文:http://www.infoq.com/cn/articles/netty-high-per...
    楊鑫科閱讀 4,119評論 0 64
  • 前言 在了解一個事物之前,最好能對它的基本屬性和相關概念有個基本的認知,所以學習Netty之前,也有必要了解與Ne...
    簡xiaoyao閱讀 1,837評論 0 10
  • 八個月以前你剛剛出世, 我欣喜的像個大孩子。 你圓圓鼓鼓的小肚子, 裝滿了未曾謀面的故事。 還記得第一次換尿不濕,...
    趙著急_閱讀 302評論 0 4
  • 阿誠快速的拿起包離開辦公室,然后他似乎覺得有些不太恰當,就重新開門把皮包隨手放回到沙發(fā)上。在樓道里,短短的距離,他...
    三石三味閱讀 288評論 4 20

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