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 的異步高性能、高可靠性和高成熟度的優點,使它在通信行業得到了大量的應用。