天天看點

netty入門小程式Netty的特性Netty 在哪些行業得到了應用?簡單實作伺服器端和用戶端

設計統一的api,适用于不同的協定(阻塞和非阻塞)基于靈活、可擴充的事件驅動模型高度可定制的線程模型可靠的無連接配接資料socket支援(udp)

性能更好的吞吐量,低延遲更省資源盡量減少不必要的記憶體拷貝

安全完整的ssl/tls和starttls的支援能在applet與android的限制環境運作良好

健壯性不再因過快、過慢或超負載連接配接導緻outofmemoryerror不再有在高速網絡環境下nio讀寫頻率不一緻的問題

易用完善的javadoc,使用者指南和樣例簡潔簡單僅信賴于jdk1.5

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

阿裡分布式服務架構 dubbo 的 rpc 架構使用 dubbo 協定進行節點間通信,dubbo 協定預設使用 netty 作為基礎通信元件,用于實作各程序節點之間的内部通信。它的架構圖如下:

netty入門小程式Netty的特性Netty 在哪些行業得到了應用?簡單實作伺服器端和用戶端

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

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

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

無論是手遊服務端、還是大型的網絡遊戲,java 語言得到了越來越廣泛的應用。netty 作為高性能的基礎通信元件,它本身提供了 tcp/udp 和 http 協定棧,非常友善定制和開發私有協定棧。賬号登陸伺服器、地圖伺服器之間可以友善的通過 netty 進行高性能的通信,架構示意圖如下:

netty入門小程式Netty的特性Netty 在哪些行業得到了應用?簡單實作伺服器端和用戶端

經典的 hadoop 的高性能通信和序列化元件 avro 的 rpc 架構,預設采用 netty 進行跨節點通信,它的 netty service 基于 netty 架構二次封裝實作。  

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

企業和 it 內建需要 esb,netty 對多協定支援、私有協定定制的簡潔性和高性能是 esb rpc 架構的首選通信元件。事實上,很多企業總線廠商會選擇 netty 作為基礎通信元件,用于企業的 it 內建。

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

運作可以自己試一試

<a href="http://download.csdn.net/download/bug_moving/9762526">netty jar包</a>