前言
本篇為《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沒有優(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
可以說,一般的應(yīng)用使用Netty本身的支持就能滿足大部分需求踏兜,剩下的關(guān)注自己的業(yè)務(wù)即可
Netty & MINA & Jetty
Netty和MINA經(jīng)常會(huì)放在一起比較词顾,主要是因?yàn)閮蓚€(gè)框架有很多相似的地方,或者說它們本身就是一對(duì)兄弟 -- 都是基于Java NIO封裝的一個(gè)網(wǎng)絡(luò)框架碱妆。其實(shí)更深入的了解會(huì)發(fā)現(xiàn)计技,Netty的作者Trustin Lee也是MINA的作者(當(dāng)然已經(jīng)不繼續(xù)參與了),據(jù)說他是對(duì)MINA的代碼不滿意山橄,才重新寫了Netty,所以看Netty的代碼經(jīng)常能看到MINA的影子舍悯,但就現(xiàn)在來說Netty的社區(qū)遠(yuǎn)比MINA要活躍航棱,迭代頻率也更高,大部分的特性也優(yōu)于MINA
至于Jetty之所以會(huì)拿來比較萌衬,主要是因?yàn)楹蚇etty名字類似饮醇,但其實(shí)這兩者并沒有很大的可比性,因?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)也很清晰,值得一讀狗准;平常很多人說熟悉網(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ù)處理槽片,都有通過邏輯映射增強(qiáng)內(nèi)存效率的設(shè)計(jì)等等何缓,很有意思,感興趣的小伙伴可以找尋相關(guān)資料進(jìn)行深入研究