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

前言

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

Netty適用場(chǎng)景

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

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

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

  • 需求較簡(jiǎn)單的網(wǎng)絡(luò)應(yīng)用,則不必使用Netty,畢竟在能滿足需求的基礎(chǔ)上,越簡(jiǎn)單越好
  • 單次請(qǐng)求處理耗時(shí)較長(zhǎng)的應(yīng)用,這種情況下NIO沒(méi)有優(yōu)勢(shì),此時(shí)使用BIO的方式可能效果會(huì)更好

Netty支持的協(xié)議

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

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

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

Netty & MINA & Jetty

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

至于Jetty之所以會(huì)拿來(lái)比較,主要是因?yàn)楹蚇etty名字類似,但其實(shí)這兩者并沒(méi)有很大的可比性,因?yàn)镴etty是一個(gè)輕量級(jí)的servlet容器,而Netty是一個(gè)基于NIO的異步網(wǎng)絡(luò)編程框架,基于Netty可以實(shí)現(xiàn)自己的servlet容器或者其它網(wǎng)絡(luò)應(yīng)用

相關(guān)項(xiàng)目

很多項(xiàng)目?jī)?nèi)部都使用Netty作為其網(wǎng)絡(luò)處理模塊,包括:

總結(jié)

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

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

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

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

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