netty開發(fā)文檔詳細(xì)設(shè)計(jì)_第1頁
netty開發(fā)文檔詳細(xì)設(shè)計(jì)_第2頁
netty開發(fā)文檔詳細(xì)設(shè)計(jì)_第3頁
netty開發(fā)文檔詳細(xì)設(shè)計(jì)_第4頁
netty開發(fā)文檔詳細(xì)設(shè)計(jì)_第5頁
已閱讀5頁,還剩3頁未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡介

1、項(xiàng)目名稱:基于netty的網(wǎng)絡(luò)通信項(xiàng)目開發(fā)級(jí)別|:A制作人:黃浩基于netty網(wǎng)絡(luò)通信-服務(wù)端開發(fā)文檔詳細(xì)設(shè)計(jì)說明書評(píng)審人: 日期: 批準(zhǔn)人: 日期: Revision Record 修改記錄日期時(shí)間修改目錄修改描述作者目錄1 引言41.1 編寫目的41.2 背景41.3 參考資料41.4 術(shù)語定義及說明42 設(shè)計(jì)概述52.1 任務(wù)和目標(biāo)52.1.1 需求概述52.1.2 運(yùn)行環(huán)境概述52.1.3 條件與限制53 系統(tǒng)詳細(xì)需求分析53.1 詳細(xì)需求分析63.2 接口需求分析74 總體方案確認(rèn)74.1 系統(tǒng)總體結(jié)構(gòu)確認(rèn)75 系統(tǒng)詳細(xì)設(shè)計(jì)85.1 系統(tǒng)設(shè)計(jì)-netty服務(wù)端具體分析流程圖

2、86 信息編碼設(shè)計(jì)96.3 代碼結(jié)構(gòu)設(shè)計(jì)96.4 代碼編制91 引言1.1 編寫目的(1) 手機(jī)APP的socket網(wǎng)絡(luò)框架(本項(xiàng)目中必須) 手機(jī)發(fā)送圖片 視頻 音頻等到服務(wù)器,雙向傳輸。(2) 基于網(wǎng)絡(luò)的遠(yuǎn)程調(diào)用和通訊,模擬出遠(yuǎn)程接口RMI(基于dubbo網(wǎng)絡(luò)通訊的補(bǔ)充)1.2 背景A. 基于netty的網(wǎng)絡(luò)通信;B. 用于網(wǎng)絡(luò)通信,即時(shí)通信,長連接等;1.3 參考資料 1.4 術(shù)語定義及說明Netty服務(wù)端,數(shù)據(jù)推送,即時(shí)推送,手機(jī)連接總服務(wù)器等。2 設(shè)計(jì)概述2.1 任務(wù)和目標(biāo)此設(shè)計(jì)主要針對(duì)于netty作為服務(wù)端支持客戶端長連接,在此基礎(chǔ)上定義通信協(xié)議和通信架構(gòu)以及網(wǎng)絡(luò)通信層次;netty

3、作為高并發(fā)的網(wǎng)絡(luò)通信框架,必須做到及時(shí)的,安全的,可靠的數(shù)據(jù)讀寫操作 ,客戶端的連接支持必須達(dá)到百萬以上。2.1.1 需求概述其一:目前在開發(fā)手機(jī)端項(xiàng)目的時(shí)候需要涉及到和總服務(wù)端的通信,此通信用于傳輸圖片,視頻等,考慮到手機(jī)端開發(fā)比較嚴(yán)謹(jǐn),無法加載龐大的jar文件,那么所有的壓力都必須在服務(wù)端;其二:此通信可用作暫時(shí)的即時(shí)通訊傳輸數(shù)據(jù),通過雙方傳遞參數(shù)的形式模擬遠(yuǎn)程方法的調(diào)用,這點(diǎn)的設(shè)計(jì)主要是針對(duì)客戶端IP無法穩(wěn)定,必須單向通信達(dá)到雙向調(diào)用。2.1.2 運(yùn)行環(huán)境概述作用于軟硬件之間的通信,或者軟件與軟件之間的通信,可以跨平臺(tái)訪問,不受操作系統(tǒng)的限制,數(shù)據(jù)庫方面可以采用mysql或者oracle

4、等,作為netty的服務(wù)端必須放置于大型的計(jì)算機(jī)處理下-俗稱機(jī)房服務(wù)器;作為客戶端無嚴(yán)謹(jǐn)?shù)囊?,但是必須提供通信接口,比如能tcp連接或者udp連接。2.1.3 條件與限制作為netty的服務(wù)端,他對(duì)硬件的要求比較高,對(duì)內(nèi)存的要求也比較高,他的連接數(shù)量取決于服務(wù)器cpu*2的數(shù)量,對(duì)于虛擬內(nèi)存(jvm或者其他語言)需要控制和調(diào)優(yōu),或者做到實(shí)時(shí)修改和按照連接數(shù)量修改。3 系統(tǒng)詳細(xì)需求分析對(duì)于移動(dòng)端可以有以下幾點(diǎn):1. 使用的網(wǎng)絡(luò)主要是運(yùn)營商的無線移動(dòng)網(wǎng)絡(luò),網(wǎng)絡(luò)質(zhì)量不穩(wěn)定,例如在地鐵上信號(hào)就很差,容易發(fā)生網(wǎng)絡(luò)閃斷;2. 海量的客戶端接入,而且通常使用長連接,無論是客戶端還是服務(wù)端,資源消耗都非常大

5、;3. 由于谷歌的推送框架無法在國內(nèi)使用,Android的長連接是由每個(gè)應(yīng)用各自維護(hù)的,這就意味著每臺(tái)安卓設(shè)備上會(huì)存在多個(gè)長連接。即便沒有消息需要推送,長連接本身的心跳消息量也是非常巨大的,這就會(huì)導(dǎo)致流量和耗電量的增加;4. 不穩(wěn)定:消息丟失、重復(fù)推送、延遲送達(dá)、過期推送時(shí)有發(fā)生;5. 垃圾消息滿天飛,缺乏統(tǒng)一的服務(wù)治理能力。 對(duì)于pc端主要作用于項(xiàng)目之間的接口調(diào)用(模擬)他與RMI有著質(zhì)的區(qū)別,這里不做解釋。3.1 詳細(xì)需求分析總共可以定義為以下幾點(diǎn):· a.詳細(xì)功能需求分析· 數(shù)據(jù)之間的傳輸,實(shí)時(shí)性,容錯(cuò)性為最主要的功能.遠(yuǎn)程接口參數(shù)的傳輸,傳遞參數(shù)到接收方,對(duì)方在本地

6、通過參數(shù)解析后根據(jù)內(nèi)部定義的協(xié)議來決定具體做什么事。· b.詳細(xì)性能需求分析· Netty性能取決于計(jì)算機(jī)內(nèi)存和cpu以及運(yùn)行環(huán)境的虛擬內(nèi)存,他本身是支持百萬級(jí)別的連接,但是需要針對(duì)業(yè)務(wù)來調(diào)優(yōu),比如設(shè)置jvm參數(shù),調(diào)試tcp參數(shù),在具體代碼中對(duì)進(jìn)程和線程的控制以及管理,在長連接中合理的心跳設(shè)置等。· c.詳細(xì)系統(tǒng)運(yùn)行環(huán)境及限制條件分析· 服務(wù)端以netty開發(fā),設(shè)置線程連接總數(shù),之后是放于linux環(huán)境下,百萬長連接接入,首先需要優(yōu)化的就是Linux內(nèi)核參數(shù),其中Linux最大文件句柄數(shù)是最重要的調(diào)優(yōu)參數(shù)之一,默認(rèn)單進(jìn)程打開的最大句柄數(shù)是1024,通過u

7、limit -a可以查看相關(guān)參數(shù),示例如下:rootlilinfeng # ulimit -acore file size (blocks, -c) 0data seg size (kbytes, -d) unlimitedscheduling priority (-e) 0file size (blocks, -f) unlimitedpending signals (-i) 256324max locked memory (kbytes, -l) 64max memory size (kbytes, -m) unlimitedopen files (-n) 1024.后續(xù)輸出省略當(dāng)單個(gè)推送

8、服務(wù)接收到的鏈接超過上限后,就會(huì)報(bào)“too many open files”,所有新的客戶端接入將失敗。通過vi /etc/security/limits.conf 添加如下配置參數(shù):修改之后保存,注銷當(dāng)前用戶,重新登錄,通過ulimit -a 查看修改的狀態(tài)是否生效。* softnofile1000000* hardnofile1000000需要指出的是,盡管我們可以將單個(gè)進(jìn)程打開的最大句柄數(shù)修改的非常大,但是當(dāng)句柄數(shù)達(dá)到一定數(shù)量級(jí)之后,處理效率將出現(xiàn)明顯下降,因此,需要根據(jù)服務(wù)器的硬件配置和處理能力進(jìn)行合理設(shè)置。如果單個(gè)服務(wù)器性能不行也可以通過集群的方式實(shí)現(xiàn)。3.2 接口需求分析·

9、; Netty目前作用于移動(dòng)通信,快去住網(wǎng)站接口訪問,酒店數(shù)據(jù)庫與總系統(tǒng)數(shù)據(jù)傳輸。在移動(dòng)端主要作用于數(shù)據(jù)流的傳輸,在pc項(xiàng)目中主要用于傳遞參數(shù)調(diào)用接口來實(shí)現(xiàn)數(shù)據(jù)雙方的實(shí)時(shí)性。· 移動(dòng)端· A.圖片上傳· B.視頻上傳· C.文件下載· Pc項(xiàng)目端· A.酒店房間狀態(tài)· B.房費(fèi)· C.酒店基本信息· D.更新包下載4 總體方案確認(rèn)通過netty做服務(wù)端,以端口的形式等待客戶端連接,通過心跳包數(shù)據(jù)確定是否保持長連接,在此過程中對(duì)安全性,雙方認(rèn)證等都是通過定義通信協(xié)議來保證。以實(shí)時(shí)性和容錯(cuò)性作為主體思想來設(shè)計(jì)

10、netty服務(wù)端。 4.1 系統(tǒng)總體結(jié)構(gòu)確認(rèn) 系統(tǒng)組成分為2塊,netty服務(wù)端,通信客戶端。在服務(wù)端的架構(gòu)層次分為通信層,網(wǎng)絡(luò)協(xié)議層,傳輸層,數(shù)據(jù)解析層以及應(yīng)用層。在服務(wù)端開放端口等待客戶端的連接,通過解析通信協(xié)議確定認(rèn)證連接,對(duì)于連接上的客戶端以心跳包數(shù)據(jù)的形式保持長連接狀態(tài),以心跳周期來確定連接性能,控制服務(wù)端連接壓力;需要注意的是在移動(dòng)應(yīng)用中,網(wǎng)絡(luò)狀態(tài)不是特別的理想,這里需要考慮斷線的情況,在百萬長連接的推送系統(tǒng)中,服務(wù)端需要能夠正確處理這些網(wǎng)絡(luò)異常,設(shè)計(jì)要點(diǎn)如下:客戶端的重連間隔需要合理設(shè)置,防止連接過于頻繁導(dǎo)致的連接失敗(例如端口還沒有被釋放);客戶端重復(fù)登陸拒絕機(jī)制;服務(wù)端正確處

11、理I/O異常和解碼異常等,防止句柄泄露.5 系統(tǒng)詳細(xì)設(shè)計(jì)5.1 系統(tǒng)設(shè)計(jì)-netty服務(wù)端具體分析流程圖 圖為netty工作流程圖圖為netty消息推送流程圖6 信息編碼設(shè)計(jì)6.3 代碼結(jié)構(gòu)設(shè)計(jì) 系統(tǒng)總共分為2個(gè)大包:服務(wù)端和客戶端,這里只介紹服務(wù)端。項(xiàng)目類分為:nettyserver,ServerHandler,字節(jié)流解析類(輸入和輸出),通過spring來管理nettyserver;在服務(wù)端有解析層和接口層以及接口實(shí)現(xiàn)層。6.4 代碼編制bootstrap = new ServerBootstrap(new NioServerSocketChannelFactory(Executors.newCachedThreadPool(), /boss 監(jiān)聽請(qǐng)求,并分派給slave進(jìn)行處理 Executors.newCachedThreadPool()/slave 處理請(qǐng)求,將其丟到線程池中處理 ) )

溫馨提示

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

評(píng)論

0/150

提交評(píng)論