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

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

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

28 積分

下載資源

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

資源描述:

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

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

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

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

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

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

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

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

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

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

10、志文件的可讀性。日志系統(tǒng)的寫入記錄 流程如圖3. 10所示。根據(jù)日志等 級、日志參數(shù) 創(chuà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注冊成功,進入功能界面mysql select * from user;+| username|password|+| 123456|123456|+1 row inset(0.00 sec)圖5.11數(shù)據(jù)庫存入用戶名、用戶密碼 登錄需要對用 戶名、用戶密碼進行校驗。

11、 C O A Not secure 192.16.所 y登錄用戶名 用戶密碼確定用戶名、用戶密碼錯誤=圖5. 12用戶信息錯誤,返回錯誤信息 注冊對用戶名 進行校驗,防止重新注冊。圖5. 13用戶名被注冊5. 7文件測試服務器讀取內(nèi)存映射區(qū)中的文件數(shù)據(jù),作為響應體發(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課題總結本文主要介紹了Linux環(huán)境下關于C+服務器開發(fā)的相關技術,分析了服務器的整體需求,并設計了一個結合

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

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

14、明.TCP/IP協(xié)議下網(wǎng)絡編程技術及其實現(xiàn)J.航空計算技術,2002(03):126-128+132.3W. RichardStevens, BillFenner, AndrewM. Rudoff. UNIX網(wǎng)絡編程,第 1 卷,套接口API M.清華大學出版 社,2006.4W. RICHARDSTEVENS. TCP/IP詳解.卷1,協(xié)議機械工業(yè)出版社,2000.5MichaelKerrisk,凱利斯克,孫劍,等.Linux/UNIX系統(tǒng)編程手冊M.人民郵電出版社,2014. 6胥光輝,徐永森.同步阻塞線程的喚醒問題研究J.計算機科學,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機制的海量網(wǎng)絡信息處理模型J.強激光與粒子束,2013, 25(Ozl):46-50. 9游 雙.Linux高性能服務器編程加.機械工業(yè)出版社,2013.10 Schmidt D C . Reactor - An Object Behavioral Pattern for Demultiplexing and Dispatching Handles for Synchronous Events. 1999.11李璞,張玲,胡術,等.多線程環(huán)境下Reactor模式的研究與實現(xiàn)J.網(wǎng)絡新媒體技術

展開閱讀全文
溫馨提示:
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. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

相關資源

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

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

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


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