日韩在线首页I俄罗斯pornI男女猛烈激情XX00高潮动态I超碰免费97I乱人伦99久久I欧美日韩成人一区I最新日韩视频在线观看I粉嫩AV四季AV绯色AVI五月导航

×
新網 > 建站推廣 > 正文

怎么實現一個網站的Web Server(下)

  • 作者:新網
  • 來源:新網
  • 瀏覽:100
  • 2018-02-24 17:42:01

怎么實現一個網站的Web Serve?Web服務器可以解析(handles)HTTP協議。當Web服務器接收到一個HTTP請求(request),會返回一個HTTP響應(response),例如送回一個HTML頁面。

 怎么實現一個網站的Web Serve?Web服務器可以解析(handles)HTTP協議。當Web服務器接收到一個HTTP請求(request),會返回一個HTTP響應(response),例如送回一個HTML頁面。

t01106c1687f82fb8e5.gif
定時器 Timer
 
如果一個請求在建立連接后遲遲沒有發送數據,或者對方突然斷電,應該如何處理?我們需要實現定時器來處理超時的請求。Vino 定時器的實現參考了 Nginx 的設計,Nginx 使用一顆紅黑樹來存儲各個定時事件,每次事件循環時從紅黑樹中不斷找出最小(早)的事件,如果超時則觸發超時處理。為了簡化實現,在 Vino 中,我實現了一個小頂堆來存儲定時事件,如果被處理的定時事件同時支持長連接,那么在該請求處理完畢后會更新該請求對應的定時器,也就是重新計時。定時器相關代碼見 vn_event_timer.h 和 vn_event_timer.c。
 
HTTP Parser
 
由于網絡的不確定性,我們并不能保證一次就能讀取所有的請求數據。因此,對于每一個請求,我們都會開辟一段緩沖區用于保存已經讀取到的數據。同時,我們需要同時對讀取到的數據進行解析,以保證讀取到的數據都是合理的數據,例如,假設目前緩沖區內的數據為 GET /index.html HTT,那么下一次讀取到的字符必須為 P,否則,應立即檢測出當前請求是一個異常的請求,并主動關閉當前的連接。
 
基于以上分析,我們需要實現一個 HTTP 狀態機(Parser)來維持當前的解析狀態,Vino 狀態機的實現參考了 Nginx 的設計,并對 Nginx 的實現做了簡化。HTTP Parser 相關代碼見 vn_http_parse.h 和 vn_http_parse.c。
 
Memory Pool
 
我們一般使用 malloc/calloc/free 來分配/釋放內存,但是這些函數對于一些需要長時間運行的程序來說會有一些弊端。頻繁使用這些函數分配和釋放內存,會導致內存碎片,不容易讓系統直接回收內存。典型的例子就是大并發頻繁分配和回收內存,會導致進程的內存產生碎片,并且不會立馬被系統回收。
 
使用內存池分配內存,可以在一定程度上提升內存分配的效率,不需要每次都調用 malloc/calloc 函數。同時,使用內存池使得內存管理更加簡單。在 Vino 中,針對每一個請求,Vino 都會為其分配一或多個內存池(各個內存池形成一個單鏈表),在請求處理完畢后,一并釋放所有的內存。
 
Vino 內存池的實現依舊參考了 Nginx 的實現,并做了簡化,Memory Pool 相關代碼見 vn_palloc.h 和 vn_palloc.c。
 
其他
 
在開發 Vino 的過程中,還有許多需要考慮和權衡的地方。響應請求時,如果用戶請求的是一個很大的文件,導致寫緩沖區滿,我們如何更好的設計響應緩沖區?如何更高效的設計底層數據結構(如字符串、鏈表、小頂堆等)?如何更優雅的解析命令行參數?如何對特定信號進行處理?如何更健壯的處理錯誤信息?當代碼的數量達到一定程度后,如何更快的定位異常代碼?
 
Vino 的開發 & 重構暫時告一段落,源碼放在了 GitHub 上。當然,Vino 還有許多不足之處,以及未實現的特性。
 
僅支持 HTTP GET 方法,暫不支持其他 HTTP method。
 
暫不支持動態請求的處理。
 
支持的 HTTP/1.1 特性有限。
 
以上就是小編對于怎么實現一個網站的Web Serve的全部解答。
 

免責聲明:本文內容由互聯網用戶自發貢獻自行上傳,本網站不擁有所有權,也不承認相關法律責任。如果您發現本社區中有涉嫌抄襲的內容,請發送郵件至:operations@xinnet.com進行舉報,并提供相關證據,一經查實,本站將立刻刪除涉嫌侵權內容。

免費咨詢獲取折扣

Loading
主站蜘蛛池模板: 在线精品一区 | 日韩三级av在线 | 国产免费黄色片 | 在线精品视频一区二区三四 | 国产亚洲精品福利在线无卡一 | 无码帝国www无码专区色综合 | 99有精品| 6080日韩午夜伦伦午夜伦 | 国产成人片视频一区二区 | 欧美大片免费播放器 | 精品视频一区二区三区在线观看 | 美女视频久久久 | 欧美精产国品一二三区69堂 | 久久久噜噜噜久噜久久 | 国产成人精品一区二区三区视频 | 国模妙妙超大尺度啪啪人体 | 国产大片一区 | 国产欧美va欧美va香蕉在线 | 大肉大捧一进一出好爽动态图 | 国产在线精品播放 | 精品无码午夜福利电影片 | 亚洲国产桃花岛一区二区 | 日本精品视频在线 | 人人鲁人人莫人人爱精品 | 亚洲性色av性色在线观看 | 香港三级午夜理伦三级 | 成年av动漫网站久久 | 91蝌蚪九色 | 激情黄色一级片 | 国产午夜精品在线 | 免费观看毛片网站 | 婷婷综合久久狠狠色99h | 国产精品美女久久久久久福利 | 中日韩精品卡一卡二卡3卡 亚洲码国产精品高潮在线 www.久操 | 污污网站免费在线观看 | 精品视频亚洲 | 欧美熟妇另类久久久久久多毛 | 久久人人爽人人人人爽av | 国产麻豆91精品三级站 | 一级特黄特色的免费大片视频 | 91精品久久久久久久久久 | 久久露脸 | 男女插插插视频 | 日韩视频在线观看免费视频 | 亚洲男人天堂网址 | 国产真实乱对白精彩 | 欧美中字 | 国产香蕉97碰碰视频碰碰看 | 黄色av网站在线看 | 99蜜桃在线观看免费视频网站 | 日日摸日日碰夜夜爽亚洲精品蜜乳 | 成人国产精品一区二区免费看 | 免费刺激性视频大片区 | 亚洲精品久久7777777国产 | 激情大战极品尤物呻吟 | www.欧美亚洲 | 成人精品鲁一区一区二区 | 97视频在线| 日本公妇乱淫xxxⅹ 午夜免费观看 | 国产三男一女4p免费男黑人 | 亚洲精品视频免费 | 成人欧美一区二区三区白人 | 久久久久久国产精品视频 | 精品国产乱码久久久人妻 | 国产字幕侵犯亲女 | 欧美一区二区在线观看视频 | av无码国产在线观看岛国 | 国产毛片精品 | 中文字幕亚洲乱码熟女在线萌芽 | 羞羞影院午夜男女爽爽免费 | 伊人久久大香网 | 毛片大全免费 | 中文字幕av在线 | 在线亚洲欧美日韩精品专区 | 91久| 琪琪女色窝窝777777 | 国偷自产中文字幕亚洲手机在线 | 国产精品视频一区二区亚瑟 | 日本草草视频 | 亚洲欧美强伦一区二区 | 青青视频在线免费观看 | 人成午夜免费大片 | 午夜影视啪啪免费体验区入口 | wwwxxxx日本 | 师生出轨h灌满了1v1 | 欧美久久国产精品 | 99re6在线视频精品免费 | 久久成人视屏 | youjizz.com中国 | 精品香蕉一区二区三区 | 亚洲国产av无码精品无广告 | 国产你懂得 | 高h辣h情趣道具h黄n男一女 | 亚洲人成网77777色在线播放 | 少妇无套高潮一二三区 | 超碰青草| www.天堂av.com| 99热门精品一区二区三区无码 | 国产精品嫩草影院九色 |