Netty是什么?


Netty是什么?

1)本質:JBoss做的一個Jar包

2)目的:快速開發高性能、高可靠性的網絡服務器和客戶端程序

3)優點:提供異步的、事件驅動的網絡應用程序框架和工具

通俗的說:一個好使的處理Socket的東東

如果沒有Netty?

遠古:java.net + java.io

近代:java.nio

其他:Mina,Grizzly

Netty的特性

1)設計

統一的API,適用於不同的協議(阻塞和非阻塞)

基於靈活、可擴展的事件驅動模型

高度可定制的線程模型

可靠的無連接數據Socket支持(UDP)

2)性能

更好的吞吐量,低延遲

更省資源

盡量減少不必要的內存拷貝


3)安全

完整的SSL/TLS和STARTTLS的支持

能在Applet與Android的限制環境運行良好


4)健壯性

不再因過快、過慢或超負載連接導致OutOfMemoryError

不再有在高速網絡環境下NIO讀寫頻率不一致的問題


5)易用

完善的JavaDoc,用戶指南和樣例

簡潔簡單

僅信賴於JDK1.5

作者:郭無心
鏈接:https://www.zhihu.com/question/24322387/answer/78947405
來源:知乎
著作權歸作者所有,轉載請聯系作者獲得授權。

Netty 在哪些行業得到了應用?

  • 互聯網行業:隨着網站規模的不斷擴大,系統並發訪問量也越來越高,傳統基於 Tomcat 等 Web 容器的垂直架構已經無法滿足需求,需要拆分應用進行服務化,以提高開發和維護效率。從組網情況看,垂直的架構拆分之后,系統采用分布式部署,各個節點之間需要遠程服務調用,高性能的 RPC 框架必不可少,Netty 作為異步高性能的通信框架,往往作為基礎通信組件被這些 RPC 框架使用。

  典型的應用有:阿里分布式服務框架 Dubbo 的 RPC 框架使用 Dubbo 協議進行節點間通信,Dubbo 協議默認使用 Netty 作為基礎通信組件,用於實現各進程節點之間的內部通信。它的架構圖如下:




其中,服務提供者和服務消費者之間,服務提供者、服務消費者和性能統計節點之間使用 Netty 進行異步/同步通信。

  除了 Dubbo 之外,淘寶的消息中間件 RocketMQ 的消息生產者和消息消費者之間,也采用 Netty 進行高性能、異步通信。

  除了阿里系和淘寶系之外,很多其它的大型互聯網公司或者電商內部也已經大量使用 Netty 構建高性能、分布式的網絡服務器。

  • 游戲行業:無論是手游服務端、還是大型的網絡游戲,Java 語言得到了越來越廣泛的應用。Netty 作為高性能的基礎通信組件,它本身提供了 TCP/UDP 和 HTTP 協議棧,非常方便定制和開發私有協議棧。賬號登陸服務器、地圖服務器之間可以方便的通過 Netty 進行高性能的通信,架構示意圖如下:



  圖1-2 Netty 在游戲服務器架構中的應用

  • 大數據領域:經典的 Hadoop 的高性能通信和序列化組件 Avro 的 RPC 框架,默認采用 Netty 進行跨節點通信,它的 Netty Service 基於 Netty 框架二次封裝實現。

  大數據計算往往采用多個計算節點和一個/N個匯總節點進行分布式部署,各節點之間存在海量的數據交換。由於 Netty 的綜合性能是目前各個成熟 NIO 框架中最高的,因此,往往會被選中用作大數據各節點間的通信。

  • 企業軟件:企業和 IT 集成需要 ESB,Netty 對多協議支持、私有協議定制的簡潔性和高性能是 ESB RPC 框架的首選通信組件。事實上,很多企業總線廠商會選擇 Netty 作為基礎通信組件,用於企業的 IT 集成。

  • 通信行業:Netty 的異步高性能、高可靠性和高成熟度的優點,使它在通信行業得到了大量的應用。

 
        

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM