溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務(wù)條款》

你知道為什么Netty這么火嗎?與Mina相比又有什么優(yōu)勢?

發(fā)布時間:2020-05-20 09:20:37 來源:網(wǎng)絡(luò) 閱讀:502 作者:java周某人 欄目:編程語言

為什么Netty這么火?與Mina相比有什么優(yōu)勢?

**前言:

作為一個學(xué)Java的,如果沒有研究過Netty,那么你對Java語言的使用和理解僅僅停留在表面水平,會點SSH,寫幾個MVC,訪問數(shù)據(jù)庫和緩存,這些只是初等Java程序員干的事。如果你要進階,想了解Java服務(wù)器的深層高階知識,Netty絕對是一個必須要過的門檻**

有了Netty,你可以實現(xiàn)自己的HTTP服務(wù)器,F(xiàn)TP服務(wù)器,UDP服務(wù)器,RPC服務(wù)器,WebSocket服務(wù)器,Redis的Proxy服務(wù)器,MySQL的Proxy服務(wù)器等等。

Netty是什么?為什么這么火?

Netty是目前最流行的由JBOSS提供的一個Java開源框架NIO框架,Netty提供異步的、事件驅(qū)動的網(wǎng)絡(luò)應(yīng)用程序框架和工具,用以快速開發(fā)高性能、高可靠性的網(wǎng)絡(luò)服務(wù)器和客戶端程序。

相比JDK原生NIO,Netty提供了相對十分簡單易用的API,非常適合網(wǎng)絡(luò)編程。Netty是完全基于NIO實現(xiàn)的,所以Netty是異步的。

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

Netty無疑是NIO的老大,它的健壯性、功能、性能、可定制性和可擴展性在同類框架都是首屈一指的。它已經(jīng)得到成百上千的商業(yè)/商用項目驗證,如Hadoop的RPC框架Avro、RocketMQ以及主流的分布式通信框架Dubbo等等。

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

Netty的優(yōu)點可以總結(jié)如下

1、API使用簡單,開發(fā)門檻低;

2、功能強大,預(yù)置了多種編解碼功能,支持多種主流協(xié)議;

3、定制能力強,可以通過ChannelHandler對通信框架進行靈活地擴展;

4、性能高,通過與其他業(yè)界主流的NIO框架對比,Netty的綜合性能最優(yōu);

5、成熟、穩(wěn)定,Netty修復(fù)了已經(jīng)發(fā)現(xiàn)的所有JDK NIO BUG,業(yè)務(wù)開發(fā)人員不需要再為NIO的BUG而煩惱;

6、社區(qū)活躍,版本迭代周期短,發(fā)現(xiàn)的BUG可以被及時修復(fù),同時,更多的新功能會加入;

7、經(jīng)歷了大規(guī)模的商業(yè)應(yīng)用考驗,質(zhì)量得到驗證。在互聯(lián)網(wǎng)、大數(shù)據(jù)、網(wǎng)絡(luò)游戲、企業(yè)應(yīng)用、電信軟件等眾多行業(yè)得到成功商用,證明了它已經(jīng)完全能夠滿足不同行業(yè)的商業(yè)應(yīng)用了。

與Mina相比有什么優(yōu)勢?

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

2、Mina將內(nèi)核和一些特性的聯(lián)系過于緊密,使得用戶在不需要這些特性的時候無法脫離,相比下性能會有所下降,Netty解決了這個設(shè)計問題;

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

4、Netty更新周期更短,新版本的發(fā)布比較快;

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

6、Netty比Mina使用起來更簡單,Netty里你可以自定義的處理upstream events或/和downstream events,可以使用decoder和encoder來解碼和編碼發(fā)送內(nèi)容;

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

最后喜歡這篇文章的話記得給作者點個關(guān)注,每天都回分享java有關(guān)的文章

向AI問一下細節(jié)

免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點不代表本網(wǎng)站立場,如果涉及侵權(quán)請聯(lián)系站長郵箱:is@yisu.com進行舉報,并提供相關(guān)證據(jù),一經(jīng)查實,將立刻刪除涉嫌侵權(quán)內(nèi)容。

AI