NIO通信框架Netty(課堂PPT)_第1頁
NIO通信框架Netty(課堂PPT)_第2頁
NIO通信框架Netty(課堂PPT)_第3頁
NIO通信框架Netty(課堂PPT)_第4頁
NIO通信框架Netty(課堂PPT)_第5頁
已閱讀5頁,還剩28頁未讀, 繼續(xù)免費閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領(lǐng)

文檔簡介

1、NIONIO通信框架通信框架-Netty-Netty李林鋒李林鋒 neu_ neu_ 新浪微博新浪微博 Nettying Nettying大綱傳統(tǒng)同步阻塞通信面臨的問題傳統(tǒng)同步阻塞通信面臨的問題Netty提供的解決方案提供的解決方案Netty邏輯架構(gòu)介紹邏輯架構(gòu)介紹Netty主要功能特性介紹主要功能特性介紹Netty的行業(yè)應(yīng)用的行業(yè)應(yīng)用3傳統(tǒng)同步阻塞通信面臨的問題傳統(tǒng)同步阻塞通信面臨的問題性能問題:一連接一線程模型導(dǎo)致服務(wù)端的并發(fā)接入數(shù)和系統(tǒng)吞吐量受到極大限制;可靠性問題:由于IO操作采用同步阻塞模式,當網(wǎng)絡(luò)擁塞或者通信對端處理緩慢會導(dǎo)致IO線程被掛住,阻塞時間無法預(yù)測;可維護性問題:IO線程

2、數(shù)無法有效控制、資源無法有效共享(多線程并發(fā)問題),系統(tǒng)可維護性差4JAVA 原生原生NIO類庫的復(fù)雜性(服務(wù)端)類庫的復(fù)雜性(服務(wù)端)5JAVA 原生原生NIO類庫的復(fù)雜性(客戶端)類庫的復(fù)雜性(客戶端)6Netty的解決方案異步、非阻塞、基于事件驅(qū)動的NIO框架;支持多種傳輸層通信協(xié)議,包括TCP、UDP等;提供對多種應(yīng)用層協(xié)議的支持,包括TCP私有協(xié)議、HTTP協(xié)議、WebSocket協(xié)議、文件傳輸?shù)龋荒J提供多種編解碼能力,包括Java序列化、Google的ProtoBuf、二進制編解碼、Jboss marshalling、文本字符串、base64、簡單XML等;經(jīng)典的ChannelF

3、uture-listener機制,所有的異步IO操作都可以設(shè)置listener進行監(jiān)聽和獲取操作結(jié)果;基于ChannelPipeline-ChannelHandler的責任鏈模式,可以方便的自定義業(yè)務(wù)攔截器用于業(yè)務(wù)邏輯定制;安全性:支持SSL、HTTPS;可靠性:流量整形、讀寫超時控制機制、緩沖區(qū)最大容量限制、資源的優(yōu)雅釋放等;簡潔的API和啟動輔助類,簡化開發(fā)難度,減少代碼量7Netty邏輯架構(gòu)8Netty邏輯架構(gòu)第一層:Reactor 通信調(diào)度層,它由一系列輔助類組成,包括 Reactor 線程NioEventLoop 以及其父類、NioSocketChannel/NioServerSoc

4、ketChannel 以及其父類、ByteBuffer 以及由其衍生出來的各種 Buffer、Unsafe 以及其衍生出的各種內(nèi)部子類等;第二層:職責鏈 ChannelPipeLine,它負責調(diào)度事件在職責鏈中的傳播,支持動態(tài)的編排職責鏈,職責鏈可以選擇性的攔截自己關(guān)心的事件,對于其它IO操作和事件忽略,Handler同時支持inbound和outbound事件;第三層:業(yè)務(wù)邏輯編排層,業(yè)務(wù)邏輯編排層通常有兩類:一類是純粹的業(yè)務(wù)邏輯編排,還有一類是應(yīng)用層協(xié)議插件,用于協(xié)議相關(guān)的編解碼和鏈路管理,例如 CMPP 協(xié)議插件。9Netty功能特性1(NIO服務(wù)端)28行代碼完成NIO服務(wù)端的開發(fā)10

5、Netty功能特性1(NIO服務(wù)端)15行代碼完成服務(wù)端業(yè)務(wù)邏輯定制11Netty功能特性2(NIO客戶端)26行代碼完成NIO客戶端開發(fā)12Netty功能特性2(NIO客戶端)28行代碼完成NIO客戶端開發(fā)13Netty功能特性3-序列化(ProtoBuf)14Netty功能特性3-序列化(marshalling)15Netty功能特性3-序列化(Java)與原生的JAVA序列化機制兼容16Netty功能特性4-半包解碼器Netty提供4種半包解碼器,可以解決幾乎所有協(xié)議的半包解碼問題:固定消息長度解碼器:FixedLengthFrameDecoder;文本換行解碼器:LineBasedFr

6、ameDecoder;分隔符解碼器:DelimiterBasedFrameDecoder;1. 基于消息長度的通用解碼器:LengthFieldBasedFrameDecoder17Netty功能特性5-編碼器POJO對象到ByteBuf的編碼器:MessageToByteEncoderPOJO對象到POJO對象編碼器: MessageToMessageEncoder消息長度編碼器:LengthFieldPrepender18Netty功能特性6-多協(xié)議(HTTP)異步非阻塞HTTP協(xié)議棧19Netty功能特性7-多協(xié)議(WebSocket)WebSocket協(xié)議棧基于HTTP協(xié)議棧+WebS

7、ocket編解碼 實現(xiàn)20Netty功能特性8-多協(xié)議(UDP)與TCP協(xié)議風格一致的API,降低用戶開發(fā)難度21Netty功能特性9-多協(xié)議(File傳輸)異步文件傳輸22Netty功能特性10-安全性23Netty功能特性11-可靠性(流量整形)基于Channel的流量整形:ChannelTrafficShapingHandler基于全局的流量整形: GlobalTrafficShapingHandler可定制的流量整形抽象類: AbstractTrafficShapingHandler24Netty功能特性12-可靠性(超時控制)異步連接超時機制:ChannelConfig的setCon

8、nectTimeoutMillis(int connectTimeoutMillis);25Netty功能特性13-可靠性(心跳檢測)基于鏈路空閑的讀超時:ReadTimeoutHandler;基于鏈路空閑的寫超時:WriteTimeoutHandler;鏈路空閑狀態(tài)觸發(fā)器:IdleStateHandler;26Netty功能特性14-可定位性(日志)提供LoggingHandler,它支持如下功能: 將二進制byte數(shù)組轉(zhuǎn)換成16進制碼流打?。?將二進制byte數(shù)組轉(zhuǎn)換成字符打??; 通過攔截的方式按照指定格式打印數(shù)據(jù)報27Netty功能特性15-內(nèi)存管理策略以ByteBuf為例,Netty提

9、供四種ByteBuf:基于內(nèi)存池可重復(fù)利用的非堆內(nèi)存:PooledDirectByteBuf;基于內(nèi)存池可重復(fù)利用的堆內(nèi)存: PooledHeapByteBuf;朝生夕滅的非堆內(nèi)存:UnpooledDirectByteBuf;朝生夕滅的堆內(nèi)存:UnpooledHeapByteBuf。 為了更高效的管理內(nèi)存,做到自動/及時的釋放不再引用的對象,Netty內(nèi)置的資源對象實現(xiàn)ReferenceCounted接口,對內(nèi)存的申請和釋放做統(tǒng)一管理。28Netty功能特性16-異步的結(jié)果回調(diào)基于經(jīng)典的Future-Listener機制實現(xiàn)29Netty行業(yè)應(yīng)用-互聯(lián)網(wǎng)分布式架構(gòu)隨著互聯(lián)網(wǎng)的發(fā)展,網(wǎng)站應(yīng)用規(guī)模

10、的不斷擴大,常規(guī)的垂直應(yīng)用架構(gòu)已無法應(yīng)對,利用分布式服務(wù)架構(gòu)進行彈性伸縮是大勢所趨Dubbo是阿里巴巴開源的分布式服務(wù)框架,目前已經(jīng)應(yīng)用于所有非淘寶系的阿里產(chǎn)品中,包括來往、聚劃算、阿里巴巴集團網(wǎng)、阿里巴巴中文站等等Dubbo內(nèi)部私有通信協(xié)議-dubbo協(xié)議默認使用Netty作為高性能異步通信框架,為分布式服務(wù)節(jié)點之間提供高性能的NIO客戶端和服務(wù)端通信。30Netty行業(yè)應(yīng)用-大數(shù)據(jù)領(lǐng)域Apache Avro 是 Hadoop的子系統(tǒng)之一,它的主要功能如下: 豐富的數(shù)據(jù)結(jié)構(gòu); 壓縮、高效、二進制的序列化框架; 遠程服務(wù)調(diào)用(RPC); 多語言、靈活的集成能力。Avro的RPC框架提供基于Netty的NettyServer和基于Jetty的HttpServer兩種通信服務(wù)端。31Netty行業(yè)應(yīng)用-游戲行業(yè)Netty適合游戲服務(wù)器的幾個核心特性: 高并發(fā):由于采用異步非阻塞模式,一個Netty游戲服務(wù)端可以同時處理成千上萬的游戲玩家登陸和在線; 高性能:Netty的性能在各個NIO框架中最高,它的單節(jié)點吞吐量非常大,適合海量玩家同時在線游戲; 安全性:支持HTTPS、SSL等,可以在傳輸層進行安全控制; 定制性:可以方便的實現(xiàn)業(yè)務(wù)邏輯的定制、游戲

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責。
  • 6. 下載文件中如有侵權(quán)或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論