[發明專利]一種多線程高性能http代理實現方法及系統有效
| 申請號: | 201410619737.1 | 申請日: | 2014-11-05 |
| 公開(公告)號: | CN104320404B | 公開(公告)日: | 2017-10-03 |
| 發明(設計)人: | 陸世亮;朱明 | 申請(專利權)人: | 中國科學技術大學 |
| 主分類號: | H04L29/06 | 分類號: | H04L29/06;H04L29/08 |
| 代理公司: | 北京凱特來知識產權代理有限公司11260 | 代理人: | 鄭立明,鄭哲 |
| 地址: | 230026 安*** | 國省代碼: | 安徽;34 |
| 權利要求書: | 查看更多 | 說明書: | 查看更多 |
| 摘要: | |||
| 搜索關鍵詞: | 一種 多線程 性能 http 代理 實現 方法 系統 | ||
技術領域
本發明涉及互聯網信息傳輸領域,尤其涉及一種多線程高性能http代理實現方法及系統
背景技術
近十年來,互聯網飛速發展,互聯網的使用人數也在急劇膨脹,這就對傳統C/S(客戶機/服務器)模式下的http(超文本傳送協議)代理服務器提出了很大的挑戰,代理服務器需要有足夠大的并發處理能力才能去滿足日常的用戶需求,隨著互聯網使用率的不斷增大,這樣的并發處理能力要求也在不斷的增加,而傳統的http代理服務器在并發處理能力上則沒有跟上步伐。
關于如何提升http代理服務器的并發服務能力,以滿足大并發情景下用戶的需求,方法有多種,既可以在現有http代理服務器的基礎上優化配置,也可以使用最新的技術重新設計http代理的架構,傳統的http代理實現方案包括apache http代理項目以及haproxy項目等。
下面將分別介紹apache http代理項目以及haproxy項目這兩種現有的http代理實現方案。
apache http代理項目是目前互聯網上最流行的http代理實現方案。
它提供多進程多線程的代理解決方案,用戶可以通過配置文件的方式來控制代理的運行模式,運行級別,以及其他的信息。其穩定的性能能夠為互聯網上絕大多數的網站提供良好的對外服務。
apache http代理項目也存在著不足之處:首先配置文件過于龐大,這是因為apache http代理項目的目標是通用性,就難免要兼顧到各種情形,從這種意義上講,它已經不是單純的http代理,再者就是其經過公測的并發處理能力并不能滿足特定情境下的用戶需求,使得使用該項目的網站在特大并發請求的沖擊下容易出現癱瘓。
haproxy項目是提供高可用性,負載均衡和基于TCP和HTTP應用的代理。
haproxy項目的實現技術是事件驅動,單一進程,同樣具有穩定的并發處理能力,并且易于整合,也易于部署。但是,haproxy項目也存在這不足之處,僅僅采用單進程,單線程技術,并沒有能夠充分的利用系統的資源,這一定程度上限制了其并發處理能力的進一步提高,使得在特大并發情境下,采用該項目的網站仍然容易出現癱瘓。
發明內容
本發明的目的是提供一種多線程高性能http代理實現方法及系統,有效地解決了現有http代理實現方案無法有效處理特大并發請求這一問題。
本發明的目的是通過以下技術方案實現的:
一種多線程高性能http代理實現方法,該方法包括:
通過指定的地址接收來自客戶端的連接請求,在成功連接后,根據該連接請求中攜帶的描述符創建客戶端套接字并存儲在哈希表中,且將該客戶端套接字及其EPOLLIN事件注冊到epoll中;
當觸發客戶端的EPOLLIN事件時,通過所述客戶端套接字讀取來自客戶端的http請求,并將該http請求存儲至本地后進行解析,若解析成功,但本地緩存未命中時向服務器發起連接,在成功連接服務器后,生成一對應的服務器套接字并存儲在哈希表中,且將該服務器套接字及其EPOLLOUT事件注冊到epoll中;
從哈希表中定位該客戶端套接字,并觸發服務器的EPOLLOUT事件,通過該客戶端套接字取出存儲在本地的http請求后通過所述服務器套接字轉發給對應的服務器,且將該服務器套接字及其EPOLLIN事件注冊到epoll中;
當觸發服務器的EPOLLIN事件時,通過該服務器從哈希表中定位對應的客戶端套接字,從服務器中讀取該客戶端套接字對應客戶端http請求的響應消息并存儲,且將該客戶端套接字及其EPOLLOUT事件注冊到epoll中;
通過該服務器從哈希表中定位該客戶端套接字,并觸發EPOLLOUT事件,通過該客戶端套接字取出存儲在本地的響應消息后通過所述客戶端套接字發送至對應的客戶端。
進一步的,所述通過該客戶端套接字取出存儲在本地的響應消息后通過所述客戶端套接字發送至對應的客戶端之后包括:
判斷是否與該客戶端繼續保持連接;
若是,則將該客戶端套接字重新注冊到epoll中;否則,在哈希表刪除該客戶端的相關信息并關閉連接。
一種多線程高性能http代理實現系統,該系統包括:
接收連接模塊,用于通過指定的地址接收來自客戶端的連接請求,在成功連接后,根據該連接請求中攜帶的描述符創建客戶端套接字并存儲在哈希表中,且將該客戶端套接字及其EPOLLIN事件注冊到epoll中;
該專利技術資料僅供研究查看技術是否侵權等信息,商用須獲得專利權人授權。該專利全部權利屬于中國科學技術大學,未經中國科學技術大學許可,擅自商用是侵權行為。如果您想購買此專利、獲得商業授權和技術合作,請聯系【客服】
本文鏈接:http://www.szxzyx.cn/pat/books/201410619737.1/2.html,轉載請聲明來源鉆瓜專利網。
- 上一篇:民用航空器的娛樂系統及方法
- 下一篇:一種校平移工裝





