您的位置:首页 >使用权限 > 正文
发布时间:2020-04-11 16:37
HTTP代理服务器的设计与实现

  代理服务器是介于浏览器和web服务器之间的一台服务器。有了它之后,浏览器不是直接到web服务器去取回网页,而是向代理服务器发出请求。请求信号会先送到代理服务器,由代理服务器来取回浏览器所需要的信息,并传送给浏览器,而且大部分代理服务器都实现了高速缓冲功能。高速缓冲功能使代理服务器将请求所取得的web文档存储到本地缓冲区中。如果浏览器所请求的web文档在代理服务器的缓冲区已经存在而且是有效的,那么代理服务器就不重新从web服务器下载数据,而是直接将代理服务器缓冲区中的web文档传送给客户机的浏览器,这样就能显著地提高浏览速度。预测用户将来的可能发出的浏览请求,并把这些请求文档预取到本地缓冲中。当真正要访问这些文档时,只需由本地Cache获取,这就进一步提高了缓冲对用户请求的命中率,降低了服务器和网络的负载。


  另外,当网络上存在大量的带宽并且费用很低2 HTTP代理模型设计


  2·1代理模型


  本系统中代理服务器的设计从结构上分为4个部分,如图1所示。第1是连接控制部分,连接控制部分用于处理客户机的连接请求及访问控制功能;第2是后台预取进程部分,后台预取进程是系统在启动时由系统创建的一个子进程,专用于实现代理服务器的预取策略,这一部分与代理服务器的主体部分相对独立,预取进程由系统启动后,在大部分时间里处于等待状况,只有在为预取策略规定的预取门限被超过时,预取进程才被激活,读取系统日志文件,更新代理服务器的缓冲区。第3是请求处理和代理转发部分,它是由服务器主进程创建的子进程,专用于在客户机和代理服务器间传送数据的。第4是cache部分,它是缓冲用户访问过的web文档,以便下次访问该文档时对其进行重定向,减少访问时间,降低网络开销。


  收稿日期:2 2一04作者简介:孙永辉a977·),男,吉林公主岭人,硕士研究生,主要研究方向为图形图像处理技术、虚拟现实技术及网络技术;姜昱明(19499,男,陕西西安人,副教授,主要研究方向为图形图像处理技术、虚拟现实技术及网络技术。


  图1基于预取略的代理模型


  2·2连接控制设计


  在客户机和代理服务器端创建一个连接后,缺省状况下连接应处于激活状态。代理服务器同时扮演服务器和客户机的角色,因此代理服务器应同时实现客户端和服务器端维持连接的功能。本系统中的代理服务器定义了黑白名单两个文件,用于控制客户对丨代理服务器的访问,增强系统的安全性。黑名单是代理服务器不允许访问的IP地址,白名单是代理服务器允许访问的网段地址。其连接控制模块的工作流程是:代理服务器首先看其发起请求的客户机的IP地址是否合法,如合法,才允许访问并转到请求处理和代理转发子线程模块,如图2所示。


  图2连接控制模块


  2·3预取模块设计


  代理服务器通过预测用户将来的请求来提高用户的响应速度。


  (1)预取策略:一般是将部分访问请求转移到网络业务相对较少的时段,根据用户的访问兴趣和访问历史在网络业务相对少时对一些web文档进行预取。


  web文档的预取过程包括学习、匹配和获取3个阶段。学习是分析用户对web文档的存取行为以及web文档自身的更新规律,提取用户一般情况下的行为模式和一些web文档的更新模式,特别是用户感兴趣的关键字:匹配是确定正在进行的客户访问所属的行为模型,根据共同访问模式来推断将来的请求;获取是利用现有的搜索引擎,将多个搜索引擎的结果综合起来,从中选取与兴趣主体相关性较强的web文档,下载到本地缓冲中。学习和匹配都属于预测过程,预测过程基于类推原则和连贯原则。类推是一种空间上的扩展,是指新的客户行为模式和现有的多数客户相似。连贯原则实现时域拓展,是指客户的未来访问请求与过去的访问模式相似。本系统采用的是基于代理服务器web文档访问纪录的学习方法,预取未来用户需求的web文档。目前,Internet上已经开发出了很多浏览和查询信息引擎,可以充分利用这些己有的工具和技术。因此,本系统所应用的预取策略将web文档预取的重点放在前两阶段。


  预取策略依靠客户请求和服务器信息的结合才能成功预取,服务器周期性(如一周)统计被点击次数最多的页面,形成一个流行的文档访问纪录表。然后根据这些访问纪录表构造文档预取列表。当预取门限被超过时,代理服务器激活预取进程向此服务器下载该代理服务器维持的最流行的文档预取列表,供用户在下一时段内浏览。预取门限的功能是对预取进行控制,限制预取使用的网络资源和进行预取的时间,避免对其它网络应用的不良影响。预取门限的计算有多种方法,最简单的莫过于以时间为门限,可以限制预取在晚上进行,因为晚上网络开销较小,而且系统空闲时间较多。较为精确的方法是引入代价来表示采用预取对网络性能的影响,与测量得到的网络性能指标结合得出,具体方法可参见文献[7]。文档预取列表不是简单构造的,需要结合预测算法。


  (2)预取算法,考虑到系统的实际运作和效率,本系统采用文献田中的预取算法。该预取算法是构造一个描述储存在代理服务器上不同文档访问模式的相关图。该图的节点是每一个访问过的文档。如果在w访问过A之后,B才可能被访问,那么从A到B画一条弧。这里w是预取窗口的大小。设代理服务器有N个不同的文档被客户访问。对曾经访问过的每个文档Dr,设该文档被所有客户访问的次数为M。由于相继请求之间的时间间隔相差很大,从几秒到丿L千秒不等[2],所以不用时间区间作预取窗口,而是选用文档数目作为预取概率0定义为紧跟被同一客户访问的丆,个文档中出现0的概率。按时间顺序分析访问纪录,设T*内以D开始的各个客户的访问序列中文档囫出现的总次数为0,那么预取概率可以通过0:0/M近似计算。对所有刀,[1,N]进行类似分析,从而便得到了各个文档的预取备选集合。


  结合图3(a)和(b)来说明此预取算法。设预取窗口T·:4,可以构造类似于(b)的文档预取表,(a)是相应的文档相关图,(a)和(b)标识的小数为预取概率。为了预取的精确性,可以事先设定一预取阈值ko假设k:40%,则将预取概率大于k的文档纳入到预取备选


  集合,这样就构造好了简单的文档预取表。构造好预取表后,实际预取时,可以只从预取表中选择预取概率最大的文档,也可选择一定数目的文档。图3(c)是预取模块设计结构图。


   预取模块结构图


  图3代理的预取设计


  2·4请求处理和代理转发设计


  图4是请求处理和代理转发设计的模块结构图。代理服务器作为转发网关,应处理好服务器本身的版本号与请求或响应的版本兼容的问题,本系统中代理服务器实现的HTTP协议的版本为HTTP/1.1。因此,在系统设计中,当代理服务器收到一个低版本的请求,代理服务器提高请求报文的版本,并修改相应的头域,使其与HTTP/1.1相兼容。如果收到一个高版本(高于H P/1.1)的请求,服务器作出错处理,因为代理服务器不会转发一个高于其本身版本的请求报文。


  服务器对访问者进行身份认证主要有两种方式。第1种是基本认证方式(BasicAccess Authenticate),另1种是摘要认证方式(DigestAccess Authenticate)o第1种认证方式以明文的方式传送账号/口令序偶对,以MIME田ase64的编码方式进行编码。第2种认证方式是以MD5(Message Digest#5)的编码方式传送账号/口令序偶对。本系统中采用的是第2种方式。当客户机通过代理服务器的身份认证后,代理服务器便读取请求信息,解析请求,检查请求的文档是否在本地缓冲中,在并且是有效的,则将文档发送给客户端;不在,则连到远程服务器,先将请求信息缓冲到本地缓冲中,然后再将请求信息发送到客户端。


  2·5 Cache技术


  代理服务器的cache通过保存用户访问过的web文档来减少请求次数。用于代理服务器的cache一般比较庞大。在一个过大的cache文件表中,查找某一个文件,将消耗系统资源,降低系统性能。所以,如何合适地存储和检索web文档以达到快速的定位,以提高系统的性能,是cache技术的核心。


  本系统中,为了对每一用户的请求快速地确定是否己被缓冲,如己缓冲,则对其快速地进行定位,使用了哈希表。所使用的哈希函数的输入参数为此次请求的URL值,解决冲突的方法为链地址法,即使两个或多个请求可能得到了相同的哈希值,即产生了冲突,但它们的URL值是绝对不相同,利用U“值则能对产生冲突的请求予以区分。若定位成功,则将请求的内容直接送往用户,否则,转发给远程web服务器。


  为了避免由于缓冲置换使得刚被置换掉的资源立刻又被用户请求,使用辅助双向链表。当一资源被从缓冲区中清除时,并不立刻释放其缓冲空间,而是被加入此辅助链表中。若此资源很快又被请求,则可迅速地再次被移入缓冲区中(缓冲区使用一双向有序链表),从而减少了再次分配内存,拷贝数据的额外、不必要的开销。当然,为了节约内存,此辅链表必须周期性地被清除,释放内存,从而既节约了内存,又提高了效率。缓冲管理所用数据结构如下:


  Cache buffer{


  b 1 state;//已缓冲为e,否则为false


  char*url value//请求的url值


  Char*access time//访问的时间


  Struct Cache buffer*prev;//此结构在缓冲区或辅助链表中的


  Struct Cache buffer*next;//前趋和后继


  Struct Cache buffer*hash next;//指向其在哈希表中的下一个节点


  char*file data,//指向缓冲区中数据的开始位置


  (下转第62页)


  正确解决复杂地质构造,且具振幅保持特性而有利于与地震岩性成像,从而成为近年众多油气科研单位的研究焦点。


  本文所构建的系统,通过与“波动方程三维叠前深度偏移”并行计算的绑定,在曙光1700机群系统上得到了很好的应用,可以很好地实现以上所述的功能。如点击“开始”,执行并行计算时,图标立刻同时变为绿色,没有滞后等现象出现。


  而且通过并行程序向接口文件写入相应信息,比如说每计算完一炮数据,由并行程序向炮数据接口文件写入一个数字,这样可以动态显示整体进度和单炮数据进度等信息,真正达到了并行计算的监测和监控功能。


  6结语


  本文以Java语言、c语言、Bash脚本语言为基础,构建了一个基于Lin皿机群系统的并行应用监测监控系统。使用Java语言编制的界面,界面友好、功能强大,通过与并行程序的接口,还有以进度条方式显示并行程序的进度等功能。节点存活状态监测上,充分考虑了大系统节点数目较多的状态,采用fpmg并发执行监测,增加了系统的鲁棒性。在应用进程的监测上,没有采用常用的rsh命令依次执行,而是以Clien e“er方式,建立套接字,并行完成监测功能,使程序的可用性大大加弓虽。


上一篇 python爬虫需要哪种代理ip 下一篇 用C#实现Http代理服务器