我是風月連城,喜歡用簡單的語言闡述知識點
長期分享原創java文章,分享進階架構師學習筆記及學習資料
喜歡的可以點贊關注,共同學習,一起進步
Netty是什麼?
0 ) 關鍵詞:Netty、NIO、非同步、通訊、
1)本質:一個Jar包,一個NIO框架,是對 socket 網路程式設計的優秀包裝
2)作用:既然netty 是對 socket 網路程式設計的優秀包裝.那麼在沒有Netty之前,jdk強迫你必須用socket來寫伺服器,實際上是很繁瑣的,缺乏一個高層次的api。然後Netty誕生了,他說,我來寫jdk的socket,然後返回給你一個新的更簡潔的api,你傻瓜式的就能寫好一個網路伺服器
3)好處:提供非同步的、事件驅動的網路應用程式框架和工具,你傻瓜式的就能寫好一個網路伺服器(當然是相對於更底層的socket 網路程式設計來說),通俗的說:一個好使的處理Socket的框架
4 ) 類似 : 類似作用的有Mina(比netty更早,同一作者.這裡就不擴充套件了)
5 ) 支援的協議有HTTP,WebSockets,SSL等。用Netty,你可以容易地利用Java NIO來提高服務端的效能。
6 ) 場景:阿里分散式服務框架 Dubbo 的 RPC 框架使用 Dubbo 協議進行節點間通訊,Dubbo 協議預設使用 Netty 作為基礎通訊元件,用於實現各程式節點之間的內部通訊。(什麼是dubbo?),還有阿里的訊息佇列(RocketMQ),阿里的HSF等
7 ) 學習Netty需要的知識儲備: Netty本身知識提供一種方便網路程式設計(特別是NIO)的框架(jar包),如果你熟悉TCP/IP,網路程式設計和NIO,那麼Netty對你來說並不難,大概一週時間就可以使用.如果不熟悉以上這些,建議先熟悉以上技術,學習Netty時,核心要掌握它的執行緒模型
8 )再理解 :相對於Tomcat這種Web Server(顧名思義主要是提供Web協議相關的服務的),Netty是一個Network Server,是處於Web Server更下層的網路框架,也就是說你可以使用Netty模仿Tomcat做一個提供HTTP服務的Web容器。
9 ) 通訊 :系統需要實現多程式通訊,只有兩種方式:記憶體共享、訊息傳遞;分散式的系統間通訊只有訊息傳遞,Netty可作為應用間訊息傳遞實現的基礎元件,Netty位於OSI協議棧的會話層、表示層、應用層都有涉及,這樣你可以方便的擴充套件實現,處理會話層以上的協議和業務;Netty封裝了java nio的api,使之成為一個非常方便使用框架;提供了提供處理IO的執行緒池,最重要的一點保證了一個socket處理在一個執行緒中完成,一個執行緒可以同時處理多個socket,這個比較好玩;
10 ) 以上都是對Netty的理解~具體怎麼玩~後面再寫一篇文章供大家參考