1. 程式人生 > >Netty是什麼?與Mina相比有什麼優勢?

Netty是什麼?與Mina相比有什麼優勢?

Netty是什麼?為什麼這麼火?

Netty是目前最流行的由JBOSS提供的一個Java開源框架NIO框架,Netty提供非同步的、事件驅動的網路應用程式框架和工具,用以快速開發高效能、高可靠性的網路伺服器和客戶端程式。

相比JDK原生NIO,Netty提供了相對十分簡單易用的API,非常適合網路程式設計。Netty是完全基於NIO實現的,所以Netty是非同步的。

作為一個非同步NIO框架,Netty的所有IO操作都是非同步非阻塞的,通過Future-Listener機制,使用者可以方便的主動獲取或者通過通知機制獲得IO操作結果。

Netty無疑是NIO的老大,它的健壯性、功能、效能、可定製性和可擴充套件性在同類框架都是首屈一指的。它已經得到成百上千的商業/商用專案驗證,如Hadoop的RPC框架Avro、RocketMQ以及主流的分散式通訊框架Dubbo等等。

為什麼這麼火,是有原因的。

Netty的優點可以總結如下

1、API使用簡單,開發門檻低;

2、功能強大,預置了多種編解碼功能,支援多種主流協議;

3、定製能力強,可以通過ChannelHandler對通訊框架進行靈活地擴充套件;

4、效能高,通過與其他業界主流的NIO框架對比,Netty的綜合性能最優;

5、成熟、穩定,Netty修復了已經發現的所有JDK NIO BUG,業務開發人員不需要再為NIO的BUG而煩惱;

6、社群活躍,版本迭代週期短,發現的BUG可以被及時修復,同時,更多的新功能會加入;

7、經歷了大規模的商業應用考驗,質量得到驗證。在網際網路、大資料、網路遊戲、企業應用、電信軟體等眾多行業得到成功商用,證明了它已經完全能夠滿足不同行業的商業應用了。

與Mina相比有什麼優勢?

1、都是Trustin Lee的作品,Netty更晚;

2、Mina將核心和一些特性的聯絡過於緊密,使得使用者在不需要這些特性的時候無法脫離,相比下效能會有所下降,Netty解決了這個設計問題;

3、Netty的文件更清晰,很多Mina的特性在Netty裡都有;

4、Netty更新週期更短,新版本的釋出比較快;

5、它們的架構差別不大,Mina靠apache生存,而Netty靠jboss,和jboss的結合度非常高,Netty有對google protocal buf的支援,有更完整的ioc容器支援(spring,guice,jbossmc和osgi);

6、Netty比Mina使用起來更簡單,Netty裡你可以自定義的處理upstream events或/和downstream events,可以使用decoder和encoder來解碼和編碼傳送內容;

7、Netty和Mina在處理UDP時有一些不同,Netty將UDP無連線的特性暴露出來;而Mina對UDP進行了高階層次的抽象,可以把UDP當成”面向連線”的協議,而要Netty做到這一點比較困難。