Netty介紹:概念與做用

1、Netty是什麼?spring

    1)本質:JBoss作的一個Jar包。apache

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

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

若是沒有Netty?網絡

jdk_1.4之前:io。架構

jdk_1.4之後:nio。併發

其餘框架:Mina,Grizzly。框架

   1.1 與Mina相比有什麼優點?異步

        一、都是Trustin Lee的做品,Netty更晚;分佈式

        二、Mina將內核和一些特性的聯繫過於緊密,使得用戶在不須要這些特性的時候沒法脫離,相比下性能會有所降低,Netty解決了這個設計問題;

        三、Netty的文檔更清晰,不少Mina的特性在Netty裏都有;

        四、Netty更新週期更短,新版本的發佈比較快;

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

       六、Netty比Mina使用起來更簡單,Netty裏你能夠自定義的處理upstream events 或/和 downstream events,可使用decoder和encoder來解碼和編碼發送內容;

       七、Netty和Mina在處理UDP時有一些不一樣,Netty將UDP無鏈接的特性暴露出來;而Mina對UDP進行了高級層次的抽象,能夠把UDP當成"面向鏈接"的協議,而要Netty作到這一點比較困難。

    1.2Netty的特性

    1)設計

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

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

    高度可定製的線程模型。

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

    2)性能

    更好的吞吐量,低延遲。

    更省資源。

    儘可能減小沒必要要的內存拷貝。

    3)安全

    完整的SSL/TLS和STARTTLS的支持。

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

    4)健壯性

    再也不因過快、過慢或超負載鏈接致使OutOfMemoryError。

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

    5)易用

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

    簡潔簡單。

    僅信賴於JDK1.5。

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

3、資料

        官網:http://netty.io/

        博客(我的認爲寫的不錯):http://blog.csdn.net/kobejayandy/article/details/11493717

相關文章
相關標籤/搜索