[发明专利]一种多线程高性能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.vipzhuanli.com/pat/books/201410619737.1/2.html,转载请声明来源钻瓜专利网。
- 上一篇:民用航空器的娱乐系统及方法
- 下一篇:一种校平移工装