云代理的网址访问方法及装置与流程

文档序号:12789631阅读:325来源:国知局
云代理的网址访问方法及装置与流程

本发明涉及计算机技术领域,特别是涉及一种云代理的网址访问方法及装置。



背景技术:

代理(Proxy),也称网络代理,是一种特殊的网络服务,允许一个网络终端(一般为客户端)通过代理的服务与另一个网络终端(一般为服务器)进行非直接的连接,从而为客户端提供服务。随着云计算服务领域的发展壮大,云代理服务器(Proxy Server)已经慢慢成为云计算服务的重要组成部分,能够作为面向各类互联网用户提供综合业务能力的服务平台。在实际应用中,云代理服务器与普通代理手段相类似,集成于能够提供代理服务的电脑系统或其它类型的网络终端,进而为云网络中的客户端提供服务。

实施时,一个完整的云代理请求过程为:

首先,客户端与云代理服务器创建连接;

其次,云代理服务器接收来自客户端的连接请求消息,进而根据云代理服务器所使用的代理协议,请求对目标服务器建立连接;

最后,在云代理服务器与目标服务器间成功建立连接之后,获得目标服务器提供的相应资源。

通常情况下,一些目标服务器会限制云代理服务器的访问,将云代理服务器的访问拒绝或者重定向到其他页面。现有技术中,云代理服务器并没有对客户端的请求消息对应的目标服务器对应的网址提前进行甄别,不能对请求消息对应的目标服务器是否能够访问做出有效快速的判断,若目标服务器中已设置限制云代理服务器的访问,云代理服务器接收到客户端的请求消息后,仍然继续向该目标服务器发起访问,耗费了大量时间。



技术实现要素:

鉴于上述问题,提出了本发明以便提供一种克服上述问题或者至少部分地解决上述问题的云代理的网址访问方法及装置。

基于本发明的一个方面,提供了一种云代理的网址访问方法,应用于设置记录禁止访问的url的黑名单的云代理服务器,包括:

接收来自客户端的请求消息,并解析获取所述请求消息对应的url;

确定所述请求消息对应的url是否命中黑名单;

若是,则将错误码返回所述客户端,告知所述客户端所述请求消息对应的url在所述云代理服务器上被设置为禁止访问。

可选地,对所述云代理服务器的访问日志进行挖掘以得到所述黑名单。

可选地,对所述云代理服务器的访问日志进行挖掘以得到所述黑名单,包括:

获得所述云代理服务器的访问日志;

对所述访问日志进行比对,查找出无法访问的网页;

对所述无法访问的网页进行直连测试,验证所述无法访问的网页的内容是否能够正常显示;

若所述无法访问的网页的内容能够正常显示,则获取该网页由所述云代理服务器访问失败的次数;

若该网页由所述云代理服务器访问失败的次数超过次数阈值,或者,访问失败的次数在访问总次数中占的比例超过比例阈值,则将所述网页的url加入所述黑名单。

可选地,解析获取所述请求消息对应的url,包括:

解析并读取所述请求消息的请求报文头部;

当所述请求报文头部读取结束时,根据所述请求报文头部匹配所述请求消息对应的主机host;

根据匹配结果确定所述请求消息对应的url。

可选地,还包括:

若接收到多个客户端发送的请求消息,对所述多个客户端的请求消息进行异步处理。

基于本发明的另一个方面,还提供了一种云代理的网址访问装置,应用于云代理服务器,包括:

存储模块,适于设置记录禁止访问的url的黑名单;

接收模块,适于接收来自客户端的请求消息;

解析模块,适于解析获取所述请求消息对应的url;

命中模块,适于确定所述请求消息对应的url是否命中黑名单;

错误码返回模块,适于若是,则将错误码返回所述客户端,告知所述客户端所述请求消息对应的url在所述云代理服务器上被设置为禁止访问。

可选地,还包括:

挖掘模块,适于对所述云代理服务器的访问日志进行挖掘以得到所述黑名单。

可选地,所述挖掘模块还适于:

获得所述云代理服务器的访问日志;

对所述访问日志进行比对,查找出无法访问的网页;

对所述无法访问的网页进行直连测试,验证所述无法访问的网页的内容是否能够正常显示;

若所述无法访问的网页的内容能够正常显示,则获取该网页由所述云代理服务器访问失败的次数;

若该网页由所述云代理服务器访问失败的次数超过次数阈值,或者,访问失败的次数在访问总次数中占的比例超过比例阈值,则将所述网页的url加入所述黑名单。

可选地,所述解析模块还适于:

解析并读取所述请求消息的请求报文头部;

当所述请求报文头部读取结束时,根据所述请求报文头部匹配所述请求消息对应的主机host;

根据匹配结果确定所述请求消息对应的url。

可选地,还包括:

异步模块,适于若所述接收模块接收到多个客户端发送的请求消息,调用其他模块对所述多个客户端的请求消息进行异步处理。

采用本发明实施例中的方法,云代理服务器接收到来自客户端的请求消息后,解析获取请求消息对应的url,根据请求消息对应的url确定是否命中黑名单,进一步确定客户端的请求消息对应的地址是否是限制云代理服务器的访问。采用本发明实施例中的方法,能够及时判断出客户端请求消息对应的地址是否能够访问。若确定客户端请求消息对应的地址限制云代理服务器访问,则云代理服务器不再向该地址发起连接,避免了因不能识别客户端请求消息对应的地址限制云代理服务器访问,继续耗费大量时间执行客户端的请求消息的问题。

上述说明仅是本发明技术方案的概述,为了能够更清楚了解本发明的技术手段,而可依照说明书的内容予以实施,并且为了让本发明的上述和其它目的、 特征和优点能够更明显易懂,以下特举本发明的具体实施方式。

根据下文结合附图对本发明具体实施例的详细描述,本领域技术人员将会更加明了本发明的上述以及其他目的、优点和特征。

附图说明

通过阅读下文优选实施方式的详细描述,各种其他的优点和益处对于本领域普通技术人员将变得清楚明了。附图仅用于示出优选实施方式的目的,而并不认为是对本发明的限制。而且在整个附图中,用相同的参考符号表示相同的部件。在附图中:

图1示出了根据本发明一个实施例的云代理的网址访问方法的处理流程图;

图2示出了根据本发明一个实施例的获取客户端请求消息对应的接收方地址以及将地址与黑名单比对方法的处理流程图;

图3示出了根据本发明一个实施例的云代理的网址访问装置的结构示意图;

图4示出了根据本发明一个实施例的云代理的网址访问装置的另一种结构示意图;

图5示出了根据本发明一个实施例的数据获取方法的处理流程图;

图6示出了根据本发明一个优选实施例的数据获取方法的另一种处理流程图;

图7示出了根据本发明一个实施例的数据获取装置的结构示意图;

图8示出了根据本发明一个实施例的数据获取装置的另一种结构示意图;

图9示出了根据本发明一个实施例的云代理的纯异步数据传输方法的处理流程图;

图10示出了根据本发明一个实施例的云代理的纯异步数据传输方法的另一种处理流程图;

图11示出了根据本发明一个实施例的云代理服务器的结构示意图;

图12示出了根据本发明一个实施例的云代理服务器的另一种结构示意图;以及

图13示出了根据本发明一个优选实施例的纯异步数据传输系统示意图。

具体实施方式

下面将参照附图更详细地描述本公开的示例性实施例。虽然附图中显示了本公开的示例性实施例,然而应当理解,可以以各种形式实现本公开 而不应被这里阐述的实施例所限制。相反,提供这些实施例是为了能够更透彻地理解本公开,并且能够将本公开的范围完整的传达给本领域的技术人员。

在本发明实施例中,云代理服务器需要分别与客户端、接收方建立通信链路,以供云代理服务器与客户端、云代理服务器与接收方之间进行通信。

在三者间的通信链路建立成功后,云代理服务器会接收客户端的连接请求消息。在本发明实施例中,为解决现有技术中提及的云代理服务器缺乏多任务处理能力的技术问题,本发明实施例对云代理服务器进行改进设置,使其具备异步处理能力。

因此,在本发明实施例中,若云代理服务器接收多个客户端发起的连接请求消息时,采用异步处理方式分别接收来自多个客户端的连接请求消息。进一步,在消息的处理阶段,也采用异步处理方式对连接请求消息进行异步处理。相应的,在后续的资源请求阶段以及将资源返回至不同的客户端的阶段也均采用异步处理方式。

当然,云代理服务器具备一定的访问限制,例如,有部分网址是预先设置的、该云代理服务器禁止访问的网址(黑名单中记录的禁止访问的url(统一资源定位符,Uniform Resource Locator))。若发生这种意外情况,那么,云代理服务器接收到连接请求消息时即可以断定是否能够提供与该连接请求消息对应的访问服务。以黑名单中记录的禁止访问的url为例,云代理服务解析连接请求消息,将该连接请求消息对应的接收方与云代理服务器记录的禁止访问的url的黑名单进行比对,根据比对结果确定是否需要执行后续的步骤,若不需要,则直接向客户端返回无法访问或者无法提供相应服务的告知消息即可。

进一步,在实施时,若客户端所请求访问的服务能够被提供,那么,为了加速云代理服务器的服务提供速度,云代理服务器可以设置缓存(cache),用于缓存目标服务器提供的资源。在该情况下,当客户端再次请求相同的服务器,云代理服务器可以直接从缓存中读取资源直接返回给客户端即可,无须再向目标服务器请求服务或资源,能够在较短时间内为客户端提供服务,节省时间;进一步,从缓存中直接读取资源的方式,使得云代理服务器也缩减了与目标服务器的交互次数,减轻网络负担。但是,缓存中的资源是具备时效性的,若超过时效,则可能会变成失效数据。这些均是本发明实施例需要注意并解决的问题,具体的解决手段见下文具体实施例。

需要说明地是,连接请求消息对应的接收方可以是服务器,也可以是终端, 例如电脑、PDA、笔记本等,也可以是某些提供具体功能的客户端,例如,目前常见的各类应用程序(APP),本发明对此不做任何限定。

下面将以几个具体实施例介绍云代理服务器对客户端请求消息的处理流程。

实施例一

本发明实施例中,云代理服务器接收到来自客户端的连接请求消息,为加速处理进程,首先将客户端请求消息对应的接收方与云代理服务器记录的禁止访问的url的黑名单进行比对,若命中黑名单,则无须继续处理,若未命中,则继续进行其他操作。

具体地,将客户端请求消息对应的接收方与云代理服务器记录的禁止访问的url的黑名单进行比对,需要获取客户端请求消息对应的接收方对应的网络地址。图1示出了根据本发明一个实施例的云代理的网址访问方法的处理流程图。参见图1,该方法至少包括以下步骤S102至步骤S106。

本发明实施例中,首先,执行步骤S102,接收来自客户端的请求消息,并解析获取请求消息对应的url。

获取请求消息对应的url后,执行步骤S104,确定请求消息对应的url是否命中黑名单。

最后,执行步骤S106,若是,则将错误码返回客户端,告知客户端请求消息对应的url在云代理服务器上被设置为禁止访问。

采用本发明实施例中的方法,云代理服务器接收到来自客户端的请求消息后,解析获取请求消息对应的url,根据请求消息对应的url确定是否命中黑名单,进一步确定客户端的请求消息对应的地址是否是限制云代理服务器的访问。采用本发明实施例中的方法,能够及时判断出客户端请求消息对应的地址是否能够访问。若确定客户端请求消息对应的地址限制云代理服务器访问,则云代理服务器不再向该地址发起连接,避免了因不能识别客户端请求消息对应的地址限制云代理服务器访问,继续耗费大量时间执行客户端的请求消息的问题。

需要说明地是,url是对可以从互联网上得到的资源的位置和访问方法的一种简洁的表示,是互联网上标准资源的地址,互联网上的每个文件都有一个唯一的url。

具体地,为了便于理解客户端请求消息对应的接收方与云代理服务器记录的禁止访问的url的黑名单的比对流程,图2示出了根据本发明一个实施例的获取客户端请求消息对应的接收方地址以及将地址与黑名单比对方法的处理 流程图,参见图2,该方法至少包括S201至步骤S206。

云代理服务器通过通信链路接收多个客户端发送的请求消息后,对多个客户端的请求消息进行异步处理,首先执行步骤S201,异步读取各请求消息的请求报文头部。其中,请求报文头部是通知服务器有关于客户端请求的信息,由关键字/值(key-value)对组成,每行一对,关键字和值可以用英文冒号“:”分隔。请求报文头部至少包括下列内容:产生请求的浏览器类型,客户端可识别的内容类型列表,请求的主机名。

由于本发明实施例可以根据各请求报文头部的内容确定各请求消息所对应的主机(host),因此,各请求报文头部的完整性保证了对各请求消息所对应的host进行确定的准确性。在请求报文头部被接收的过程中,进一步,执行步骤S202,判断各请求报文头部是否被完整收取。

若各请求报文头部没有被完整收取,继续执行步骤S201,直至各请求报文头部被完整收取。若各请求报文头部被完整收取,则执行步骤S203,解析请求报文头部,确定各请求消息所对应的host,再根据host确定请求消息对应的url。

获取请求消息对应的url后,执行步骤S204,判断请求消息对应的url是否命中黑名单。若命中黑名单,执行步骤S205,将错误码返回客户端,告知客户端请求消息对应的url在云代理服务器上被设置为禁止访问。若没有命中黑名单,则执行步骤S206,云代理服务器立即连接客户端请求消息对应的接收方,并接收与客户端请求消息对应的数据,将接收完毕的数据一次性转发至客户端。

在本发明的一个优选实施例中,黑名单可以通过对云代理服务器的访问日志进行挖掘得到的。具体地,首先获得云代理服务器的访问日志,然后通过对代理服务器的访问日志挖掘到有用信息。例如,对访问日志进行比对,查找出其中包括的访问失败的网页。

进一步,还需要对云代理服务器中的访问失败的网页进行判断,根据判断结果确定该网页是否为禁止访问网页,进而判断该网页对应的url是否为限制云代理服务器访问。在本发明实施例中,具体判断过程可采用直连测试的方式。直连测试是指直接与目的地址进行连接,不需要经过云代理服务器。当多个客户端访问一个网页,返回结果都不正常时,可以通过程序进行直连测试,验证无法访问的网页的内容是否能够正常显示。若无法访问的网页的内容能够正常显示,则进一步获取该网页由云代理服务器访问失败的次数,根据访问失败的次数确定该网址是否应该被收录进黑名单。

实施时,可以通过如下两种计算方式对直连测试的结果进行判定:

第一种,将云代理服务器中该网页对应的访问失败的次数与次数阈值进行比较。若云代理服务器访问失败的次数超过次数阈值,例如,设定的访问失败次数阈值为100次,云代理服务器访问失败的次数为120次,则确定该网页为禁止访问网页,进而判断该网页对应的url为限制云代理服务器访问,并将该网页对应的url加入黑名单。

第二种,将云代理服务器中该网页对应的访问失败次数在总访问次数中占的比例,与比例阈值进行比较。若访问失败的次数在访问总次数中占的比例超过比例阈值,例如,设定的访问失败比例阈值为50%,云代理服务器访问失败次数占总访问次数的比例为60%,则确定该网页为禁止访问网页,进而判断该网页对应的url为限制云代理服务器访问,并将该网页对应的url加入黑名单。

本发明实施例提供的黑名单的生成方法,不再需要人工手动完成,只需对访问日志中的网页的访问失败次数与设定的阈值进行比较,就可以判断该网页是否为禁止访问网页,进而判断是否加入黑名单,整个判断过程不需要大量的人力,均是自动完成,耗费的时间短,效率高。

基于同一发明构思,本发明实施例还提供了一种云代理的网址访问装置,应用于云代理服务器。图3示出了根据本发明一个实施例的云代理的网址访问装置的结构示意图。参见图3,该装置至少包括:

存储模块310,适于设置记录禁止访问的url的黑名单;

接收模块320,适于接收来自客户端的请求消息;

解析模块330,与接收模块320耦合,适于解析获取请求消息对应的url;

命中模块340,一端与解析模块330耦合,一端与存储模块310耦合,适于确定请求消息对应的url是否命中黑名单;

错误码返回模块350,与命中模块340耦合,适于若是,则将错误码返回客户端,告知客户端请求消息对应的url在云代理服务器上被设置为禁止访问。

在本发明的一个优选实施例中,参见图4,云代理的网址访问装置还包括:

挖掘模块360,与解析模块330耦合,适于对云代理服务器的访问日志进行挖掘以得到黑名单。

在本发明的一个优选实施例中,挖掘模块360还适于:

获得云代理服务器的访问日志;

对访问日志进行比对,查找出无法访问的网页;

对无法访问的网页进行直连测试,验证无法访问的网页的内容是否能够正常显示;

若无法访问的网页的内容能够正常显示,则获取该网页由云代理服务器访 问失败的次数;

若该网页由云代理服务器访问失败的次数超过次数阈值,或者,访问失败的次数在访问总次数中占的比例超过比例阈值,则将网页的url加入黑名单。

在本发明的一个优选实施例中,解析模块330还适于:

解析并读取请求消息的请求报文头部;

当请求报文头部读取结束时,根据请求报文头部匹配请求消息对应的主机host;

根据匹配结果确定请求消息对应的url。

在本发明的一个优选实施例中,参见图4,云代理的网址访问装置还包括:

异步模块370,与接收模块320耦合,适于若接收模320接收到多个客户端发送的请求消息,调用其他模块对多个客户端的请求消息进行异步处理。

实施例二

本发明实施例中,若客户端请求的网址并未命中黑名单,那么云代理服务器就可以与客户端间建立连接,进而对客户端发起的请求进行应答。前文提及,云代理服务器对客户端的请求消息进行处理,为了加速处理进程,对于客户端之前已经请求过的服务,可以将相应资源保存在cache中,由cache提供相应服务,而并不是连接客户端请求消息对应的接收方。即,云代理服务器首先会到云代理服务器的cache中查找是否存储有数据请求消息对应的数据。图5示出了根据本发明一个实施例的数据获取方法的处理流程图。参见图5,该方法至少包括以下步骤S502至步骤S506。

本发明实施例中,首先执行步骤S502,接收来自客户端的数据请求消息。

接收到客户端发起的数据请求消息后,执行步骤S504,查找云代理服务器的缓存中是否存储有数据请求消息命中的有效数据。

最后,执行步骤S506,若是,则从云代理服务器的缓存中读取有效数据,并返回客户端。

采用本发明实施例提供的方法,云代理服务器接收来自客户端的数据请求消息后,并不立即连接客户端请求消息对应的接收方,而是查找云代理服务器的缓存中是否存储有数据请求消息对应的数据,从缓存中查找需要的数据,能够有效地利用缓存中的资源。另外,若在云代理服务器中查找到了客户端请求消息对应的数据后,直接从缓存获取,相对于从客户端请求消息对应的目标地址获取数据,从缓存中获取数据的速度更快,减轻了系统的负担。

本发明实施例中,云代理服务器接收来自客户端的数据请求消息后,并不 立即连接对应的接收方,而是根据各客户端的数据请求消息,在云代理服务器的缓存中进行查找。例如,根据各客户端的请求头部(headers),确定缓存中是否存储有客户端的headers命中的有效数据。若云代理服务器的缓存中均存储有headers命中的有效数据,将有效数据返回至各客户端,云代理服务器不再连接对应的接收方,接收方也不再需要响应客户端的消息请求。

本发明实施例判断云代理服务器缓存中的数据是否有效,首先判断云代理服务器的缓存中是否存储有客户端的headers对应的数据,若存在,则进一步对该数据进行判断,即判断客户端的headers对应的数据的存储时间是否超过第一存储时间阈值t1。若没有超过第一存储时间阈值t1,则确定客户端的headers对应的数据为有效数据。若代理服务器的缓存中没有存储有客户端的headers对应的数据,或者,若云代理服务器的缓存中存储有客户端的headers对应的数据,但是客户端的headers对应的数据的存储时间超过了第一存储时间阈值t1,以上两种情况均确定为无效数据。

本发明实施例通过对云代理服务器缓存中客户端的headers对应的数据的存储时间进行判断,进一步确定缓存中数据是否是有效数据,保证了客户端获取云代理服务器缓存中的资源的时效性和准确性。

当缓存中存储的客户端的headers对应的数据为无效数据时,云代理服务器解析客户端的数据请求消息,根据数据请求消息中的内容确定目的地。其中,目的地可以是服务器,也可以是终端,例如电脑、PDA、笔记本等,也可以是存储有数据请求消息对应的资源的客户端,例如,各类APP,本发明对此不做任何限定。

云代理服务器连接对应的接收方,接收方响应客户端的消息请求,并将查询到的、与请求相关的数据返回至云代理服务器。云代理服务器判断对各远端服务器的数据接收完毕,则将接收完毕的数据一次性转发至对应的客户端。

当缓存中存储的客户端的headers对应的数据为有效数据,还需要对其存储时间进行进一步判断。若有效数据的存储时间没有超过设定的第二存储时间阈值t2,则直接将云代理服务器中的有效数据返回至客户端。若有效数据的存储时间未超过第一存储时间阈值t1,但是超过设定的第二存储时间阈值t2,其中,t2<t1,则进一步将有效数据的请求消息转发至预取服务器。t2通常设置的与t1间隔较小,其间隔甚至可能会小于云代理服务器到目的地读取数据所需时间,以保证数据的有效性。例如t1设置为30分钟,而t2设置为28分钟,云代理服务器到cache中读取数据时,发现数据在缓存中的存储时间已超过28分钟,但是未超过30分钟,此时缓存中数据仍为有效数据,可以将缓存中数 据返回至发起数据请求的客户端。但是,因数据在缓存中的存储时间已超过28分钟,与有效时间较为接近,此时真实数据有可能会发生改变,或者可能在云代理服务器到目的地获取的时间段内发生改变,因此可以同步发起真实数据的预取过程。

预取服务器针对该有效数据的请求消息向对应的接收方发起预取请求,接收方响应预取请求,并将预取请求对应的当前资源返回至预取服务器,因目的地的实际数据会根据实际情况而改变,因此预取服务器的预取行为可能出现以下两种情况:

第一种,若预取服务器预取到的当前资源与缓存中命中数据一致,则保持数据请求消息在云代理服务器的缓存命中的数据不变,并且将云代理服务器的缓存命中的数据返回至客户端。

第二种,若预取服务器预取到的当前资源与缓存中命中数据不一致,则将预取请求对应的当前资源更新数据请求消息在云代理服务器的缓存命中的数据,并将更新后的云代理服务器的缓存命中的数据返回至客户端。其中,预取服务器预取到的当前资源与缓存中命中数据不一致的原因可能有多种,本发明实施例提供了两种可能性较强的方案:第一种方案,目的地的资源在有效时间段内被更新;第二种方案,预取服务器到目的地预取资源的时间较长,使得读取当前资源时,已超过缓存中数据存储的有效时长,读取到的数据自然也可能是新的数据,与缓存中命中的数据不同。

为了便于理解在云代理服务器缓存应用于客户端请求消息的有效数据的获取过程,本发明实施例提供了一个具体的实施例对其进行说明。图6示出了根据本发明一个优选实施例的数据获取方法的另一种处理流程图,参见图6,该方法至少包括步骤S601至步骤S611。

本发明实施例中,首先执行步骤S601,接收来自客户端的数据请求消息。然后执行步骤S602,解析客户端的数据请求消息的headers。其中,客户端的headers的请求内容为今日黄金价格。获取客户端的headers的请求内容后,执行步骤S603,查找云代理服务器的缓存中是否存储有客户端的headers对应的数据。若不存在,则执行步骤S604,确定目的地,与目的地建立连接,到目的地获取今日黄金价格对应的资源,并将获取的资源返回至客户端。

若存在,则执行步骤S605,判断缓存中客户端的headers对应的数据的存储时间是否超过第一存储时间阈值t1。

若超过第一存储时间阈值t1,则执行步骤S604,确定目的地,与目的地建立连接,到目的地获取今日黄金价格对应的资源,并将获取的资源返回至客户 端。例如,云代理服务器的缓存中存储的今日黄金价格的存储时间为2015年12月15日10:00,由于黄金价格每天都会有浮动,截止到2015年12月16日00:00时,黄金的价格就会更新,因此今日黄金价格对应的第一存储时间阈值为14个小时,客户端的headers的请求时间为2015年12月16日08:00,可以得出超过了14个小时,此时,不能将云代理服务器中存储有的今日黄金价格返回至客户端。

若没有超过第一存储时间阈值t1,则执行步骤S606,判断缓存中客户端的headers对应的数据的存储时间是否超过第二存储时间阈值t2。

若没有超过第二存储时间阈值t2,则将执行步骤S607,将云代理服务器的缓存中存储的今日黄金价格返回至客户端。

若超过第二存储时间阈值t2,执行步骤S608,将客户端的数据请求消息转发至预取服务器。例如,云代理服务器的缓存中存储的今日黄金价格的存储时间为2015年12月15日10:00,预设的第二存储时间阈值t2对应的截止时间为2015年12月15日23:50,则第二存储时间阈值t2为13个小时50分钟。当客户端的headers的请求时间为2015年12月15日23:54,超出了第二存储时间阈值t2,则将客户端的数据请求消息转发至预取服务器。

预取服务器针对客户端的数据请求消息向对应的接收方发起预取请求,接收方响应预取请求,并将预取请求对应的当前资源返回至预取服务器,执行步骤S609,接收预取服务器返回的数据请求消息对应的当前资源。

预取服务器发起预取请求,接收方响应预取请求,并将预取请求对应的当前资源返回至预取服务器。进一步,执行步骤S610,判断数据请求消息在云代理服务器的缓存命中的数据与数据请求消息对应的当前资源是否相同。

若步骤S610的执行结果是相同,例如,预取服务器发起预取请求,接收方响应预取请求,并将预取请求对应的当前资源返回至预取服务器,然后云代理服务器接收预取服务器返回的数据请求消息对应的当前资源,预取服务器返回的数据请求消息对应的当前资源与请求消息在云代理服务器的缓存中的今日黄金价格一致,则执行步骤S611,将云代理服务器的缓存中存储的今日黄金价格返回至客户端。当然,在执行过程中,步骤S608至S610与S611的顺序并不是一定的,因此时缓存中命中数据仍为有效数据,因此,也可以在执行步骤S608的同时,执行S611,将缓存中命中数据直接返回至客户端。

若步骤S610的执行结果是不相同,例如,整个响应进程的结束时间为2015年12月16日00:06,则说明预取服务器返回的数据请求消息对应的当前资源是2015年12月16日的黄金价格,且与请求消息在云代理服务器的缓存中的 今日黄金价格不一致,此时,将预取服务器返回的数据请求消息对应的今日黄金价格替换掉云代理服务器的缓存中的今日黄金价格,则执行步骤S612,将预取服务器返回的数据请求消息对应的当前资源更新云代理服务器的缓存中的今日黄金价格。替换掉以后,执行步骤S613,将更新后的云代理服务器的缓存中的今日黄金价格返回至客户端。

基于同一发明构思,本发明实施例还提供了一种数据获取装置,应用于云代理服务器。图7示出了根据本发明一个实施例的数据获取装置的结构示意图。参见图7,该装置至少包括:

接收模块710,适于接收来自客户端的数据请求消息;

查找模块720,与接收模块710耦合,适于查找云代理服务器的缓存中是否存储有数据请求消息命中的有效数据;

读取模块730,与查找模块720耦合,适于若是,则从云代理服务器的缓存中读取有效数据;

传输模块740,与读取模块730耦合,适于将读取模块读取的有效数据返回客户端。

在本发明的一个优选实施例中,查找模块720还适于:

查找云代理服务器的缓存中是否存储有数据请求消息对应的数据;

若是,则进一步判断数据请求消息对应的数据的存储时间是否未超过第一存储时间阈值t1;

若是,则确定缓存中的数据为有效数据;

若任一不符合,则确定缓存中的数据为无效数据。

在本发明的一个优选实施例中,参见图8,数据获取装置还包括:

预取模块750,与查找模块720耦合,适于若数据请求消息对应的数据的存储时间未超过t1,但是超过设定的第二存储时间阈值t2,其中,t2<t1,则

进一步将数据请求消息转发至预取服务器,由预取服务器针对数据请求消息发起预取请求,以获得数据请求消息对应的当前资源。

在本发明的一个优选实施例中,接收模块710还适于接收预取服务器返回的数据请求消息对应的当前资源;

参见图8,数据获取装置还包括:

更新模块760,与预取模块750耦合,适于判断数据请求消息在云代理服务器的缓存命中的数据与数据请求消息对应的当前资源是否相同;若是,则保持数据请求消息在云代理服务器的缓存命中的数据不变;若否,则利用数据请求消息对应的当前资源更新数据请求消息在云代理服务器的缓存命中的数据。

在本发明的一个优选实施例中,参见图8,数据获取装置还包括:

获取模块770,与查找模块720耦合,适于查找云代理服务器的缓存中是否存储有数据请求消息命中的有效数据之后,若否,则解析数据请求消息,确定其目的地;与目的地建立连接,到目的地获取与数据请求消息对应的资源;将获取的资源返回至客户端。

在本发明的一个优选实施例中,目的地包括:

存储有数据请求消息对应的资源的其他客户端;或者存储有数据请求消息对应的资源的远程服务器。

实施例三

实施例一和实施例二分别阐述了云代理服务器具备黑名单和缓存的情况下的具体实施方式,而通常对于客户端发起的绝大多数请求,云代理服务器仍然是遵循到接收方获取相应资源的方式进行处理。现有技术中指出,目前的云代理服务器缺少处理多任务的能力。

为解决这一技术问题,本发明实施例对云代理服务器的任务处理方式进行改进。在本发明实施例中,云代理服务器采用异步处理方式接收来自多个客户端的连接请求消息,进而对连接请求消息进行异步处理,随后采用直接向客户端请求消息对应的接收方异步发起连接。云代理服务器与接收方异步建立连接后,将客户端请求消息中的数据异步发送至接收方,异步接收由接收方发送的数据,并向客户端异步转发接收方发送的数据。即,整个数据请求过程中,本发明实施例均采用异步的方式进行处理,大大增加了数据处理的并行性,使得云代理服务器具备并行高性能。图9示出了根据本发明一个实施例的云代理的纯异步数据传输方法的处理流程图。参见图9,该方法至少包括以下步骤S902至步骤S906。

本发明实施例中,首先,执行步骤S902,异步接收来自多个客户端的连接请求消息。

异步接收到客户端请求后,执行步骤S904,对多个连接请求消息进行异步处理,分别连接至对应的接收方。

最后,执行步骤S906,在连接成功之后,在各客户端与其对应的接收方之间异步进行数据传输。

采用本发明实施例提供的方法,接收多个客户端的多个连接请求,对多个连接请求进行处理,连接至对应的接收方,以及在客户端与其对应的接收方之间进行数据传输,以上每一个执行环节均是异步进行。异步执行使得每一个执 行环节不用阻塞当前线程来等待处理完成,而是使用异步回调其他线程的方式进行处理,当其他线程完成操作处于空闲状态时,回调通知空闲线程,使得空闲线程能够得到充分利用。由此可见,异步执行的方式使得线程调用更为灵活,避免过于集中于某一个或某几个线程所造成的网络堵塞甚至崩溃,保证了云代理服务的高性能,高并发,提高了云代理服务的响应性,进而提高了用户体验。另外,异步执行避免了调用线程阻塞的问题,进而避免了某条线程阻塞导致网络崩溃的问题,也避免了某一条线程堵塞,而其他线程处于闲置状态的问题,使得网络资源能够得到充分利用。

图10示出了根据本发明一个实施例的云代理的纯异步数据传输方法的另一种处理流程图。参见图10,首先云代理服务器读取客户端请求(proxy_read_firstline),进一步读取客户端的请求头部(proxy_read_headers),并根据客户端请求的内容确定对应的接收方(process_request_headers),然后与对应的接收方建立连接(proxy_connect),将客户端的请求头部发送至接收方(proxy_send_headers),后续将客户端提供的数据缓存至客户端侧缓存(process_client_buffer)中。

接收方读取云代理服务器转发的客户端的请求消息后(proxy_read_firstline),进一步读取客户端的请求头部(proxy_read_headers),根据客户端请求头部的内容响应客户端的请求(process_response_headers),后续将查询到的、与请求相关的数据返回至云代理服务器(proxy_send_headers),将查询到的、与请求相关的数据缓存至接收方侧缓存(process_server_buffer)中。

需要补充地是,云代理服务器读取客户端侧缓存中的客户端提供的数据以及读取接收方侧缓存中的与客户端侧请求相关的数据,是通过云代理继电器连接(proxy_relay_connnection)进行读取的。

具体地,云代理服务器异步读取各连接请求消息的请求报文头部,直至各请求报文头部被完整收取。本发明实施例中根据各请求报文头部的内容确定各连接请求消息所对应的接收方,因此,各请求报文头部的完整性保证了对各连接请求消息所对应的接收方进行确定的准确性。

其中,请求报文头部是通知服务器有关于客户端请求的信息,由关键字/值对组成,每行一对,关键字和值用英文冒号“:”分隔。请求报文头部至少包括下列内容:产生请求的浏览器类型,客户端可识别的内容类型列表,请求的主机名。

根据各请求报文头部的内容,确定连接请求消息的各自对应的接收方,例如,根据接收到的请求报文头部中的请求消息类型确定接收方,搜索类连接请求确定对应的搜索服务器,下载类服务器确定对应的下载服务器,或者,还可以根据接收到的请求报文头部中的主机名确定接收方。

当接收方为服务器端时,需要确定接收方的远端服务器的地址,具体地,向计算机域名系统(Domain Name System,简称DNS)服务器异步请求各客户端对应的远端服务器的地址。DNS服务器保存有网络中所有主机的域名和对应IP地址,并且能够将域名转换为IP地址。DNS服务器将接收方对应的远程服务器的地址返回至云代理服务器,云代理服务器再分别异步连接接收方对应的远端服务器。

云代理服务器与各远端服务器异步连接成功后,异步接收各客户端的请求body,并转发至对应的远端服务器。客户端的body通常由三部分组成,分别是:请求行、消息报头、请求正文。云代理服务器异步接收各客户端的body,实际上是接收各客户端的body的请求行、消息报头、请求正文,并将接收的body异步保存至云代理服务器的第一存储器中。另外,云代理服务器还需要异步判断是否对客户端的body接收完毕,即判断各客户端的body的请求行、消息报头、请求正文是否全部接收完毕,若确定每个客户端的body均已接收完毕,则将则将接收完毕的body转发至对应的远端服务器。

各远端服务器异步接收到云代理服务器异步转发的各客户端的body后,根据各客户端的body的请求正文,响应对应的客户端的请求,并将查询到的、与请求相关的数据异步返回至云代理服务器。云代理服务器异步接收各远端服务器返回的数据后,将数据异步保存至第二存储器中。远端服务器返回的数据通常由三部分组成,分别是状态行、消息报头、响应正文。云代理服务器还需要异步判断是否对各远端服务器的数据接收完毕,即判断各远端服务器端返回数据中的状态行、消息报头、响应正文是否全部接收完毕,若确定每个远端服务器的返回的数据均已接收完毕,则将接收完毕的数据一次性转发至对应的客户端。

下面以一个具体实施例对本发明实施例提供的云代理的纯异步数据传输方法进行说明。

设定当前具备3条线程,即线程1、线程2、线程3。两个客户端同时向云代理服务器发起连接请求消息,即客户端1发起连接请求消息1,客户端2发起连接请求消息2。云代理服务器接收到两个客户端的连接请求消息后,调用线程1处理数据连接请求消息1,调用线程2处理连接请求消息2。当客户端3 和客户端4先后发起连接请求消息3和连接请求消息4时,调用线程3处理连接请求消息3和连接请求消息4。此时,线程3正在处理客户端3的连接请求消息3,线程2正在处于客户端2的连接请求消息2,而线程1已处理完客户端1的连接请求消息1,处于空闲状态,客户端4的数据请求消息4并不处于等待状态,而是转至线程1进行处理。

云代理服务器接收客户端的连接请求消息后,将客户端1、客户端2、客户端3、客户端4请求消息中的数据异步发送至对应的接收方,接收方响应客户端的请求,然后云代理服务器异步接收由接收方返回的数据,并向这四个客户端异步转发对应的接收方发送的数据,整个执行过程,每一个执行步骤中设定的线程并不是只处理指定的消息,若某一线程处于空闲状态,均可以调用其他线程中的等待处理的消息,并将其进行处理,以实现纯异步数据传输。

基于同一发明构思,本发明实施例还提供了一种云代理服务器,用于支持本发明实施例提供的云代理的纯异步数据传输方法。图11示出了根据本发明一个实施例的云代理服务器的结构示意图。参见图11,该装置至少包括:

异步接收模块1110,适于异步接收来自多个客户端的多个连接请求消息;

异步连接模块1120,与异步接收模块1110耦合,适于对多个连接请求消息进行异步处理,分别连接至对应的接收方;

异步传输模块1130,与异步连接模块1120耦合,适于在连接成功之后,在各客户端与其对应的接收方之间异步进行数据传输。

在本发明的一个优选实施例中,异步连接模块1120还适于:

异步读取各连接请求消息的请求报文头部,直至各请求报文头部被完整收取;

根据各请求报文头部的内容确定各连接请求消息所对应的接收方。

在本发明的一个优选实施例中,异步连接模块1120还适于:

当接收方为服务器端时,为各客户端异步向DNS服务器请求对应的远端服务器的地址;

接收DNS服务器返回的各远端服务器的地址,并分别异步连接。

在本发明的一个优选实施例中,异步传输模块1130还适于:

异步接收各客户端的请求体body,并转发至对应的接收方;

异步接收各接收方返回的数据,并转发至对应的客户端。

在本发明的一个优选实施例中,异步接收模块1110还适于:异步接收各 客户端的body;

参见图12,云代理服务器还包括:第一存储器1140,与异步接收模块耦合1110,适于保存异步接收模块接收的数据;

异步传输模块1130还适于:异步判断各客户端的body是否接收完毕;若是,则将接收完毕的body转发至对应的接收方。

在本发明的一个优选实施例中,异步接收模块1110还适于:当接收方为服务器端时,异步接收各远端服务器返回的数据;

参见图12,云代理服务器还包括:第二存储器1150,与异步接收模块1110耦合,适于保存异步接收模块接收的数据;

异步传输模块1130还适于:异步判断是否对各远端服务器的数据接收完毕;若是,则将接收完毕的数据一次性转发至对应的客户端。

基于同一发明构思,本发明实施例还提供了一种纯异步数据传输系统,包括:

多个客户端,适于发起连接请求消息;还包括上述任一项的云代理服务器。

本发明实施例提供的任意一个优选实施例或其组合,可应用于客户端、云代理服务器、接收方间的异步数据传输过程,图13示出了根据本发明一个优选实施例的纯异步数据传输系统示意图。参见图13,该系统包括客户端1310、云代理服务器1320。为了体现纯异步数据传输系统的完整性,图13还包括作为接收方的终端1330。图13的客户端、终端的个数仅仅为示意值,在实际应用中可能成千上百甚至更多,本发明对此不做任何限定。

实施例四

本发明实施例中,云代理服务器接收到客户端发起的数据请求消息之后,首先查看该请求是否命中黑名单,若没有,则进行一步采用纯异步方式对数据请求消息进行处理。

具体地,云代理服务器对客户端的数据请求消息进行异步处理之前,首先将客户端请求消息对应的接收方与云代理服务器记录的禁止访问的url的黑名单进行比对,具体实施方式请参照图2中的步骤S201至步骤S204。

若获取客户端的请求消息对应的url后没有命中黑名单,则采用纯异步方式对数据请求消息进行具体操作,具体步骤请参照图9的步骤S904至步骤S906,在此不做过多赘述。

实施例五

本发明实施例中,云代理服务器对客户端的请求消息进行处理,为了加速处理进程,云代理服务器首先会到云代理服务器的cache中查找是否存储有数据请求消息对应的数据。若有,则直接将cache中存储的数据返回至客户端,若没有,则采用纯异步方式对数据请求消息进行处理。

具体地,云代理服务器对客户端的数据请求消息进行异步之前,首先查找云代理服务器的缓存中是否存储有数据请求消息对应的数据,具体实施方式参照图5中步骤S502至步骤S506,若图5中步骤S504的执行结果为云代理服务器的缓存中没有存储有数据请求消息命中的有效数据,参照图9中的步骤S904至步骤S906执行,在此不做过多赘述。

其中,图6中的步骤S604,是对图9中步骤S904至步骤S906执行步骤的一个概述,在此也不做过多赘述。

实施例六

本发明实施例中,云代理服务器接收到客户端发起的数据请求消息之后,首先查看该请求是否命中黑名单,若命中黑名单,告知客户端请求消息对应的url在云代理服务器上被设置为禁止访问,若没有命中黑名单,为了加速处理进程,会到云代理服务器的cache中查找是否存储有数据请求消息对应的数据。若cache中存储有数据请求消息对应的数据,则直接将cache中存储的数据返回至客户端,若没有,则采用纯异步方式对数据请求消息进行处理。

具体地,云代理服务器对客户端的连接请求消息进行异步处理,首先将客户端请求消息对应的接收方与云代理服务器记录的禁止访问的url的黑名单进行比对,具体实施方式请参照图2中的步骤S201至步骤S204,若获取客户端的请求消息对应的url后没有命中黑名单,到云代理服务器的缓存中查找是否存储有数据请求消息对应的数据,具体实施方式请参照图5中的步骤S502至步骤S506,若图5中的步骤S504的执行结果为云代理服务器的缓存中没有存储有数据请求消息命中的有效数据,参照图9中的步骤S904至步骤S906执行,在此不做过多赘述。

上述列举的实施例四、实施例五、实施例六提供的方案均是采用组合形式,需要说明地是,本发明的组合方式并不仅限于实施例四、实施例五、实施例六,还可以根据实际情况,形成其他组合,因此,实施例四、实施例五、实施例六中的组合对本发明并不造成限定。

在此处所提供的说明书中,说明了大量具体细节。然而,能够理解,本发明的实施例可以在没有这些具体细节的情况下实践。在一些实例中,并未详细示出公知的方法、结构和技术,以便不模糊对本说明书的理解。

类似地,应当理解,为了精简本公开并帮助理解各个发明方面中的一个或多个,在上面对本发明的示例性实施例的描述中,本发明的各个特征有时被一起分组到单个实施例、图、或者对其的描述中。然而,并不应将该公开的方法解释成反映如下意图:即所要求保护的本发明要求比在每个权利要求中所明确记载的特征更多的特征。更确切地说,如下面的权利要求书所反映的那样,发明方面在于少于前面公开的单个实施例的所有特征。因此,遵循具体实施方式的权利要求书由此明确地并入该具体实施方式,其中每个权利要求本身都作为本发明的单独实施例。

本领域那些技术人员可以理解,可以对实施例中的设备中的模块进行自适应性地改变并且把它们设置在与该实施例不同的一个或多个设备中。可以把实施例中的模块或单元或组件组合成一个模块或单元或组件,以及此外可以把它们分成多个子模块或子单元或子组件。除了这样的特征和/或过程或者单元中的至少一些是相互排斥之外,可以采用任何组合对本说明书(包括伴随的权利要求、摘要和附图)中公开的所有特征以及如此公开的任何方法或者设备的所有过程或单元进行组合。除非另外明确陈述,本说明书(包括伴随的权利要求、摘要和附图)中公开的每个特征可以由提供相同、等同或相似目的的替代特征来代替。

此外,本领域的技术人员能够理解,尽管在此所述的一些实施例包括其它实施例中所包括的某些特征而不是其它特征,但是不同实施例的特征的组合意味着处于本发明的范围之内并且形成不同的实施例。例如,在权利要求书中,所要求保护的实施例的任意之一都可以以任意的组合方式来使用。

本发明的各个部件实施例可以以硬件实现,或者以在一个或者多个处理器上运行的软件模块实现,或者以它们的组合实现。本领域的技术人员应当理解,可以在实践中使用微处理器或者数字信号处理器(DSP)来实现根据本发明实施例的云代理的网址访问装置中的一些或者全部部件的一些或者全部功能。本发明还可以实现为用于执行这里所描述的方法的一部分或者全部的设备或者装置程序(例如,计算机程序和计算机程序产品)。这样的实现本发明的程序可以存储在计算机可读介质上,或者可以具有一个或者多个信号的形式。这样的信号可以从因特网网站上下载得到,或者在载体信号上提供,或者以任何其他形式提供。

应该注意的是上述实施例对本发明进行说明而不是对本发明进行限制,并且本领域技术人员在不脱离所附权利要求的范围的情况下可设计出替换实施例。在权利要求中,不应将位于括号之间的任何参考符号构造成对权利要求的限制。单词“包含”不排除存在未列在权利要求中的元件或步骤。位于元件之前的单词“一”或“一个”不排除存在多个这样的元件。本发明可以借助于包括有若干不同元件的硬件以及借助于适当编程的计算机来实现。在列举了若干装置的单元权利要求中,这些装置中的若干个可以是通过同一个硬件项来具体体现。单词第一、第二、以及第三等的使用不表示任何顺序。可将这些单词解释为名称。

至此,本领域技术人员应认识到,虽然本文已详尽示出和描述了本发明的多个示例性实施例,但是,在不脱离本发明精神和范围的情况下,仍可根据本发明公开的内容直接确定或推导出符合本发明原理的许多其他变型或修改。因此,本发明的范围应被理解和认定为覆盖了所有这些其他变型或修改。

当前第1页1 2 3 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1