天天看點

Netty是幹什麼的?

Netty是什麼?

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

2)目的:快速開發高性能、高可靠性的網絡伺服器和用戶端程式

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

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

如果沒有Netty?

遠古:

java.net + java.io
           

近代:

java.nio
           

其他:

Mina,Grizzly
           

與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做到這一點比較困難。

Netty的特性

1)設計

統一的API,适用于不同的協定(阻塞和非阻塞)

基于靈活、可擴充的事件驅動模型

高度可定制的線程模型

可靠的無連接配接資料Socket支援(UDP)

2)性能

更好的吞吐量,低延遲

更省資源

盡量減少不必要的記憶體拷貝

3)安全

完整的SSL/TLS和STARTTLS的支援

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

4)健壯性

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

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

5)易用

完善的JavaDoc,使用者指南和樣例

簡潔簡單

僅信賴于JDK1.5

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

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

  典型的應用有:阿裡分布式服務架構 Dubbo 的 RPC 架構使用 Dubbo 協定進行節點間通信,Dubbo 協定預設使用 Netty 作為基礎通信元件,用于實作各程序節點之間的内部通信。

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

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

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

  • 遊戲行業:無論是手遊服務端、還是大型的網絡遊戲,Java 語言得到了越來越廣泛的應用。Netty 作為高性能的基礎通信元件,它本身提供了 TCP/UDP 和 HTTP 協定棧,非常友善定制和開發私有協定棧。賬号登陸伺服器、地圖伺服器之間可以友善的通過 Netty 進行高性能的通信.
  • 大資料領域:
  • 經典的 Hadoop 的高性能通信和序列化元件 Avro 的 RPC 架構,預設采用 Netty 進行跨節點通信,它的 Netty Service 基于 Netty 架構二次封裝實作。

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

  • 企業軟體:企業和 IT 內建需要 ESB,Netty 對多協定支援、私有協定定制的簡潔性和高性能是 ESB RPC 架構的首選通信元件。事實上,很多企業總線廠商會選擇 Netty 作為基礎通信元件,用于企業的 IT 內建。
  • 通信行業:Netty 的異步高性能、高可靠性和高成熟度的優點,使它在通信行業得到了大量的應用。

作者:郭無心

連結:https://www.zhihu.com/question/24322387/answer/78947405

來源:知乎

著作權歸作者所有。商業轉載請聯系作者獲得授權,非商業轉載請注明出處。