




版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領
文檔簡介
1、項目名稱:基于netty的網(wǎng)絡通信項目開發(fā)級別|:A制作人:黃浩基于netty網(wǎng)絡通信-服務端開發(fā)文檔詳細設計說明書評審人: 日期: 批準人: 日期: Revision Record 修改記錄日期時間修改目錄修改描述作者目錄1 引言41.1 編寫目的41.2 背景41.3 參考資料41.4 術語定義及說明42 設計概述52.1 任務和目標52.1.1 需求概述52.1.2 運行環(huán)境概述52.1.3 條件與限制53 系統(tǒng)詳細需求分析53.1 詳細需求分析63.2 接口需求分析74 總體方案確認74.1 系統(tǒng)總體結構確認75 系統(tǒng)詳細設計85.1 系統(tǒng)設計-netty服務端具體分析流程圖
2、86 信息編碼設計96.3 代碼結構設計96.4 代碼編制91 引言1.1 編寫目的(1) 手機APP的socket網(wǎng)絡框架(本項目中必須) 手機發(fā)送圖片 視頻 音頻等到服務器,雙向傳輸。(2) 基于網(wǎng)絡的遠程調用和通訊,模擬出遠程接口RMI(基于dubbo網(wǎng)絡通訊的補充)1.2 背景A. 基于netty的網(wǎng)絡通信;B. 用于網(wǎng)絡通信,即時通信,長連接等;1.3 參考資料 1.4 術語定義及說明Netty服務端,數(shù)據(jù)推送,即時推送,手機連接總服務器等。2 設計概述2.1 任務和目標此設計主要針對于netty作為服務端支持客戶端長連接,在此基礎上定義通信協(xié)議和通信架構以及網(wǎng)絡通信層次;netty
3、作為高并發(fā)的網(wǎng)絡通信框架,必須做到及時的,安全的,可靠的數(shù)據(jù)讀寫操作 ,客戶端的連接支持必須達到百萬以上。2.1.1 需求概述其一:目前在開發(fā)手機端項目的時候需要涉及到和總服務端的通信,此通信用于傳輸圖片,視頻等,考慮到手機端開發(fā)比較嚴謹,無法加載龐大的jar文件,那么所有的壓力都必須在服務端;其二:此通信可用作暫時的即時通訊傳輸數(shù)據(jù),通過雙方傳遞參數(shù)的形式模擬遠程方法的調用,這點的設計主要是針對客戶端IP無法穩(wěn)定,必須單向通信達到雙向調用。2.1.2 運行環(huán)境概述作用于軟硬件之間的通信,或者軟件與軟件之間的通信,可以跨平臺訪問,不受操作系統(tǒng)的限制,數(shù)據(jù)庫方面可以采用mysql或者oracle
4、等,作為netty的服務端必須放置于大型的計算機處理下-俗稱機房服務器;作為客戶端無嚴謹?shù)囊?,但是必須提供通信接口,比如能tcp連接或者udp連接。2.1.3 條件與限制作為netty的服務端,他對硬件的要求比較高,對內存的要求也比較高,他的連接數(shù)量取決于服務器cpu*2的數(shù)量,對于虛擬內存(jvm或者其他語言)需要控制和調優(yōu),或者做到實時修改和按照連接數(shù)量修改。3 系統(tǒng)詳細需求分析對于移動端可以有以下幾點:1. 使用的網(wǎng)絡主要是運營商的無線移動網(wǎng)絡,網(wǎng)絡質量不穩(wěn)定,例如在地鐵上信號就很差,容易發(fā)生網(wǎng)絡閃斷;2. 海量的客戶端接入,而且通常使用長連接,無論是客戶端還是服務端,資源消耗都非常大
5、;3. 由于谷歌的推送框架無法在國內使用,Android的長連接是由每個應用各自維護的,這就意味著每臺安卓設備上會存在多個長連接。即便沒有消息需要推送,長連接本身的心跳消息量也是非常巨大的,這就會導致流量和耗電量的增加;4. 不穩(wěn)定:消息丟失、重復推送、延遲送達、過期推送時有發(fā)生;5. 垃圾消息滿天飛,缺乏統(tǒng)一的服務治理能力。 對于pc端主要作用于項目之間的接口調用(模擬)他與RMI有著質的區(qū)別,這里不做解釋。3.1 詳細需求分析總共可以定義為以下幾點:· a.詳細功能需求分析· 數(shù)據(jù)之間的傳輸,實時性,容錯性為最主要的功能.遠程接口參數(shù)的傳輸,傳遞參數(shù)到接收方,對方在本地
6、通過參數(shù)解析后根據(jù)內部定義的協(xié)議來決定具體做什么事。· b.詳細性能需求分析· Netty性能取決于計算機內存和cpu以及運行環(huán)境的虛擬內存,他本身是支持百萬級別的連接,但是需要針對業(yè)務來調優(yōu),比如設置jvm參數(shù),調試tcp參數(shù),在具體代碼中對進程和線程的控制以及管理,在長連接中合理的心跳設置等。· c.詳細系統(tǒng)運行環(huán)境及限制條件分析· 服務端以netty開發(fā),設置線程連接總數(shù),之后是放于linux環(huán)境下,百萬長連接接入,首先需要優(yōu)化的就是Linux內核參數(shù),其中Linux最大文件句柄數(shù)是最重要的調優(yōu)參數(shù)之一,默認單進程打開的最大句柄數(shù)是1024,通過u
7、limit -a可以查看相關參數(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ù)輸出省略當單個推送
8、服務接收到的鏈接超過上限后,就會報“too many open files”,所有新的客戶端接入將失敗。通過vi /etc/security/limits.conf 添加如下配置參數(shù):修改之后保存,注銷當前用戶,重新登錄,通過ulimit -a 查看修改的狀態(tài)是否生效。* softnofile1000000* hardnofile1000000需要指出的是,盡管我們可以將單個進程打開的最大句柄數(shù)修改的非常大,但是當句柄數(shù)達到一定數(shù)量級之后,處理效率將出現(xiàn)明顯下降,因此,需要根據(jù)服務器的硬件配置和處理能力進行合理設置。如果單個服務器性能不行也可以通過集群的方式實現(xiàn)。3.2 接口需求分析·
9、; Netty目前作用于移動通信,快去住網(wǎng)站接口訪問,酒店數(shù)據(jù)庫與總系統(tǒng)數(shù)據(jù)傳輸。在移動端主要作用于數(shù)據(jù)流的傳輸,在pc項目中主要用于傳遞參數(shù)調用接口來實現(xiàn)數(shù)據(jù)雙方的實時性。· 移動端· A.圖片上傳· B.視頻上傳· C.文件下載· Pc項目端· A.酒店房間狀態(tài)· B.房費· C.酒店基本信息· D.更新包下載4 總體方案確認通過netty做服務端,以端口的形式等待客戶端連接,通過心跳包數(shù)據(jù)確定是否保持長連接,在此過程中對安全性,雙方認證等都是通過定義通信協(xié)議來保證。以實時性和容錯性作為主體思想來設計
10、netty服務端。 4.1 系統(tǒng)總體結構確認 系統(tǒng)組成分為2塊,netty服務端,通信客戶端。在服務端的架構層次分為通信層,網(wǎng)絡協(xié)議層,傳輸層,數(shù)據(jù)解析層以及應用層。在服務端開放端口等待客戶端的連接,通過解析通信協(xié)議確定認證連接,對于連接上的客戶端以心跳包數(shù)據(jù)的形式保持長連接狀態(tài),以心跳周期來確定連接性能,控制服務端連接壓力;需要注意的是在移動應用中,網(wǎng)絡狀態(tài)不是特別的理想,這里需要考慮斷線的情況,在百萬長連接的推送系統(tǒng)中,服務端需要能夠正確處理這些網(wǎng)絡異常,設計要點如下:客戶端的重連間隔需要合理設置,防止連接過于頻繁導致的連接失?。ɡ缍丝谶€沒有被釋放);客戶端重復登陸拒絕機制;服務端正確處
11、理I/O異常和解碼異常等,防止句柄泄露.5 系統(tǒng)詳細設計5.1 系統(tǒng)設計-netty服務端具體分析流程圖 圖為netty工作流程圖圖為netty消息推送流程圖6 信息編碼設計6.3 代碼結構設計 系統(tǒng)總共分為2個大包:服務端和客戶端,這里只介紹服務端。項目類分為:nettyserver,ServerHandler,字節(jié)流解析類(輸入和輸出),通過spring來管理nettyserver;在服務端有解析層和接口層以及接口實現(xiàn)層。6.4 代碼編制bootstrap = new ServerBootstrap(new NioServerSocketChannelFactory(Executors.newCachedThreadPool(), /boss 監(jiān)聽請求,并分派給slave進行處理 Executors.newCachedThreadPool()/slave 處理請求,將其丟到線程池中處理 ) )
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經權益所有人同意不得將文件中的內容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
- 6. 下載文件中如有侵權或不適當內容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 投標策略與技巧全解析
- 青島航空科技職業(yè)學院《數(shù)字影像創(chuàng)意與設計》2023-2024學年第一學期期末試卷
- 東營科技職業(yè)學院《常用統(tǒng)計軟件》2023-2024學年第一學期期末試卷
- 廈門華天涉外職業(yè)技術學院《社區(qū)發(fā)展》2023-2024學年第一學期期末試卷
- 黑龍江商業(yè)職業(yè)學院《理論力學(土木)》2023-2024學年第一學期期末試卷
- 麗江文化旅游學院《藥物研發(fā)基本原理》2023-2024學年第一學期期末試卷
- 山西藝術職業(yè)學院《植物學B》2023-2024學年第一學期期末試卷
- 湖南科技大學《德語文學史》2023-2024學年第一學期期末試卷
- 杭州醫(yī)學院《專業(yè)英語II》2023-2024學年第一學期期末試卷
- 2025年醫(yī)療美容行業(yè)消費者心理研究與服務流程優(yōu)化報告
- AI技術支持的學情分析
- 核電站sdm手冊第7章
- JGJ-130-2011建筑施工扣件式鋼管腳手架安全技術規(guī)范(新版)
- 魯東教師心理健康期末考試復習題及參考答案
- 人教版八年級上冊:《蘆花蕩》課文原文
- 蛋白質純化技術PPT幻燈片課件
- 企業(yè)部門人員需求申請表
- 手太陰肺經ppt課件
- 城市居住區(qū)規(guī)劃設計規(guī)范(含條文說明)
- (完整版)《普通心理學-彭聃齡》知識要點
- 借款擔保人擔保承諾書
評論
0/150
提交評論