




版權(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制作時(shí)間:2015.07.21制作人:黃浩基于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ì)-
2、netty服務(wù)端具體分析流程圖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é)議和通信架
3、構(gòu)以及網(wǎng)絡(luò)通信層次;netty作為高并發(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ù)庫方面可以
4、采用mysql或者oracle等,作為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. 海量的客戶端接入,而且通常使用長連接,無論是客戶
5、端還是服務(wù)端,資源消耗都非常大;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ù)的傳輸
6、,傳遞參數(shù)到接收方,對(duì)方在本地通過參數(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)程打開
7、的最大句柄數(shù)是1024,通過ulimit -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) 1
8、024.后續(xù)輸出省略當(dāng)單個(gè)推送服務(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)。
9、3.2 接口需求分析· 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í)
10、時(shí)性和容錯(cuò)性作為主體思想來設(shè)計(jì)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)致的連接失?。ɡ缍丝谶€沒有被釋放);客戶端
11、重復(fù)登陸拒絕機(jī)制;服務(wù)端正確處理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ì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 農(nóng)戶特色農(nóng)產(chǎn)品產(chǎn)銷一體化合同
- 農(nóng)業(yè)生產(chǎn)技術(shù)推廣與培訓(xùn)服務(wù)合同
- 商業(yè)活動(dòng)策劃與執(zhí)行合同細(xì)節(jié)協(xié)議說明
- 網(wǎng)絡(luò)安全服務(wù)合同及應(yīng)急響應(yīng)協(xié)議條款
- 管理心理學(xué)關(guān)鍵障礙試題及答案
- 麻醉術(shù)前訪視
- 2025鄉(xiāng)鎮(zhèn)綠化管理員合同范文
- 2025廣州番禺職業(yè)技術(shù)學(xué)院專利申請(qǐng)代理及服務(wù)采購項(xiàng)目合同書
- 行政管理本科知識(shí)點(diǎn)試題及答案回顧
- 2025關(guān)于電子產(chǎn)品買賣合同的模板
- DBJ-T 15-98-2019 建筑施工承插型套扣式鋼管腳手架安全技術(shù)規(guī)程
- 鳶飛魚躍:〈四書〉經(jīng)典導(dǎo)讀智慧樹知到期末考試答案章節(jié)答案2024年四川大學(xué)
- MOOC 統(tǒng)計(jì)學(xué)-南京審計(jì)大學(xué) 中國大學(xué)慕課答案
- 高考作文標(biāo)準(zhǔn)方格紙-A4-可直接打印
- 毛澤東詩詞鑒賞
- 肛腸科的中醫(yī)特色護(hù)理【醫(yī)院中醫(yī)護(hù)理及保健知識(shí)】
- 《高溫熔融金屬吊運(yùn)安全規(guī)程》(AQ7011-2018)
- 商場糾紛和解書
- 強(qiáng)國必須強(qiáng)軍軍強(qiáng)才能國安
- 幼兒園教育中的多媒體技術(shù)與教學(xué)應(yīng)用
- 第12課 自覺抵制犯罪(課時(shí)1)【中職專用】中職思想政治《職業(yè)道德與法治》高效課堂(高教版2023·基礎(chǔ)模塊)
評(píng)論
0/150
提交評(píng)論