Linux環(huán)境下高并發(fā)web服務(wù)器 的設(shè)計(jì)與實(shí)現(xiàn).docx

上傳人:黑** 文檔編號:81621547 上傳時(shí)間:2022-04-27 格式:DOCX 頁數(shù):31 大?。?.43MB
收藏 版權(quán)申訴 舉報(bào) 下載
Linux環(huán)境下高并發(fā)web服務(wù)器 的設(shè)計(jì)與實(shí)現(xiàn).docx_第1頁
第1頁 / 共31頁
Linux環(huán)境下高并發(fā)web服務(wù)器 的設(shè)計(jì)與實(shí)現(xiàn).docx_第2頁
第2頁 / 共31頁
Linux環(huán)境下高并發(fā)web服務(wù)器 的設(shè)計(jì)與實(shí)現(xiàn).docx_第3頁
第3頁 / 共31頁

下載文檔到電腦,查找使用更方便

28 積分

下載資源

還剩頁未讀,繼續(xù)閱讀

資源描述:

《Linux環(huán)境下高并發(fā)web服務(wù)器 的設(shè)計(jì)與實(shí)現(xiàn).docx》由會員分享,可在線閱讀,更多相關(guān)《Linux環(huán)境下高并發(fā)web服務(wù)器 的設(shè)計(jì)與實(shí)現(xiàn).docx(31頁珍藏版)》請?jiān)谘b配圖網(wǎng)上搜索。

1、Linux環(huán)境下高并發(fā)web服務(wù)器的設(shè)計(jì)與實(shí)現(xiàn)摘要隨著信息技術(shù)的飛速開展,互聯(lián)網(wǎng)已經(jīng)成為社會生產(chǎn)生活中不可缺少的一局部。特別是近十年來,由于移動技 術(shù)的進(jìn)步和智能移動設(shè)備的普及,互聯(lián)網(wǎng)用戶數(shù)量呈爆發(fā)式增長,越來越多的行業(yè)正在通過互聯(lián)網(wǎng)進(jìn)行變革。用戶 群體的開展改變了互聯(lián)網(wǎng)服務(wù)的形式,越來越多的服務(wù)器需要同時(shí)為大量客戶提供服務(wù)。因此,如何設(shè)計(jì)服務(wù)器的 通信框架,如何有效利用服務(wù)器的系統(tǒng)資源,成為服務(wù)器開發(fā)人員關(guān)注的焦點(diǎn)。Web應(yīng)用具有連接間隔短、突發(fā)性強(qiáng)、響應(yīng)時(shí)間短等特點(diǎn),它是一種對并發(fā)性要求很高的服務(wù)。本文在服務(wù)器系 統(tǒng)中選擇主流的Linux操作系統(tǒng),采用C+,結(jié)合Socket、I/O多路復(fù)用

2、技術(shù)epoll、無阻塞I/O、線程池、定時(shí)器和 Reactor事件處理模式,設(shè)計(jì)并實(shí)現(xiàn)了一個(gè)穩(wěn)定支持高并發(fā)的Web服務(wù)器。本文首先介紹和分析了Wob服務(wù)器的相關(guān)技術(shù),包括Socket、epolK Reactor事件處理模式、線程池和數(shù)據(jù)庫連 接池;重點(diǎn)討論了epoll與其他I/O模型的區(qū)別,以及epoll模型的特點(diǎn)。其次,根據(jù)Reactor模式分析了服務(wù)器的整圖3. 4事件處理器與存儲隊(duì)列存儲單元從阻塞隊(duì)列獲取獲取數(shù) 據(jù)進(jìn)行存儲。如圖3. 5所示。圖3. 5存儲隊(duì)列與存儲單元3. 2事件別離器流程事件別離器主要負(fù)責(zé)接收新連接、偵聽到達(dá)事件。HTTP長連接可以減少TCP連接的創(chuàng)立次數(shù),使客戶端和

3、服務(wù)器能 夠有效復(fù)用TCP連接。但是,“在長連接應(yīng)用中,服務(wù)器與客戶端實(shí)例都保持一個(gè)持久的連接,這將大量消耗服務(wù)器資源,特別是在一些大型應(yīng)用系統(tǒng)中更是如 此,大量并發(fā)的長連接有可能導(dǎo)致新的請求被阻塞甚至系統(tǒng)崩潰18?!睘榱藢﹂L連接進(jìn)行管控,服務(wù)器可以通過實(shí)現(xiàn)定時(shí)器,對每個(gè)連接記錄超時(shí)時(shí)間點(diǎn)來解決這個(gè)問題。每當(dāng)某個(gè) 連接有新請求到達(dá)時(shí)重置該連接的定時(shí)器,如果連接超時(shí)那么服務(wù)器主動釋放連接。判斷超時(shí)和重置定時(shí)器的工作均 由事件別離器完成,事件別離器工作流程如圖3. 6所示。設(shè)置新連接的定時(shí) 器,把新邇接加入設(shè)置新連接的定時(shí) 器,把新邇接加入重置龍?jiān)亩〞r(shí)器,把 事件和處理方法加入到I 到檢測集合中

4、 II 事件阻塞隊(duì)列中 I圖3.6事件別離器流程3. 3事件處理器流程事件處理器是服務(wù)器的核心模塊,主要負(fù)責(zé)的工作是:服務(wù)器的I/O操作、業(yè)務(wù)處理,因此對服務(wù)器的業(yè)務(wù)拓展 工作主要是對事件處理器的功能進(jìn)行拓展。在本工程實(shí)現(xiàn)的Web服務(wù)器中,I/O操作主要是指對Socket進(jìn)行讀寫操 作 ,業(yè)務(wù)處理主要是指對接收到的HTTP請求報(bào)文進(jìn)行解析,并生成相應(yīng)的HTTP響應(yīng)報(bào)文。同時(shí)為了能夠支持用戶登錄 功能和用戶注冊功能,當(dāng)HTTP請求為該兩種功能請求時(shí),事件處理器還需要通過訪問數(shù)據(jù)庫對接收到的用戶名和用 戶密碼進(jìn)行判斷或存儲操作。事件處理器的整體流程如圖3. 7所示。圖3. 7事件處理器流程在本工程

5、中事件處理器的業(yè)務(wù)處理可以分為兩個(gè)模塊:HTTP請求報(bào)文解析模塊、HTTP 響應(yīng)報(bào)文生成模塊。3. 3. 1 HTTP請求報(bào)文解析模塊本模塊主要工作是對客戶端發(fā)送來的HTTP請求報(bào)文進(jìn)行解析。HTTP請求報(bào)文由請求行、請求頭部、空白行、請 求體構(gòu)成,每一行都以CRLF (回車符和換行符)作為結(jié)尾標(biāo)志19。在IITTP/L1中,請求行由請求方法、URI、HTTP協(xié)議版本構(gòu)成。請求頭部由多行構(gòu)成,每行以鍵值對的形式表示 (鍵為頭部字段名)。請求頭部包含了一些該連接和報(bào)文的信息,如表示長連接狀態(tài)的keep-alive、請求體的編碼 方式content-type等。空白行沒有數(shù)據(jù)只有CRLF表示空白的

6、一行,用來區(qū)分請求頭部和請求體。請求體攜帶客戶端 發(fā)送的數(shù)據(jù),如通過POST請求報(bào)文發(fā)送的表單。HTTP請求解析模塊主要有三個(gè)狀態(tài):解析請求行、解析請求頭部、解析請求體。狀態(tài)轉(zhuǎn)移如圖3. 8所示。GET請求報(bào) 文和POST請求報(bào)文是本文的主要解析對象。GET請求報(bào)文把參數(shù)存放在URL請求體數(shù)據(jù)為空,事件處理器無需解析GET請求報(bào)文的請求體。POST請求報(bào)文的參數(shù)被存放在POST請求報(bào)文的請求體中,事件處理器需要對 POST請求報(bào)文的請求體進(jìn)行解析,從中獲取報(bào)文參數(shù)。登陸和注冊通過POST報(bào)文發(fā)送請求,用戶名和用戶密碼存放在請求體中。在解析請求體過程中,需要對通過解 析得到的用戶名、用戶密碼進(jìn)行

7、處理:當(dāng)報(bào)文請求為登錄時(shí),向存儲單元查詢用戶名、用戶密碼進(jìn)行校驗(yàn);當(dāng)報(bào)文 請求為注冊時(shí),向存儲單元查詢用戶名、密碼合法性,如果合法那么進(jìn)行存儲。3.3.2 HTTP響應(yīng)報(bào)文生成模塊 本模塊主要工作是生成發(fā)送給客戶端的HTTP響應(yīng)報(bào)文。HTTP響應(yīng)報(bào)文由響應(yīng)行、響應(yīng) 頭部、空白行、響應(yīng)體構(gòu)成,每一行以CRLF表示該行結(jié)尾。響應(yīng)行由HTTP協(xié)議 版本、狀態(tài)碼、狀態(tài)碼描述構(gòu)成。狀態(tài)碼由三個(gè)十進(jìn)制數(shù)字組成,狀態(tài)碼的類型由第一個(gè)數(shù)字定義。狀態(tài)碼和狀態(tài)碼描述表示HTTP響應(yīng)報(bào)文的報(bào) 文類型。HTTP響應(yīng)報(bào)文生成模塊流程如圖3. 9所示。圖3. 8 HTTP解析模塊狀態(tài)轉(zhuǎn)移圖3. 9 HTTP響應(yīng)報(bào)文生成模

8、塊流程“客戶端請求資源合法”是指客戶端請求的資源存在并且是一些指定的文件,而不是某個(gè)文件夾。3.4日志系統(tǒng)日志是記錄服務(wù)器運(yùn)行狀態(tài)的文件,對于服務(wù)器開發(fā)人員和服務(wù)器運(yùn)維人員而言日志是一種能夠直觀地觀察服 務(wù)器狀態(tài)的重要文件。通過日志,服務(wù)器開發(fā)人員可以查看服務(wù)器的日常運(yùn)行狀態(tài),對服務(wù)器架構(gòu)和功能作出調(diào)整 和拓展;服務(wù)器運(yùn)維人員可以根據(jù)日志中的錯(cuò)誤信息對服務(wù)器進(jìn)行錯(cuò)誤排查。日志系統(tǒng)的實(shí)現(xiàn)有兩種方式:同步模 式和異步模式。同步模式的寫入操作與事件處理器串行執(zhí)行。寫日志文件會涉及到I/O操作,同步模式在I/O操作時(shí)會阻塞整個(gè) 處理流程。當(dāng)單條日志記錄較大時(shí),事件處理器會被阻塞較長時(shí)間,整個(gè)服務(wù)器的并

9、發(fā)度將有所下降。如果服務(wù)器 需要處理大量連接請求時(shí),寫日志操作可能會成為系統(tǒng)瓶頸。異步模式需要阻塞隊(duì)列作為事件處理器和寫日志模塊的傳輸介質(zhì)。事件處理器把日志記錄存入阻塞隊(duì)列,寫日 志模塊異步地從阻塞隊(duì)列中獲取日志記錄并寫入日志文件。異步模式把寫日志操作與業(yè)務(wù)處理流程進(jìn)行別離,防止 業(yè)務(wù)處理流程被阻塞,提高了服務(wù)器業(yè)務(wù)處理的并發(fā)度。日志記錄根據(jù)記錄信息被劃分為多個(gè)等級。例如,日志記錄被分為調(diào)試信息、運(yùn)行信息、錯(cuò)誤信息等幾個(gè)級別 ,服務(wù)器正常運(yùn)行時(shí)僅記錄運(yùn)行信息和錯(cuò)誤信息;服務(wù)器調(diào)試時(shí)記錄包括調(diào)試信息的所有信息。服務(wù)器可以根據(jù) 不 同的運(yùn)行狀態(tài)選擇不同的日志等級,過濾無需記錄的日志信息,從而提高日

10、志文件的可讀性。日志系統(tǒng)的寫入記錄 流程如圖3. 10所示。根據(jù)日志等 級、日志參數(shù) 創(chuàng)立相應(yīng)的E 志記錄 1 select * from user;Empty set (0.00 sec)圖5.7用戶表初始內(nèi)容注冊 用戶。C O A Not secure192.168.3.1. * y :首頁圖5.8首頁圖5. 9注冊圖5.10注冊成功,進(jìn)入功能界面mysql select * from user;+| username|password|+| 123456|123456|+1 row inset(0.00 sec)圖5.11數(shù)據(jù)庫存入用戶名、用戶密碼 登錄需要對用 戶名、用戶密碼進(jìn)行校驗(yàn)。

11、 C O A Not secure 192.16.所 y登錄用戶名 用戶密碼確定用戶名、用戶密碼錯(cuò)誤=圖5. 12用戶信息錯(cuò)誤,返回錯(cuò)誤信息 注冊對用戶名 進(jìn)行校驗(yàn),防止重新注冊。圖5. 13用戶名被注冊5. 7文件測試服務(wù)器讀取內(nèi)存映射區(qū)中的文件數(shù)據(jù),作為響應(yīng)體發(fā)送給客戶端。S 今 C 。 A Not secure 192.1683.129:2333/. d . * n y圖5.14視頻測試192.168.3. R 192.168.3. R - C 6 A Not圖5. 15圖片測試6課題總結(jié)本文主要介紹了Linux環(huán)境下關(guān)于C+服務(wù)器開發(fā)的相關(guān)技術(shù),分析了服務(wù)器的整體需求,并設(shè)計(jì)了一個(gè)結(jié)合

12、 Reactor模式、epoll、非阻塞I/O以及線程池的高并發(fā)Web服務(wù)器。其中主要對服務(wù)器的高并發(fā)相關(guān)技術(shù)進(jìn)行了詳細(xì) 探討:epoll模式選擇、阻塞隊(duì)列實(shí)現(xiàn)原理、主線程與線程池的半同步/半異步模型、日志系統(tǒng)的同步/異步模式。 通過實(shí)驗(yàn)測試,可以得知本文設(shè)計(jì)的服務(wù)器在主流PC中運(yùn)行可以支持上萬并發(fā),并且可以保證服務(wù)器穩(wěn)定運(yùn)行。同時(shí),本文設(shè)計(jì)的服務(wù)器還支持用戶登錄、注冊功能。工作線程通過數(shù)據(jù)庫連接池和RAH機(jī)制完成多線程模式 下對數(shù)據(jù)庫的有序訪問,并對客戶端的用戶名、用戶密碼進(jìn)行校驗(yàn)。對于文件傳輸,服務(wù)器通過內(nèi)存映射把資源文 件拷貝進(jìn)內(nèi)存,減少了程序?qū)ξ募x取的I/O操作,加快了文件傳輸速率。

13、對于長連接,服務(wù)器通過小頂堆實(shí)現(xiàn)了定 時(shí)器,完成了對超時(shí)連接的主動釋放。本文設(shè)計(jì)的服務(wù)器雖然保證了高并發(fā)場景下的穩(wěn)定運(yùn)行,但依然存在一些應(yīng)用場景問題。本文設(shè)計(jì)的服務(wù)器處 理的請求都是無狀態(tài)的,因此登錄功能會失去實(shí)際意義。有狀態(tài)場景需要服務(wù)器生成session并向客戶端返回 cookie, cookie的生成和session的保存在高并發(fā)場景下會變成一個(gè)新的難題。我將在后續(xù)工作中繼續(xù)改進(jìn),為服務(wù) 器的可用性提供更多支持。參考文獻(xiàn)1中國互聯(lián)網(wǎng)絡(luò)信息中心.第46次中國互聯(lián)網(wǎng)絡(luò)開展?fàn)顩r統(tǒng)計(jì)報(bào)告R.北京:中共中央網(wǎng)絡(luò)平安和信息化委員會 辦公室,中華人民共和國國家互聯(lián)網(wǎng)信息辦公室,2020.2周炎濤,李立

14、明.TCP/IP協(xié)議下網(wǎng)絡(luò)編程技術(shù)及其實(shí)現(xiàn)J.航空計(jì)算技術(shù),2002(03):126-128+132.3W. RichardStevens, BillFenner, AndrewM. Rudoff. UNIX網(wǎng)絡(luò)編程,第 1 卷,套接口API M.清華大學(xué)出版 社,2006.4W. RICHARDSTEVENS. TCP/IP詳解.卷1,協(xié)議機(jī)械工業(yè)出版社,2000.5MichaelKerrisk,凱利斯克,孫劍,等.Linux/UNIX系統(tǒng)編程手冊M.人民郵電出版社,2014. 6胥光輝,徐永森.同步阻塞線程的喚醒問題研究J.計(jì)算機(jī)科學(xué),2002, 29(012):49-50.7 Gammo

15、 L , Brecht T , Shukla A , et al. Comparing and Evaluating epoll, select, and poll Event Mechanisms. Proceedings of Annual Linux Symposium, 2004.8Linux下基于EPOLL機(jī)制的海量網(wǎng)絡(luò)信息處理模型J.強(qiáng)激光與粒子束,2013, 25(Ozl):46-50. 9游 雙.Linux高性能服務(wù)器編程加.機(jī)械工業(yè)出版社,2013.10 Schmidt D C . Reactor - An Object Behavioral Pattern for Demultiplexing and Dispatching Handles for Synchronous Events. 1999.11李璞,張玲,胡術(shù),等.多線程環(huán)境下Reactor模式的研究與實(shí)現(xiàn)J.網(wǎng)絡(luò)新媒體技術(shù)

展開閱讀全文
溫馨提示:
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)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

相關(guān)資源

更多
正為您匹配相似的精品文檔
關(guān)于我們 - 網(wǎng)站聲明 - 網(wǎng)站地圖 - 資源地圖 - 友情鏈接 - 網(wǎng)站客服 - 聯(lián)系我們

copyright@ 2023-2025  zhuangpeitu.com 裝配圖網(wǎng)版權(quán)所有   聯(lián)系電話:18123376007

備案號:ICP2024067431-1 川公網(wǎng)安備51140202000466號


本站為文檔C2C交易模式,即用戶上傳的文檔直接被用戶下載,本站只是中間服務(wù)平臺,本站所有文檔下載所得的收益歸上傳人(含作者)所有。裝配圖網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對上載內(nèi)容本身不做任何修改或編輯。若文檔所含內(nèi)容侵犯了您的版權(quán)或隱私,請立即通知裝配圖網(wǎng),我們立即給予刪除!