天天看點

Netty-技術專區-基礎入門介紹

1.Netty的介紹

(1) Netty是由JBOSS提供的一個Java開源架構,現在為Github上的獨立項目。

(2) Netty是一個異步的、基于事件驅動的網絡應用架構,用以快速開發高性能、高可靠的網絡IO程式。

(3) Netty主要針對于TCP協定下,面向Client用戶端高并發應用,或者PeerToPeer,場景下的大量資料持續傳輸的應用。

(4) Netty本質是一個NIO架構,适用于伺服器通訊相關的多種應用場景。

(5) Netty架構如果要徹底了解透徹,需要先學習NIO,這樣子會對我們認識Netty的原理和運作模式會有很大的幫助。

2.Netty的應用場景

 (1)網際網路行業

    分布式系統中,各個節點之間需要遠端服務調用,高性能的RPC架構中,Netty作為異步話性能的通信架構,往往作為基礎的通信元件被這些RPC架構使用。

    典型的應用:Dubbo、ElasticSearch,Dubbo通信傳輸機制,預設采用的就是Netty做為基礎的通信元件,用于個程序節點之間的内部通信。

 (2)遊戲行業

   無論是手機遊戲或者大型的網絡遊戲,Java語言得到了越來越廣泛的應用。

   Netty作為高性能的通信元件,提供了TCP/UDP和HTTP協定棧,友善定制和開發私有協定棧,賬号登陸伺服器。

   地圖伺服器之間可以友善的通過Netty進行高性能的通信。

(3)大資料領域

  經典的Hadoop的高性能通信和序列化元件(AVRO實作資料檔案共享)的RPC架構,采用Netty進行跨界點通信。

  他的實作Netty Service基于Netty架構進行二次封裝。

(4) 其它開源項目

https://netty.io/wiki/related-projects.html

3.Netty的層次關系

    Netty本身為應用層級别->基于Java-NIO服務應用API->基于原生JDK-IO網絡模型Linux(epoll/evport/selector/kequeue)不同的作業系統支援的函數庫不同,但是理論實作方式大同小異。

4.目前網絡所支援IO模型

 (1) BIO模型:同步阻塞機制,伺服器實作模式為一個連接配接一個線程,即用戶端由連結請求是服務端需啟動一個線程進行處理,如果這個連結不做任何事情會造成不必要的線程開銷。

   (2) NIO模型:同步非阻塞機制,伺服器實作模式為一個線程處理多個請求(連接配接),即用戶端發送連接配接請求都會注冊到了一個多路複用器,多路複用器輪詢到連接配接由IO請求進行處理。

 (3)NIO2(AIO)異步非阻塞,AIO引用了一部通道的概念,采用了Proactor模型,簡化了變成模型,有效的請求後才會啟動線程,特點就是現有作業系統完成後在通知服務端區處理請求,一般用于連接配接較長連接配接較多的應用場景。

  

極限就是為了超越而存在的