




版權說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權,請進行舉報或認領
文檔簡介
1、(推薦)nio通信框架-nettynio通信框架-netty李林鋒 neu_ 新浪微博 nettying大綱傳統(tǒng)同步阻塞通信面臨的問題傳統(tǒng)同步阻塞通信面臨的問題netty提供的解決方案提供的解決方案netty邏輯架構介紹邏輯架構介紹netty主要功能特性介紹主要功能特性介紹netty的行業(yè)應用的行業(yè)應用傳統(tǒng)同步阻塞通信面臨的問題傳統(tǒng)同步阻塞通信面臨的問題性能問題:一連接一線程模型導致服務端的并發(fā)接入數(shù)和系統(tǒng)吞吐量受到極大限制;可靠性問題:由于io操作采用同步阻塞模式,當網(wǎng)絡擁塞或者通信對端處理緩慢會導致io線程被掛住,阻塞時間無法預測;可維護性問題:io線程數(shù)無法有效控制、資源無法有效共享(多
2、線程并發(fā)問題),系統(tǒng)可維護性差java java 原生原生nionio類庫的復雜性(服務端)類庫的復雜性(服務端)java java 原生原生nionio類庫的復雜性(客戶端)類庫的復雜性(客戶端)netty的解決方案異步、非阻塞、基于事件驅(qū)動的nio框架;支持多種傳輸層通信協(xié)議,包括tcp、udp等;提供對多種應用層協(xié)議的支持,包括tcp私有協(xié)議、http協(xié)議、websocket協(xié)議、文件傳輸?shù)?;默認提供多種編解碼能力,包括java序列化、google的protobuf、二進制編解碼、jboss marshalling、文本字符串、base64、簡單xml等;經(jīng)典的channelfuture
3、-listener機制,所有的異步io操作都可以設置listener進行監(jiān)聽和獲取操作結果;基于channelpipeline-channelhandler的責任鏈模式,可以方便的自定義業(yè)務攔截器用于業(yè)務邏輯定制;安全性:支持ssl、https;可靠性:流量整形、讀寫超時控制機制、緩沖區(qū)最大容量限制、資源的優(yōu)雅釋放等;簡潔的api和啟動輔助類,簡化開發(fā)難度,減少代碼量netty邏輯架構netty邏輯架構第一層:reactor 通信調(diào)度層,它由一系列輔助類組成,包括 reactor 線程nioeventloop 以及其父類、niosocketchannel/nioserversocketchan
4、nel 以及其父類、bytebuffer 以及由其衍生出來的各種 buffer、unsafe 以及其衍生出的各種內(nèi)部子類等;第二層:職責鏈 channelpipeline,它負責調(diào)度事件在職責鏈中的傳播,支持動態(tài)的編排職責鏈,職責鏈可以選擇性的攔截自己關心的事件,對于其它io操作和事件忽略,handler同時支持inbound和outbound事件;第三層:業(yè)務邏輯編排層,業(yè)務邏輯編排層通常有兩類:一類是純粹的業(yè)務邏輯編排,還有一類是應用層協(xié)議插件,用于協(xié)議相關的編解碼和鏈路管理,例如 cmpp 協(xié)議插件。netty功能特性1(nio服務端)28行代碼完成nio服務端的開發(fā)netty功能特性1
5、(nio服務端)15行代碼完成服務端業(yè)務邏輯定制netty功能特性2(nio客戶端)26行代碼完成nio客戶端開發(fā)netty功能特性2(nio客戶端)28行代碼完成nio客戶端開發(fā)netty功能特性3-序列化(protobuf)netty功能特性3-序列化(marshalling)netty功能特性3-序列化(java)與原生的java序列化機制兼容netty功能特性4-半包解碼器netty提供4種半包解碼器,可以解決幾乎所有協(xié)議的半包解碼問題:固定消息長度解碼器:fixedlengthframedecoder;文本換行解碼器:linebasedframedecoder;分隔符解碼器:deli
6、miterbasedframedecoder;1. 基于消息長度的通用解碼器:lengthfieldbasedframedecodernetty功能特性5-編碼器pojo對象到bytebuf的編碼器:messagetobyteencoderpojo對象到pojo對象編碼器: messagetomessageencoder消息長度編碼器:lengthfieldprependernetty功能特性6-多協(xié)議(http)異步非阻塞http協(xié)議棧netty功能特性7-多協(xié)議(websocket)websocket協(xié)議?;趆ttp協(xié)議棧+websocket編解碼 實現(xiàn)netty功能特性8-多協(xié)議(ud
7、p)與tcp協(xié)議風格一致的api,降低用戶開發(fā)難度netty功能特性9-多協(xié)議(file傳輸)異步文件傳輸netty功能特性10-安全性netty功能特性11-可靠性(流量整形)基于channel的流量整形:channeltrafficshapinghandler基于全局的流量整形: globaltrafficshapinghandler可定制的流量整形抽象類: abstracttrafficshapinghandlernetty功能特性12-可靠性(超時控制)異步連接超時機制:channelconfig的setconnecttimeoutmillis(int connecttimeoutmi
8、llis);netty功能特性13-可靠性(心跳檢測)基于鏈路空閑的讀超時:readtimeouthandler;基于鏈路空閑的寫超時:writetimeouthandler;鏈路空閑狀態(tài)觸發(fā)器:idlestatehandler;netty功能特性14-可定位性(日志)提供logginghandler,它支持如下功能: 將二進制byte數(shù)組轉換成16進制碼流打?。?將二進制byte數(shù)組轉換成字符打??; 通過攔截的方式按照指定格式打印數(shù)據(jù)報netty功能特性15-內(nèi)存管理策略以bytebuf為例,netty提供四種bytebuf:基于內(nèi)存池可重復利用的非堆內(nèi)存:pooleddirectbyteb
9、uf;基于內(nèi)存池可重復利用的堆內(nèi)存: pooledheapbytebuf;朝生夕滅的非堆內(nèi)存:unpooleddirectbytebuf;朝生夕滅的堆內(nèi)存:unpooledheapbytebuf。 為了更高效的管理內(nèi)存,做到自動/及時的釋放不再引用的對象,netty內(nèi)置的資源對象實現(xiàn)referencecounted接口,對內(nèi)存的申請和釋放做統(tǒng)一管理。netty功能特性16-異步的結果回調(diào)noimage基于經(jīng)典的future-listener機制實現(xiàn)netty行業(yè)應用-互聯(lián)網(wǎng)分布式架構隨著互聯(lián)網(wǎng)的發(fā)展,網(wǎng)站應用規(guī)模的不斷擴大,常規(guī)的垂直應用架構已無法應對,利用分布式服務架構進行彈性伸縮是大勢所趨
10、dubbo是阿里巴巴開源的分布式服務框架,目前已經(jīng)應用于所有非淘寶系的阿里產(chǎn)品中,包括來往、聚劃算、阿里巴巴集團網(wǎng)、阿里巴巴中文站等等dubbo內(nèi)部私有通信協(xié)議-dubbo協(xié)議默認使用netty作為高性能異步通信框架,為分布式服務節(jié)點之間提供高性能的nio客戶端和服務端通信。netty行業(yè)應用-大數(shù)據(jù)領域apache avro 是 hadoop的子系統(tǒng)之一,它的主要功能如下: 豐富的數(shù)據(jù)結構; 壓縮、高效、二進制的序列化框架; 遠程服務調(diào)用(rpc); 多語言、靈活的集成能力。avro的rpc框架提供基于netty的nettyserver和基于jetty的httpserver兩種通信服務端。netty行業(yè)應用-游戲行業(yè)netty適合游戲服務器的幾個核心特性: 高并發(fā):由于采用異步非阻塞模式,一個netty游戲服務端可以同時處理成千上萬的游戲玩家登陸和在線; 高性能:netty的性能在各個nio框架中最高,它的單節(jié)點吞吐量非常大,適合海量玩家同時在線游戲; 安全性:支持https、ssl等,可以在傳輸層進行安全控制; 定制性:可以方便的實現(xiàn)業(yè)務邏
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經(jīng)權益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責。
- 6. 下載文件中如有侵權或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 圍堰施工課題申報書
- 軟件測試申報書課題
- 課題申報書方案構建模板
- 合伙企業(yè)人合同范本
- 單位買電合同范本
- 合同范本分包合同
- 課題申報書課題類型
- 特殊學生教育課題申報書
- 和單位購銷采購合同范本
- 品牌門窗店銷售合同范本
- 2025年湖南環(huán)境生物職業(yè)技術學院單招職業(yè)技能測試題庫一套
- 新版統(tǒng)編版一年級道德與法治下冊全冊教案(完整版)教學設計含教學反思
- 電子書 -品牌設計法則
- CT報告單模板
- 足球比賽計分表(共6頁)
- 軟件概要設計說明書范例(共21頁)
- 干式變壓器和低壓配電柜日常巡檢書
- 研究性學習成果一覽表
- 生產(chǎn)一致性控制計劃
- 鐵路勞動安全培訓鐵路安全培訓知識專題PPT課件(帶內(nèi)容)
- 境外公共安全管理.ppt
評論
0/150
提交評論