一种网络资源访问方法、计算机设备、存储介质与流程

文档序号:19791934发布日期:2020-01-24 14:24阅读:150来源:国知局
一种网络资源访问方法、计算机设备、存储介质与流程

本申请涉及数据处理技术领域,具体涉及一种网络资源访问方法、一种网络资源提供方法、一种计算机设备、一种计算机可读存储介质。



背景技术:

dns(domainnamesystem,域名系统)是互联网上作为域名和ip地址相互映射的一个分布式数据库,能够使用户更方便的访问互联网,而不用去记住能够被机器直接读取的ip数串。通过域名最终得到该域名对应的ip地址的过程叫做域名解析(或dns解析)。

dns解析是互联网绝大多数网站或应用的实际寻址方式,通常网站会部署在多个ip地址上,要实现网站流量的负载均衡,大多通过dns轮询来实现,即dns每次返回当前最合适的ip地址给客户端,以分摊服务器的压力。

申请人经研究发现,网络请求必须等待域名的缓存过期才能再次查询资源节点,切换资源节点的延时较长,在网站受到ddos攻击时,受攻击影响客户端可能无法访问网站。



技术实现要素:

鉴于上述问题,提出了本申请以便提供一种克服上述问题或者至少部分地解决上述问题的网络资源访问方法、网络资源提供方法、以及计算机设备、计算机可读存储介质。

依据本申请的一个方面,提供了一种网络资源访问方法,包括:注册网络代理程序;调用所述网络代理程序获取在客户端提交的当前网络请求,其中,所述网络代理程序记录有至少一个资源节点;调用所述网络代理程序从所述至少一个资源节点中选取满足连接要求的目标资源节点,并根据所述当前网络请求从所述目标资源节点获取网络资源。

可选地,所述当前网络请求包括网络标识,所述注册网络代理程序包括:针对所述网络标识注册网络代理程序;

所述调用所述网络代理程序获取在客户端提交的当前网络请求包括:调用所述网络代理程序,拦截针对所述网络标识的当前网络请求。

可选地,在所述注册网络代理程序之前,所述方法还包括:根据客户端的首次网络请求,获取所述网络代理程序。

可选地,所述根据客户端的首次网络请求,获取所述网络代理程序包括:根据所述首次网络请求,连接第一资源节点获取所述网络代理程序的启动信息,所述第一资源节点处于异常状态;连接所述启动信息指定的第二资源节点,获取所述网络代理程序,所述第二资源节点处于正常状态。

可选地,在所述获取在客户端提交的当前网络请求之前,所述方法还包括:向所述第一资源节点请求所述网络代理程序的执行代码,所述执行代码用于从所述至少一个资源节点中选取满足连接要求的目标资源节点,并从所述目标资源节点获取网络资源;连接所述第一资源节点指定的第三资源节点,获取所述执行代码,所述第二资源节点和第三资源节点为第一资源节点检测的负载最小节点,所述第二资源节点和第三资源节点为同一节点或不同节点。

可选地,所述方法还包括:检测所述网络代理程序注册完成;控制所述客户端对当前页面进行刷新,根据所述首次网络请求产生当前网络请求。

可选地,在所述注册网络代理程序之前,所述方法还包括:检测到不支持所述网络代理程序,则对所述客户端进行升级。

可选地,所述根据客户端的首次网络请求,获取所述网络代理程序包括:从所述第一资源节点获取所述网络代理程序,所述第一资源节点处于正常状态。

可选地,所述网络代理程序嵌入在根据所述首次网络请求获取的网络资源中。

相应地,根据本申请的另一方面,还提供了一种网络资源访问方法,其特征在于包括:根据客户端的调用指令,拦截在客户端提交的当前网络请求;获取记录的至少一个资源节点,并从所述至少一个资源节点中选取满足连接要求的目标资源节点;根据所述当前网络请求从所述目标资源节点获取网络资源,并将所述网络资源提供给所述客户端。

可选地,所述从所述至少一个资源节点中选取满足连接要求的目标资源节点包括:选取一个候选资源节点,获取所述网络资源;检测到所述候选资源节点不满足所述连接要求,则选取另一个候选资源节点,获取所述网络资源;检测到满足所述连接要求的候选资源节点,确定为所述目标资源节点。

可选地,所述选取一个候选资源节点包括:根据所述资源节点的优先级,选取候选资源节点。

可选地,所述方法还包括:根据所述候选资源节点的连接信息,调整所述资源节点的优先级。

可选地,所述连接信息包括资源节点的状态信息,所述状态信息包括异常状态和正常状态。

可选地,所述资源节点支持多节点并行连接,所述根据所述候选资源节点的连接信息,调整所述资源节点的优先级包括:根据节点切换导致未获取的网络资源的数据量,调整所述优先级。

可选地,所述检测到所述候选资源节点不满足所述连接要求,则选取另一个候选资源节点,获取所述网络资源包括:根据切换节点前已获取的网络资源,从所述另一个候选资源节点请求未获取的网络资源,所述另一个候选资源节点支持多节点并行连接。

可选地,所述方法还包括:检测到与所有候选资源节点连接失败或连接超时,则在所述客户端上进行提示。

可选地,所述方法还包括:检测到与各个候选资源节点的连接速度处于预设速度范围,且所述候选资源节点不满足所述连接要求;选取多个候选资源节点,确定为目标资源节点,所述多个候选资源节点支持多节点并行连接。

相应地,根据本申请的另一方面,还提供了一种网络资源提供方法,包括:向客户端提供网络代理程序,其中,所述客户端调用所述网络代理程序获取在客户端提交的当前网络请求,并从记录的至少一个资源节点中选取满足连接要求的目标资源节点;获取所述网络代理程序的当前网络请求;根据所述当前网络请求,将网络资源提供给所述网络代理程序。

可选地,所述向客户端提供网络代理程序包括:根据所述客户端的首次网络请求,提供所述网络代理程序。

可选地,在所述向客户端提供网络代理程序之前,所述方法还包括:监控所述至少一个资源节点的流量压力状态,所述流量压力状态包括正常状态或异常状态。

相应地,根据本申请的另一方面,还提供了一种计算机设备,包括存储器、处理器及存储在存储器上并可在处理器上运行的计算机程序,所述处理器执行所述计算机程序时实现如上述一个或多个的方法。

相应地,根据本申请的另一方面,还提供了一种计算机可读存储介质,其上存储有计算机程序,该程序被处理器执行时实现如上述一个或多个的方法。

依据本申请实施例,通过客户端注册网络代理程序,然后调用网络代理程序获取在客户端提交的当前网络请求,从网络代理程序记录的至少一个资源节点中选取满足连接要求的目标资源节点,并根据当前网络请求从目标资源节点获取网络资源,在客户端上利用网络代理程序实现了在多个资源节点中选取满足连接要求的节点的功能,克服了网络请求必须等待域名的缓存过期才能再次查询资源节点的限制,减少了切换资源节点的延时,本申请在客户端上直接实现节点切换,可以在网站受到ddos攻击时,使客户端不受攻击影响,仍能连接到资源节点。

进一步,通过根据首次网络请求连接第一资源节点,连接第一资源节点指定的第二资源节点,获取网络代理程序,避免了从第一资源节点获取网络代理程序出现速度过慢或获取失败等问题,减少第一资源节点的流量压力,提高获取的成功率。

进一步,通过从第二资源节点获取网络代理程序的启动信息;根据启动信息,注册并获取网络代理程序,减少了从第一资源节点直接获取启动信息带来的流量压力。

进一步,通过根据启动信息,向第一资源节点请求网络代理程序;连接第一资源节点指定的第三资源节点,获取网络代理程序,使得大负荷的传输转交给空闲节点承担,减少了第一资源节点的流量压力,提高了获取网络代理程序的成功率。

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

附图说明

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

图1示出了节点管理系统的示意图;

图2示出了网络资源访问过程的示意图;

图3示出了根据本申请实施例一的一种网络资源访问方法实施例的流程图;

图4示出了根据本申请实施例二的一种网络资源访问方法实施例的流程图;

图5示出了根据本申请实施例三的一种网络资源访问方法实施例的流程图;

图6示出了根据本申请实施例四的一种网络资源访问方法实施例的流程图;

图7示出了根据本申请实施例五的一种网络资源访问方法实施例的流程图;

图8示出了根据本申请实施例六的一种网络资源提供方法实施例的流程图;

图9示出了网络资源访问过程的示意图;

图10示出了首次访问时的一种注册过程的示意图;

图11示出了首次访问时的另一种注册过程的示意图;

图12示出了根据本申请实施例七的一种网络资源访问装置实施例的结构框图;

图13示出了根据本申请实施例八的一种网络资源访问装置实施例的结构框图;

图14示出了根据本申请实施例九的一种网络资源提供装置实施例的结构框图;

图15示出了可被用于实现本公开中所述的各个实施例的示例性系统。

具体实施方式

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

为使本领域技术人员更好地理解本申请,以下对本申请涉及的概念进行说明:

网络资源包括网页、视频、图片、音频等多种形式的网络上的资源,具体可以包括任意形式的网络资源,本申请实施例对此不做限制。例如,访问网站时,浏览器上打开的各个页面。

为获取网络资源,用户需要在客户端(客户端包括浏览器、其他任意适用的应用程序等)上提交网络请求。在本申请中,为了区分在不同时间提交的网络请求,将当前正在处理的网络请求,记为当前网络请求。例如,在浏览器的地址栏输入一个网址所对应提交的网络请求,或者在浏览器当前打开的一个网页上点击了一个超链接所对应提交的网络请求。

网络资源可以部署在多个资源节点上,针对不同的客户端(例如,浏览器)可以分配不同的资源节点来提供网络资源。资源节点包括提供网络资源的服务器,或者其他任意适用的设备,本申请实施例对此不做限制。例如,网站或web应用通常会部署在cdn(contentdeliverynetwork,内容分发网络)的多个服务器上,来分摊服务器的压力和为不同网络位置的客户端提供更快的访问速度。

在本申请中,为了能在客户端上选择资源节点,资源节点可以预先为客户端提供一个网络代理程序,网络代理程序记录有至少一个资源节点,例如,网络代理程序从一个资源节点通过下载得到资源节点的地址列表,之后就可以一直记录在本地以供后续选取节点,而且还可以随时更新该地址列表。

网络代理程序包括客户端上对网络请求进行处理的程序。根据客户端的调用指令,网络代理程序可以拦截在客户端上提交的网络请求,可以选取目标资源节点、可以获取网络资源等处理,或者其他任意适用的处理,本申请实施例对此不做限制。例如,html5(hypertextmarkuplanguage5,第5次修改的超文本标记语言)提供了名为serviceworker的技术,基于该技术,在浏览器上实现的网络代理程序,是运行在浏览器后台进程里的脚本,独立于当前页面,使得开发者能拦截针对当前访问的站点发起的所有http请求,并能以编程的方式控制返回结果。具体可以包括任意适用的网络代理程序,本申请实施例对此不做限制。

值得说明的是,要安装网络代理程序,需要针对网络标识进行注册,即在网络标识对应的页面上进行注册,以使浏览器获得网络代理程序的位置,并使网络代理程序对网络标识生效。例如,若将网络代理程序(sw.js)注册为/example/sw.js,那么网络代理程序只对/example/路径下的网络请求有效。注册一个网络代理程序之后,浏览器会在后启动一个网络代理程序的安装过程,安装成功后在下一次加载页面的时候,网络代理程序就会获取到加载页面的网络请求,并进一步根据开发者的编程进行处理,最后把结果提供给页面。

客户端上注册的网络代理程序可以从至少一个资源节点中选取满足连接要求的资源节点,记为目标资源节点。其中,连接要求包括针对数据传输速度、连接等待时间等至少一个方面的要求,或者其他任意适用的有关连接的要求,本申请实施例对此不做限制。例如,从资源节点获取网页时,连接等待时间不能超过设定时长,且数据传输速度不能低于设定速度要求。

在本申请的一种可选实施例中,当前网络请求包括网络标识,网络标识包括域名、网站页面的标识、互联网应用的标识等,或者其他任意适用的标识,本申请实施例对此不做限制。例如,一个网站的首页的域名。

在本申请的一种可选实施例中,区分于当前网络请求,将获取网络代理程序之前的针对网络标识的网络请求,记为首次网络请求,例如,网站采用本申请的网络代理程序来网络请求之后,首次访问网站时的网络请求。

在本申请的一种可选实施例中,客户端上没有网络代理程序时,仍然采用原有方式(例如,dns解析)选取资源节点。在本申请中,将根据首次网络请求确定的资源节点,记为第一资源节点。

各个资源节点上保存有其他资源节点所处的状态,例如,流量压力情况、正常或异常状态等。在一种实现方式中,参见图1所示的节点管理系统的示意图,各个资源节点上运行一个后端程序s,负责监控当前服务器的流量压力,当超过设定阈值时,通知服务器进入异常状态,其余时间则保持正常状态。每个资源节点与管理服务m保持通信,实时反馈自身的流量压力,以及通过管理服务获取其他资源节点的流量压力情况。浏览器上运行前端脚本c(即网络代理程序)。

将第一资源节点指定的资源节点,记为第二资源节点。例如,第一资源节点上保存有资源节点列表,其中,第一资源节点将流量压力最小的资源节点指定为第二资源节点,并通知客户端。

客户端连接第一资源节点后,可以通过获取网络代理程序的启动信息来得到第二资源节点。启动信息包括网络代理程序的路径,其中包括指定的第二资源节点的主机名或ip地址等,还包括网络代理程序的安装程序的名称等,或者其他任意适用的信息,本申请实施例对此不做限制。例如,第一资源节点处于异常状态时,返回给客户端一个页面,页面内容即启动信息。

其中,异常状态与正常状态是相对的概念,具体可以根据实际需要将服务器设置为正常状态或异常状态,本申请实施例对此不做限制。例如,将流量压力超过设定阈值的资源节点设置为异常状态,否则设置为正常状态。

在本申请的一种可选实施例中,从第二资源节点获取的网络代理程序可以包括全部功能,也可以不包括全部功能。当包括全部功能时,针对网络标识注册网络代理程序后,就可以拦截针对网络标识的网络请求,网络代理程序接管拦截的网络请求,并从至少一个资源节点中选取满足连接要求的目标资源节点,并从目标资源节点获取网络资源,并返回网络资源。

当获取的网络代理程序不包括全部功能时,针对网络标识注册网络代理程序后,运行该网络代理程序时还需要获取执行代码,执行代码用于提供选取目标资源节点、获取网络资源等操作的具体实现方式,还可以包括其他任意适用的操作的具体实现方式,本申请实施例对此不做限制。执行代码包括实现功能的具体代码,相当于一个外部脚本。

另外,若网络代理程序是基于serviceworker技术实现的,浏览器规定这个网络代理程序必须位于当前连接的资源节点下,所以需要一个单独的网络代理程序在浏览器后台运行,在网络代理程序内部就可以连接任何节点了。因此,客户端执行网络代理程序时,先向第一资源节点请求网络代理程序的执行代码,第一资源节点为客户端指定的资源节点,记为第三资源节点。第三资源节点可以与第二资源节点一般会是同一个,也可以不是同一个,因为第一资源节点为客户端两次指定资源节点之间存在时间差,若流量压力最小的资源节点发生变化,则第二资源节点和第三资源节点就可能会是不同的资源节点。

在本申请的一种可选实施例中,在选取目标资源节点的过程中,可以采用对一个个资源节点进行连接尝试的方式进行,将尝试连接过程中,选取的资源节点,记为候选资源节点。

在本申请的一种可选实施例中,客户端保存至少一个资源节点,为了便于选取资源节点,为资源节点配置有优先级。例如,每个资源节点有一个优先级,优先级越高,优先选择该资源节点,如果优先级为最低,则不选择该资源节点。

在本申请的一种可选实施例中,在尝试连接过程中,从候选资源节点获取网络资源时,可以得到客户端与候选资源节点的连接信息。连接信息包括平均传输速度,运行情况(例如,连接出现异常)等,或者其他任意适用的与连接有关的信息,本申请实施例对此不做限制。

在本申请的一种可选实施例中,连接信息包括资源节点的状态信息,状态信息包括异常状态和正常状态。

在本申请的一种可选实施例中,资源节点包括支持多节点并行连接的资源节点。多节点并行连接是指客户端可以同时连接多个资源节点,同时从多个资源节点并行获取网络资源,例如,资源节点支持http协议的range请求头,则资源节点可以支持多节点并行连接。

根据本申请的一种实施例,互联网上绝大多数网站或应用的实际寻址方式采用dns解析,由于每个域名在本地都有一个缓存时间ttl(timetolive,生存时间值),在这个时间里,查询者不会真正发起查询,而是使用之前遗留的结果。由于ttl最小也有数秒时间,并且还会受到运营商dns等不可控因素的干扰,因此会对解析带来较大延时,使得客户端无法及时获得域名的最新ip地址。一旦当前节点因受到ddos(distributeddenialofservice,分布式阻断服务)攻击或其他影响而发生故障,客户端需要等缓存过期才能更新ip地址,从而出现一段时间无法访问的情况。如图2所示的网络资源访问过程的示意图,本申请提供了客户端的一种网络资源访问机制,客户端注册网络代理程序,然后调用网络代理程序获取在客户端提交的当前网络请求,从网络代理程序记录的至少一个资源节点中选取满足连接要求的目标资源节点,并根据当前网络请求从目标资源节点获取网络资源,在客户端上利用网络代理程序实现了在多个资源节点中选取满足连接要求的节点的功能,克服了网络请求必须等待域名的缓存过期才能再次查询资源节点的限制,减少了切换资源节点的延时,本申请在客户端上直接实现节点切换,可以在网站受到ddos攻击时,使客户端不受攻击影响,仍能连接到资源节点。本申请适用但不局限于上述应用场景。

参照图3,示出了根据本申请实施例一的一种网络资源访问方法实施例的流程图,该方法具体可以包括以下步骤:

步骤101,注册网络代理程序。

在本申请实施例中,客户端原本无法记录至少一个资源节点,也无法从至少一个资源节点中选取目标资源节点,为此,需要在客户端上预先注册一个网络代理程序,使得在客户端运行的同时运行有网络代理程序。注册网络代理程序的一种实现方式包括:针对网络标识注册网络代理程序,或者其他任意适用的注册方式,本申请实施例对此不做限制。

步骤102,调用所述网络代理程序获取在客户端提交的当前网络请求。

在本申请实施例中,网络代理程序记录有至少一个资源节点,保存形式可以包括资源节点的主机名、资源节点的域名、资源节点的ip地址等,或者其他任意适用的保存形式,本申请实施例对此不做限制。实际应用中,可以是在网络代理程序首次连接资源节点时,从资源节点获取到所有的资源节点的地址,并保存,还可以在网络代理程序每次连接资源节点时,都对记录的至少一个资源节点进行更新,或者其他任意适用的方式,本申请实施例对此不做限制。

在本申请实施例中,客户端调用网络代理程序获取当前网络请求,例如,浏览器的地址栏输入了需要访问的网站的域名地址,也即提交了当前网络请求,然后当前网络请求被直接送入浏览器后台运行的脚本(即网络代理程序),而无需经过域名解析,建立连接等环节。具体可以包括任意适用的获取方式,本申请实施例对此不做限制。

步骤103,调用所述网络代理程序从所述至少一个资源节点中选取满足连接要求的目标资源节点,并根据所述当前网络请求从所述目标资源节点获取网络资源。

在本申请实施例中,由于网络代理程序记录有至少一个资源节点,所以不必将当前网络请求发送至dns服务器进行域名解析,得到dns解析分配的资源节点。而是直接在客户端上调用网络代理程序来选取目标资源节点,客户端可以通过尝试所有的资源节点,直至找到满足连接要求的目标资源节点,因此只要有一个资源节点是正常的,客户端仍能访问到。具体可以采用任意适用的方式进行选取,本申请实施例对此不做限制。

例如,浏览器(即客户端)后台运行的脚本(即网络代理程序)拦截到当前网络请求后,可以从资源节点列表中,选取一个优先级最高的资源节点获取网络资源,如果出现访问失败或者访问超时或者连接速度低于阈值等情况,则切换另一个资源节点获取网络资源,如果仍然出现访问失败或者访问超时或者连接速度低于阈值等情况,则继续切换其他资源节点,直至找到满足连接要求的目标资源节点。

在本申请实施例中,客户端调用网络代理程序选取目标资源节点后,就可以从目标资源节点获取网络资源。例如,浏览器后台的脚本接管当前网络请求,为当前网络请求选取目标资源节点,并从目标资源节点获取网络资源,之后将获取的网络资源返回给浏览器上显示的页面。

依据本申请实施例,通过客户端注册网络代理程序,然后调用网络代理程序获取在客户端提交的当前网络请求,从网络代理程序记录的至少一个资源节点中选取满足连接要求的目标资源节点,并根据当前网络请求从目标资源节点获取网络资源,在客户端上利用网络代理程序实现了在多个资源节点中选取满足连接要求的节点的功能,克服了网络请求必须等待域名的缓存过期才能再次查询资源节点的限制,减少了切换资源节点的延时,本申请在客户端上直接实现节点切换,可以在网站受到ddos攻击时,使客户端不受攻击影响,仍能连接到资源节点。

参照图4,示出了根据本申请实施例二的一种网络资源访问方法实施例的流程图,该方法具体可以包括以下步骤:

步骤201,针对所述网络标识注册网络代理程序。

在本申请实施例中,当前网络请求被网络代理程序所拦截,客户端需要先针对网络标识注册网络代理程序,之后网络代理程序就可以对该网络标识生效,拦截针对网络标识的网络请求。

在本申请实施例中,网络代理程序可以存在于各个资源节点上,客户端可以从一个资源节点上获取网络代理程序,并针对网络标识进行注册,具体可以包括任意适用的方式,本申请实施例对此不做限制。

在本申请的一种实施例中,可选地,在注册网络代理程序之前,所述方法还包括:根据客户端的首次网络请求,获取所述网络代理程序。例如,网站采用本申请的网络代理程序之后,当用户打开浏览器,首次访问网站时,即客户端的首次网络请求,此时客户端上还没有注册网络代理程序,那么根据首次网络请求,获取网络代理程序并注册。

具体可以包括多种获取网络代理程序的方式,例如,根据首次网络请求,进行域名解析,得到第一资源节点的ip地址,则客户端与第一资源节点建立连接,并获取网络代理程序,或者由于第一资源节点处于异常状态,第一资源节点指定处于正常状态的第二资源节点,客户端从第二资源节点获取网络代理程序,以供客户端针对网络标识注册网络代理程序,或者可以包括任意适用的方法获取网络代理程序,本申请实施例对此不做限制。

在本申请的一种实施例中,可选地,根据客户端的首次网络请求,获取所述网络代理程序的一种实现方式包括:根据所述首次网络请求,连接第一资源节点获取所述网络代理程序的启动信息,所述第一资源节点处于异常状态;连接所述启动信息指定的第二资源节点,获取所述网络代理程序,所述第二资源节点处于正常状态。

由于是首次网络请求,可以先利用dns解析等方式分配第一资源节点给客户端,连接第一资源节点后,如果第一资源节点处于异常状态,则第一资源节点不直接将网络代理程序返回给客户端,而是将网络代理程序的启动信息返回给客户端,启动信息指定了第二资源节点。

连接第二资源节点后,可以从第二资源节点获取网络代理程序的安装程序,再运行安装程序,即可完成网络代理程序的安装与注册。由于第一资源节点处于异常状态,直接从第一网络资源节点获取网络代理程序,会导致速度过慢或者获取失败等问题,从第二资源节点获取网络代理程序,减少了第一资源节点的流量压力,提高了获取网络代理程序的成功率。第二资源节点处于正常状态,当然最好是流量压力最小的资源节点。

例如,当用户打开浏览器,首次访问网站时,假设域名对应的是第一资源节点的ip地址,于是浏览器与第一资源节点的web服务进行通信。如果此时第一资源节点处于异常状态,无论浏览器请求什么路径,web服务始终返回如下内容的启动网页(即启动信息):

<scriptsrc=//{idle-node}/sw-setup.js></script>

其中{idle-node}部分是由程序动态填充的,具体为当前流量压力最小的资源节点的主机名或ip地址(根据管理服务m提供的信息可知),也即第二资源节点。sw-setup.js文件(即网络代理程序的安装程序)用于安装、开启负载均衡服务(即网络代理程序),需要先从第二资源节点获取sw-setup.js文件,以开启网络代理程序的安装与注册。

通常的做法是让第一资源节点直接返回“包含网络代理程序的安装程序”的页面。但此处,第一资源节点不返回完整的安装程序,而是返回一个仅有数十字节的启动页面(即启动信息),让浏览器从第二资源节点加载安装程序,从而可减少第一资源节点的流量开销。启动页面仅仅作为一个网络代理程序的安装程序的加载器,数据量小,可在带宽不足的情况下,提高传输成功率。

在本申请的一种实施例中,可选地,在所述获取在客户端提交的当前网络请求之前,所述方法还可以包括:向所述第一资源节点请求所述网络代理程序的执行代码,所述执行代码用于从所述至少一个资源节点中选取满足连接要求的目标资源节点,并从所述目标资源节点获取网络资源;连接所述第一资源节点指定的第三资源节点,获取所述执行代码,所述第二资源节点和第三资源节点为第一资源节点检测的负载最小节点,所述第二资源节点和第三资源节点为同一节点或不同节点。

由于客户端当前连接的是第一资源节点,从第二资源节点获取的网络代理程序不包括全部功能实现时,运行网络代理程序后需要获取执行代码,若客户端上规定执行代码必须向第一资源节点获取时,可以先向第一资源节点请求执行代码,第一资源节点仅返回指定的第三资源节点和执行代码的名称,实际从第三资源节点获取执行代码。

由于前端负载均衡服务(即网络代理程序)是基于serviceworker技术实现的,因此需要一个单独的js文件在浏览器后台运行,并且浏览器规定,该js文件必须位于当前站点下(当前页面对应的第一资源节点),所以web服务需额外部署一个文件(例如/sw.js)。也就是说浏览器还需要向第一资源节点请求执行代码,为了减少第一资源节点的传输流量,/sw.js文件仅仅是网络代理程序的加载器,第一资源节点无需返回完整的js内容,而只需返回如下代码:

importscripts('//{idle-node}/sw-payload.js')

其中,{idle-node}和前面提到的相同,用于指定第三资源节点,第二资源节点和第三资源节点为第一资源节点检测的负载最小节点,如果负载最小节点没有发生改变,则第二资源节点和第三资源节点是同一个,否则可以是不同节点。importscripts是网页里的一个api(应用程序接口),用于加载外部脚本(即执行代码)并运行。这段代码具体执行时,从当前负载压力最小的资源节点(即第三资源节点)上加载完整的serviceworker程序(即网络代理程序的执行代码),然后运行。这样,第一资源节点只需传输一个数十字节的页面即可,大负荷的传输转交给空闲节点承担,减少了第一资源节点的压力,提高了获取网络代理程序的成功率。

在本申请的一种实施例中,可选地,所述方法还包括:检测所述网络代理程序注册完成;控制所述客户端对当前页面进行刷新,根据首次网络请求产生当前网络请求。

安装程序负责网络代理程序从开始安装到结束的整个过程,客户端会检测网络代理程序是否注册完成,如果注册完成,就控制客户端对当前页面进行刷新,以重新产生网络请求,也就是当前网络请求。也就是说,根据首次网络请求,获取了网络代理程序后,进行页面刷新,产生了新的网络请求,也即是当前网络请求,之后就可以在客户端上选取资源节点了。

在本申请的一种实施例中,可选地,在注册网络代理程序之前,所述方法还包括:检测到不支持所述网络代理程序,则对所述客户端进行升级。

例如,网络代理程序依赖于现代浏览器serviceworkerapi,因此sw-setup.js(即启动信息)需要检测浏览器是否支持,如果浏览器不支持,则对浏览器进行升级。具体可以是当第一资源节点处于异常状态时,则在页面上显示“网站繁忙,请升级浏览器再访问”的信息。当第一资源节点处于正常状态时,浏览器可以从第一资源节点获取页面的完整内容,则不做提示。如果浏览器支持,则将/sw.js文件注册成serviceworker后台程序,当第一资源节点处于异常状态时,则自动刷新页面,当第一资源节点处于正常状态时,则不做处理。

在本申请的一种实施例中,可选地,根据客户端的首次网络请求,获取所述网络代理程序的一种实现方式可以包括:从所述第一资源节点获取所述网络代理程序。

在本申请实施例中,当第一资源节点处于正常状态,那么第一资源节点可以直接给客户端返回网络代理程序,而无需指定第二资源节点。具体可以仅返回网络代理程序,也可以返回首次网络请求请求的网络资源时一并返回网络代理程序,或者其他任意适用的方式,本申请实施例对此不做限制。

在本申请的一种实施例中,可选地,网络代理程序嵌入在根据所述首次网络请求获取的网络资源中。

例如,第一资源节点流量正常,处于正常状态,那么web服务使用默认的响应策略,即返回网络资源的实际内容。此外,资源节点上运行的后端程序s会对返回的网页性网络资源(即http返回头content-type字段包含text/html的资源)插入一段脚本:<scriptsrc=/sw-setup.js></script>,该脚本与前述实施例中的sw-setup.js相同,是用于安装前端负载均衡服务(即网络代理程序)的加载器,但第一资源节点处于正常状态,不会自动刷新页面,因为脚本是插入到页面里的,页面内容本身已经存在,所以无需刷新。网络代理程序嵌入在页面(即网络资源)中,是因为尽可能少的破坏页面内容,这样对搜索引擎更友好,在第一资源节点处于正常状态的情况下,没有必要为了省流量,而改变页面内容结构。

步骤202,调用所述网络代理程序,拦截针对所述网络标识的当前网络请求。

在本申请实施例中,客户端需要调用网络代理程序,网络代理程序运行后,可以检测客户端上提交的针对网络标识的当前网络请求,并进行拦截,以便之后对拦截的当前网络请求进行处理。

步骤203,调用所述网络代理程序从所述至少一个资源节点中选取满足连接要求的目标资源节点,并根据所述当前网络请求从所述目标资源节点获取网络资源。

依据本申请实施例,通过客户端针对网络标识注册网络代理程序,然后调用网络代理程序,拦截针对网络标识的当前网络请求,调用所述网络代理程序从至少一个资源节点中选取满足连接要求的目标资源节点,并根据当前网络请求从目标资源节点获取网络资源,在客户端上利用网络代理程序实现了在多个资源节点中选取满足连接要求的节点的功能,克服了网络请求必须等待域名的缓存过期才能再次查询资源节点的限制,减少了切换资源节点的延时,本申请在客户端上直接实现节点切换,可以在网站受到ddos攻击时,使客户端不受攻击影响,仍能连接到资源节点。

参照图5,示出了根据本申请实施例三的一种网络资源访问方法实施例的流程图,该方法具体可以包括以下步骤:

步骤301,网络代理程序根据客户端的调用指令,拦截在客户端提交的当前网络请求。

在本申请实施例中,此步骤的具体实现方式可以参见前述实施例中的描述,此处不另赘述。

步骤302,网络代理程序获取记录的至少一个资源节点,并从所述至少一个资源节点中选取满足连接要求的目标资源节点。

在本申请实施例中,此步骤的具体实现方式可以参见前述实施例中的描述,此处不另赘述。

步骤303,网络代理程序根据所述当前网络请求从所述目标资源节点获取网络资源,并将所述网络资源提供给所述客户端。

在本申请实施例中,此步骤的具体实现方式可以参见前述实施例中的描述,此处不另赘述。

依据本申请实施例,通过网络代理程序根据客户端的调用指令,拦截在客户端提交的当前网络请求,获取记录的至少一个资源节点,并从所述至少一个资源节点中选取满足连接要求的目标资源节点,根据所述当前网络请求从所述目标资源节点获取网络资源,并将所述网络资源提供给所述客户端,利用网络代理程序实现了在多个资源节点中选取满足连接要求的节点的功能,克服了网络请求必须等待域名的缓存过期才能再次查询资源节点的限制,减少了切换资源节点的延时,本申请在客户端上直接实现节点切换,可以在网站受到ddos攻击时,使客户端不受攻击影响,仍能连接到资源节点。

参照图6,示出了根据本申请实施例四的一种网络资源访问方法实施例的流程图,该方法具体可以包括以下步骤:

步骤401,网络代理程序根据客户端的调用指令,拦截在客户端提交的当前网络请求。

在本申请实施例中,此步骤的具体实现方式可以参见前述实施例中的描述,此处不另赘述。

步骤402,网络代理程序获取记录的至少一个资源节点。

步骤403,选取一个候选资源节点,获取所述网络资源。

在本申请实施例中,客户端上保存至少一个资源节点,随机或者按照一定规则选取一个候选资源节点,并从候选资源节点获取网络资源,或者其他任意适用的方式选取候选资源节点,本申请实施例对此不做限制。

例如,浏览器的网络代理程序拦截到当前网络请求后,从至少一个资源节点中,选取一个候选资源节点,然后使用fetchapi(浏览器提供的一种原生网页开发技术接口)建立远程资源的数据流,将陆续收到的数据块,依次输出到网页中。

在本申请的一种实施例中,可选地,选取一个候选资源节点的一种实现方式包括:根据所述资源节点的优先级,选取候选资源节点。

在选取候选资源节点时,可以根据资源节点的优先级进行选取,先选取优先级高的资源节点作为候选资源节点,当候选资源节点不满足连接要求,切换另一个候选资源节点时,再依次切换为优先级次高的资源节点,依次类推。

资源节点的优先级通过客户端的本地存储持续保留一段时间,即客户端退出后,一段时间内再打开客户端访问,之前的优先级仍保留。首次访问时资源节点的优先级,由网络代理程序默认提供。

在本申请的一种实施例中,可选地,所述方法还包括:根据所述候选资源节点的连接信息,调整所述资源节点的优先级。

资源节点的优先级可以根据候选资源节点的连接信息进行调整。当客户端从候选资源节点获取网络资源时,可以得到候选资源节点的连接信息,调整资源节点的优先级的方式可以包括多种,本申请实施例对此不做限制。

例如,假如候选资源节点处于异常状态,说明候选资源节点繁忙,则降低该候选资源节点的优先级,避免再次选中增加压力,假如候选资源节点处于正常状态,则提高其优先级,以减少连接其他资源节点产生的开销(例如,dns查询、tcp连接、https握手等产生的开销)。

又例如,客户端记录每个候选资源节点的平均连接速度,如果大于预期速度,则增加该资源节点的优先级,如果小于设定速度,则降低该资源节点的优先级。客户端还可以记录每个候选资源节点的异常情况,每出现一次异常,则按一定的比例降低该资源节点的优先级。

在本申请的一种实施例中,可选地,所述连接信息包括资源节点的状态信息,所述状态信息包括异常状态和正常状态。

候选资源节点的状态信息包括异常状态和正常状态,如果处于异常状态则降低资源节点的优先级,处于正常状态则提高资源节点的优先级。

步骤404,检测到所述候选资源节点不满足所述连接要求,则选取另一个候选资源节点,获取所述网络资源。

在本申请实施例中,如果客户端从候选资源节点获取网络资源时,检测到候选资源节点不满足连接要求,则重新选取另一个候选资源节点,获取网络资源。

值得说明的是,如果选取的候选资源节点满足连接要求,则无需执行步骤404,直接将候选资源节点确定为目标资源节点即可。

在本申请的一种实施例中,可选地,检测到所述候选资源节点不满足所述连接要求,则选取另一个候选资源节点,获取所述网络资源的一种实现方式可以包括:根据切换节点前已获取的网络资源,从所述另一个候选资源节点请求未获取的网络资源。

切换节点前已获取了部分网络资源,若有资源节点支持多节点并行连接,那么与支持多节点并行连接的另一个候选资源节点建立连接,根据已获取的网络资源,直接从另一个候选资源节点请求未获取的网络资源,实现断点续传,减少网络资源的重复传输,提高网络资源的传输效率。

例如,在加载过程中出现失败、超时、速度过慢等异常情况,则断开当前与候选资源节点的数据流,重新选择另一个候选资源节点,若此时已经下载了n个字节的数据,假如另一个候选资源节点的web服务支持http协议的range请求头,那么再次调用fetchapi时,设置请求头的range字段,从第n个字节开始下载。假如另一个候选资源节点的web服务不支持http协议的range请求头,那么只能从头下载,因此需要抛弃收到的前n个字节,之后的数据才输出到页面中。

在本申请的一种实施例中,可选地,资源节点支持多节点并行连接,根据所述候选资源节点的连接信息,调整所述资源节点的优先级的一种实现方式包括:根据节点切换导致未获取的网络资源的数据量,调整所述优先级。

在传输网络资源途中,需要切换另一个候选资源节点续传时,支持多节点并行连接的资源节点可以临时提高优先级,而且节点切换前已经获取了部分网络资源,根据节点切换导致未获取的网络资源的数据量,调整优先级,通常剩余数据量越小,支持多节点并行连接的资源节点的优先级提高的比例就越大,使得支持多节点并行连接的资源节点更容易被选取到,直接获取未获取的网络资源,而无需重新获取网络资源,提高了网络资源的获取效率。

步骤405,检测到满足所述连接要求的候选资源节点,确定为所述目标资源节点。

在本申请实施例中,如果重新选择的另一个候选资源节点不满足连接要求,则重复执行步骤404,直至检测到满足连接要求的候选资源节点,确定为目标资源节点。

步骤406,根据所述当前网络请求从所述目标资源节点获取网络资源,并将所述网络资源提供给所述客户端。

在本申请实施例中,此步骤的具体实现方式可以参见前述实施例中的描述,此处不另赘述。

依据本申请实施例,通过网络代理程序根据客户端的调用指令,拦截在客户端提交的当前网络请求,获取记录的至少一个资源节点,选取一个候选资源节点,获取网络资源,检测到候选资源节点不满足连接要求,则选取另一个候选资源节点,获取网络资源,检测到满足连接要求的候选资源节点,确定为目标资源节点,根据所述当前网络请求从目标资源节点获取网络资源,并将所述网络资源提供给所述客户端,网络代理程序实现了在多个资源节点中选取满足连接要求的节点的功能,克服了网络请求必须等待域名的缓存过期才能再次查询资源节点的限制,减少了切换资源节点的延时,本申请在客户端上直接实现节点切换,可以在网站受到ddos攻击时,使客户端不受攻击影响,仍能连接到资源节点。

参照图7,示出了根据本申请实施例五的一种网络资源访问方法实施例的流程图,该方法具体可以包括以下步骤:

步骤501,根据客户端的调用指令,拦截在客户端提交的当前网络请求。

在本申请实施例中,此步骤的具体实现方式可以参见前述实施例中的描述,此处不另赘述。

步骤502,检测到与各个候选资源节点的连接速度处于预设速度范围,且所述候选资源节点不满足所述连接要求。

在本申请实施例中,如果检测到各个候选资源节点都不满足连接要求,且连接速度处于预设速度范围,具体可以设置任意适用的预设速度范围,本申请实施例对此不做限制。

步骤503,选取多个候选资源节点,确定为目标资源节点。

在本申请实施例中,多个候选资源节点支持多节点并行连接。例如,列出支持http协议的range请求头的多个候选资源节点,同时建立多个连接,从不同的候选资源节点进行加载,从而实现多线程加速的效果。

在本申请的一种实施例中,可选地,所述方法还包括:检测到与所有候选资源节点连接失败或连接超时,则在所述页面上进行提示。

如果检测到与所有候选资源节点都立即返回失败,说明有可能是客户端本地网络的故障,则显示“检测系统网络是否正常”的错误页。如果所有候选资源节点都超时,那么显示“网站繁忙,请稍后再试”的错误页。

步骤504,从所述目标资源节点获取网络资源。

在本申请实施例中,此步骤的具体实现方式可以参见前述实施例中的描述,此处不另赘述。

依据本申请实施例,通过根据客户端的调用指令,拦截在客户端提交的当前网络请求,检测到与各个候选资源节点的连接速度处于预设速度范围,且候选资源节点不满足连接要求,选取多个候选资源节点,确定为目标资源节点,从目标资源节点获取网络资源,在客户端上实现了在多个资源节点中选取满足连接要求的节点的功能,克服了网络请求必须等待域名的缓存过期才能再次查询资源节点的限制,减少了切换资源节点的延时,本申请在客户端上直接实现节点切换,可以在网站受到ddos攻击时,使客户端不受攻击影响,仍能连接到资源节点。

参照图8,示出了根据本申请实施例六的一种网络资源提供方法实施例的流程图,该方法具体可以包括以下步骤:

步骤601,向客户端提供网络代理程序。

在本申请实施例中,资源节点集群可以向客户端提供网络代理程序,例如,由第一资源节点、第二资源节点或第三资源节点向客户端提供网络代理程序,具体实现方式可以参见前述实施例中的描述,本申请实施例对此不做限制。

在本申请的一种实施例中,可选地,向客户端提供网络代理程序的一种实现方式可以包括:资源节点集群根据客户端的首次网络请求,提供网络代理程序,具体实现方式可以参见前述实施例中的描述,此处不另赘述。

在本申请的一种实施例中,可选地,在向客户端提供网络代理程序之前,所述方法还包括:监控所述至少一个资源节点的流量压力状态,流量压力状态包括正常状态或异常状态。例如,由各个资源节点的后端程序分别监控自身的流量压力状态,再汇总到管理服务。

步骤602,获取所述网络代理程序的当前网络请求。

在本申请实施例中,网络代理程序拦截当前网络请求后,将当前网络请求发送给资源节点集群中的目标资源节点。

步骤603,根据所述当前网络请求,将网络资源提供给所述网络代理程序。

在本申请实施例中,目标资源节点与网络代理程序连接后,根据当前网络请求,将网络资源提供给网络代理程序,最终由网络代理程序提供给客户端。

依据本申请实施例,通过向客户端提供网络代理程序,获取所述网络代理程序的当前网络请求,根据所述当前网络请求,将网络资源提供给所述网络代理程序,在客户端上实现了在多个资源节点中选取满足连接要求的节点的功能,克服了网络请求必须等待域名的缓存过期才能再次查询资源节点的限制,减少了切换资源节点的延时,本申请在客户端上直接实现节点切换,可以在网站受到ddos攻击时,使客户端不受攻击影响,仍能连接到资源节点。

为使本领域技术人员更好地理解本申请,以下通过具体的示例对本申请的一种实现方式进行说明。

如图9所示的网络资源访问过程的示意图。浏览器上成功安装了基于serviceworker的网络代理程序,那么之后再次访问网站(任意路径)时,执行以下步骤:

步骤1,浏览器前端上提交当前网络请求。

步骤2,浏览器后台进程运行的负载均衡服务(即网络代理程序),get(拦截)当前网络请求。

步骤3,负载均衡服务对保存的至少一个资源节点进行尝试,直至找到满足连接要求的目标资源节点。例如,若资源节点1返回访问失败,再尝试资源节点2,返回访问超时,直至成功找到资源节点n满足连接要求。

步骤4,负载均衡服务从资源节点n(即目标资源节点)获取网络资源。

步骤5,将获取的网络资源返回给浏览器前端的页面上。

如图10所示的首次访问时的一种注册过程的示意图。当用户打开浏览器,首次访问网站时,假设域名对应的是资源节点1的ip地址,于是与资源节点1的web服务进行通信。具体包括以下步骤:

步骤1,向网站的资源节点1(node-1)请求(get)对应访问路径(path)的网络资源。浏览器上提交首次网络请求,常规dns方式返回资源节点1的ip地址给浏览器,所以与资源节点1建立连接。资源节点1当前流量大,即处于异常状态。

步骤2,资源节点1返回页面加载器。实际返回的页面代码(即启动信息)为:<scriptsrc=//{node-2}/sw-setup.js></script>,即通知浏览器向node-2(资源节点2)获取页面加载器sw-setup.js文件,以减少从node-1传输的数据量。资源节点2当前流量小。

步骤3,浏览器执行node-1返回的页面代码。

步骤4,向node-2请求(get)sw-setup.js脚本文件。

步骤5,按照serviceworker,注册/sw.js。根据获取的sw-setup.js,开始安装过程,先注册/sw.js,即网络代理程序。

步骤6,向node-1请求(get)/sw.js(即网络代理程序)。因为浏览器后台运行的基于serviceworker技术的js脚本必须位于当前节点上,但/sw.js内部就可以连接其他节点。此时浏览器后台运行的/sw.js缺少网络代理程序的完整实现。

步骤7,node-1返回js加载器到浏览器上注册的/sw.js。实际返回的页面代码为:importscripts('//{node-2}/sw-payload.js'),即通知浏览器向node-2获取sw-payload.js文件(即网络代理程序的执行代码),减少从node-1传输的数据量。

步骤8,向node-2请求(get)sw-payload.js(即网络代理程序的执行代码)。下载成功后,安装完成。

步骤9,浏览器页面自动刷新,产生当前网络请求。

步骤10,当前网络请求被serviceworker(即网络代理程序)获取。

步骤11,serviceworker(即网络代理程序)向资源节点2请求(get)对应访问路径(path)的网络资源。

如图11所示的首次访问时的另一种注册过程的示意图。

当资源节点1当前流量正常,即处于正常状态。具体包括以下步骤:

步骤1,向网站的资源节点1(node-1)请求(get)的网络资源。

步骤2,资源节点返回网络资源的完整内容。返回前判断是否为网页,不是网页则将网络资源直接返回浏览器,如果是网页,则在网页中注入脚本<scriptsrc=/sw-setup.js></script>,即将网络代理程序的安装程序嵌入网络资源中,然后返回给浏览器。

步骤3,浏览器向资源节点1(node-1)请求(get)sw-setup.js脚本文件。

步骤4,浏览器向资源节点1(node-1)请求(get)sw-payload.js(即网络代理程序的执行代码)。下载成功后,安装完成。

参照图12,示出了根据本申请实施例七的一种网络资源访问装置实施例的结构框图,具体可以包括:

程序注册模块701,用于注册网络代理程序;

请求获取模块702,用于调用所述网络代理程序获取在客户端提交的当前网络请求,其中,所述网络代理程序记录有至少一个资源节点;

资源获取模块703,用于调用所述网络代理程序从所述至少一个资源节点中选取满足连接要求的目标资源节点,并根据所述当前网络请求从所述目标资源节点获取网络资源。

在本申请的一种实施例中,可选地,所述当前网络请求包括网络标识,所述程序注册模块包括:

程序注册子模块,用于针对所述网络标识注册网络代理程序;

所述请求获取模块包括:

请求拦截子模块,用于调用所述网络代理程序,拦截针对所述网络标识的当前网络请求。

在本申请的一种实施例中,可选地,所述装置还包括:

程序获取模块,用于在所述注册网络代理程序之前,根据客户端的首次网络请求,获取所述网络代理程序。

在本申请的一种实施例中,可选地,所述程序获取模块包括:

启动信息获取子模块,用于根据所述首次网络请求,连接第一资源节点获取所述网络代理程序的启动信息,所述第一资源节点处于异常状态;

第一程序获取子模块,用于连接所述启动信息指定的第二资源节点,获取所述网络代理程序,所述第二资源节点处于正常状态。

在本申请的一种实施例中,可选地,所述装置还包括:

代码请求模块,用于在所述获取在客户端提交的当前网络请求之前,向所述第一资源节点请求所述网络代理程序的执行代码,所述执行代码用于从所述至少一个资源节点中选取满足连接要求的目标资源节点,并从所述目标资源节点获取网络资源;

代码获取模块,用于连接所述第一资源节点指定的第三资源节点,获取所述执行代码,所述第二资源节点和第三资源节点为第一资源节点检测的负载最小节点,所述第二资源节点和第三资源节点为同一节点或不同节点。

在本申请的一种实施例中,可选地,所述装置还包括:

注册检测模块,用于检测所述网络代理程序注册完成;

刷新控制模块,用于控制所述客户端对当前页面进行刷新,根据所述首次网络请求产生当前网络请求。

在本申请的一种实施例中,可选地,所述装置还包括:

升级模块,用于在所述注册网络代理程序之前,检测到不支持所述网络代理程序,则对所述客户端进行升级。

在本申请的一种实施例中,可选地,所述程序获取模块包括:

第二程序获取子模块,用于从所述第一资源节点获取所述网络代理程序,所述第一资源节点处于正常状态。

在本申请的一种实施例中,可选地,所述网络代理程序嵌入在根据所述首次网络请求获取的网络资源中。

依据本申请实施例,通过客户端注册网络代理程序,然后调用网络代理程序获取在客户端提交的当前网络请求,从网络代理程序记录的至少一个资源节点中选取满足连接要求的目标资源节点,并根据当前网络请求从目标资源节点获取网络资源,在客户端上利用网络代理程序实现了在多个资源节点中选取满足连接要求的节点的功能,克服了网络请求必须等待域名的缓存过期才能再次查询资源节点的限制,减少了切换资源节点的延时,本申请在客户端上直接实现节点切换,可以在网站受到ddos攻击时,使客户端不受攻击影响,仍能连接到资源节点。

参照图13,示出了根据本申请实施例八的一种网络资源访问装置实施例的结构框图,具体可以包括:

请求拦截模块801,用于根据客户端的调用指令,拦截在客户端提交的当前网络请求;

节点选取模块802,用于获取记录的至少一个资源节点,并从所述至少一个资源节点中选取满足连接要求的目标资源节点;

资源获取模块803,用于根据所述当前网络请求从所述目标资源节点获取网络资源,并将所述网络资源提供给所述客户端。

在本申请的一种实施例中,可选地,所述节点选取模块包括:

第一选取子模块,用于选取一个候选资源节点,获取所述网络资源;

第二选取子模块,用于检测到所述候选资源节点不满足所述连接要求,则选取另一个候选资源节点,获取所述网络资源;

节点确定子模块,用于检测到满足所述连接要求的候选资源节点,确定为所述目标资源节点。

在本申请的一种实施例中,可选地,所述第一选取子模块包括:

优先级选取单元,用于根据所述资源节点的优先级,选取候选资源节点。

在本申请的一种实施例中,可选地,所述装置还包括:

优先级调整模块,用于根据所述候选资源节点的连接信息,调整所述资源节点的优先级。

在本申请的一种实施例中,可选地,所述连接信息包括资源节点的状态信息,所述状态信息包括异常状态和正常状态。

在本申请的一种实施例中,可选地,所述资源节点支持多节点并行连接,所述优先级调整模块包括:

优先级调整子模块,用于根据节点切换导致未获取的网络资源的数据量,调整所述优先级。

在本申请的一种实施例中,可选地,所述第二选取子模块包括:

第二选取单元,用于根据切换节点前已获取的网络资源,从所述另一个候选资源节点请求未获取的网络资源,所述另一个候选资源节点支持多节点并行连接。

在本申请的一种实施例中,可选地,所述装置还包括:

提示模块,用于检测到与所有候选资源节点连接失败或连接超时,则在所述客户端上进行提示。

在本申请的一种实施例中,可选地,所述装置还包括:

速度检测模块,用于检测到与各个候选资源节点的连接速度处于预设速度范围,且所述候选资源节点不满足所述连接要求;

目标节点确定模块,用于选取多个候选资源节点,确定为目标资源节点,所述多个候选资源节点支持多节点并行连接。

依据本申请实施例,通过网络代理程序根据客户端的调用指令,拦截在客户端提交的当前网络请求,获取记录的至少一个资源节点,并从所述至少一个资源节点中选取满足连接要求的目标资源节点,根据所述当前网络请求从所述目标资源节点获取网络资源,并将所述网络资源提供给所述客户端,利用网络代理程序实现了在多个资源节点中选取满足连接要求的节点的功能,克服了网络请求必须等待域名的缓存过期才能再次查询资源节点的限制,减少了切换资源节点的延时,本申请在客户端上直接实现节点切换,可以在网站受到ddos攻击时,使客户端不受攻击影响,仍能连接到资源节点。

参照图14,示出了根据本申请实施例九的一种网络资源提供装置实施例的结构框图,具体可以包括:

程序提供模块901,用于向客户端提供网络代理程序,其中,所述客户端调用所述网络代理程序获取在客户端提交的当前网络请求,并从记录的至少一个资源节点中选取满足连接要求的目标资源节点;

请求获取模块902,用于获取所述网络代理程序的当前网络请求;

资源提供模块903,用于根据所述当前网络请求,将网络资源提供给所述网络代理程序。

在本申请的一种实施例中,可选地,所述程序提供模块,具体用于根据所述客户端的首次网络请求,提供所述网络代理程序。

在本申请的一种实施例中,可选地,所述装置还包括:

状态监控模块,用于在所述向客户端提供网络代理程序之前,监控所述至少一个资源节点的流量压力状态,所述流量压力状态包括正常状态或异常状态。

依据本申请实施例,通过向客户端提供网络代理程序,获取所述网络代理程序的当前网络请求,根据所述当前网络请求,将网络资源提供给所述网络代理程序,在客户端上实现了在多个资源节点中选取满足连接要求的节点的功能,克服了网络请求必须等待域名的缓存过期才能再次查询资源节点的限制,减少了切换资源节点的延时,本申请在客户端上直接实现节点切换,可以在网站受到ddos攻击时,使客户端不受攻击影响,仍能连接到资源节点。

对于装置实施例而言,由于其与方法实施例基本相似,所以描述的比较简单,相关之处参见方法实施例的部分说明即可。

本公开的实施例可被实现为使用任意适当的硬件,固件,软件,或及其任意组合进行想要的配置的系统。图15示意性地示出了可被用于实现本公开中所述的各个实施例的示例性系统(或装置)1000。

对于一个实施例,图15示出了示例性系统1000,该系统具有一个或多个处理器1002、被耦合到(一个或多个)处理器1002中的至少一个的系统控制模块(芯片组)1004、被耦合到系统控制模块1004的系统存储器1006、被耦合到系统控制模块1004的非易失性存储器(nvm)/存储设备1008、被耦合到系统控制模块1004的一个或多个输入/输出设备1010,以及被耦合到系统控制模块1006的网络接口1012。

处理器1002可包括一个或多个单核或多核处理器,处理器1002可包括通用处理器或专用处理器(例如图形处理器、应用处理器、基频处理器等)的任意组合。在一些实施例中,系统1000能够作为本申请实施例中所述的浏览器。

在一些实施例中,系统1000可包括具有指令的一个或多个计算机可读介质(例如,系统存储器1006或nvm/存储设备1008)以及与该一个或多个计算机可读介质相合并被配置为执行指令以实现模块从而执行本公开中所述的动作的一个或多个处理器1002。

对于一个实施例,系统控制模块1004可包括任意适当的接口控制器,以向(一个或多个)处理器1002中的至少一个和/或与系统控制模块1004通信的任意适当的设备或组件提供任意适当的接口。

系统控制模块1004可包括存储器控制器模块,以向系统存储器1006提供接口。存储器控制器模块可以是硬件模块、软件模块和/或固件模块。

系统存储器1006可被用于例如为系统1000加载和存储数据和/或指令。对于一个实施例,系统存储器1006可包括任意适当的易失性存储器,例如,适当的dram。在一些实施例中,系统存储器1006可包括双倍数据速率类型四同步动态随机存取存储器(ddr4sdram)。

对于一个实施例,系统控制模块1004可包括一个或多个输入/输出控制器,以向nvm/存储设备1008及(一个或多个)输入/输出设备1010提供接口。

例如,nvm/存储设备1008可被用于存储数据和/或指令。nvm/存储设备1008可包括任意适当的非易失性存储器(例如,闪存)和/或可包括任意适当的(一个或多个)非易失性存储设备(例如,一个或多个硬盘驱动器(hdd)、一个或多个光盘(cd)驱动器和/或一个或多个数字通用光盘(dvd)驱动器)。

nvm/存储设备1008可包括在物理上作为系统1000被安装在其上的设备的一部分的存储资源,或者其可被该设备访问而不必作为该设备的一部分。例如,nvm/存储设备1008可通过网络经由(一个或多个)输入/输出设备1010进行访问。

(一个或多个)输入/输出设备1010可为系统1000提供接口以与任意其他适当的设备通信,输入/输出设备1010可以包括通信组件、音频组件、传感器组件等。网络接口1012可为系统1000提供接口以通过一个或多个网络通信,系统1000可根据一个或多个无线网络标准和/或协议中的任意标准和/或协议来与无线网络的一个或多个组件进行无线通信,例如接入基于通信标准的无线网络,如wifi,2g或3g,或它们的组合进行无线通信。

对于一个实施例,(一个或多个)处理器1002中的至少一个可与系统控制模块1004的一个或多个控制器(例如,存储器控制器模块)的逻辑封装在一起。对于一个实施例,(一个或多个)处理器1002中的至少一个可与系统控制模块1004的一个或多个控制器的逻辑封装在一起以形成系统级封装(sip)。对于一个实施例,(一个或多个)处理器1002中的至少一个可与系统控制模块1004的一个或多个控制器的逻辑集成在同一模具上。对于一个实施例,(一个或多个)处理器1002中的至少一个可与系统控制模块1004的一个或多个控制器的逻辑集成在同一模具上以形成片上系统(soc)。

在各个实施例中,系统1000可以但不限于是:浏览器、工作站、台式计算设备或移动计算设备(例如,膝上型计算设备、手持计算设备、平板电脑、上网本等)。在各个实施例中,系统1000可具有更多或更少的组件和/或不同的架构。例如,在一些实施例中,系统1000包括一个或多个摄像机、键盘、液晶显示器(lcd)屏幕(包括触屏显示器)、非易失性存储器端口、多个天线、图形芯片、专用集成电路(asic)和扬声器。

其中,如果显示器包括触摸面板,显示屏可以被实现为触屏显示器,以接收来自用户的输入信号。触摸面板包括一个或多个触摸传感器以感测触摸、滑动和触摸面板上的手势。所述触摸传感器可以不仅感测触摸或滑动动作的边界,而且还检测与所述触摸或滑动操作相关的持续时间和压力。

本申请实施例还提供了一种非易失性可读存储介质,该存储介质中存储有一个或多个模块(programs),该一个或多个模块被应用在终端设备时,可以使得该终端设备执行本申请实施例中各方法步骤的指令(instructions)。

在一个示例中提供了一种计算机设备,包括存储器、处理器及存储在存储器上并可在处理器上运行的计算机程序,其特征在于,所述处理器执行所述计算机程序时实现如本申请实施例的方法。

在一个示例中还提供了一种计算机可读存储介质,其上存储有计算机程序,其特征在于,该程序被处理器执行时实现如本申请实施例的一个或多个的方法。

本申请实施例公开了一种网络资源访问方法和装置,示例1包括一种网络资源访问方法,包括:

注册网络代理程序;

调用所述网络代理程序获取在客户端提交的当前网络请求,其中,所述网络代理程序记录有至少一个资源节点;

调用所述网络代理程序从所述至少一个资源节点中选取满足连接要求的目标资源节点,并根据所述当前网络请求从所述目标资源节点获取网络资源。

示例2可包括示例1所述的方法,其中,所述当前网络请求包括网络标识,所述注册网络代理程序包括:

针对所述网络标识注册网络代理程序;

所述调用所述网络代理程序获取在客户端提交的当前网络请求包括:

调用所述网络代理程序,拦截针对所述网络标识的当前网络请求。

示例3可包括示例1和/或示例2所述的方法,其中,在所述注册网络代理程序之前,所述方法还包括:

根据客户端的首次网络请求,获取所述网络代理程序。

示例4可包括示例1-示例3一个或多个所述的方法,其中,所述根据客户端的首次网络请求,获取所述网络代理程序包括:

根据所述首次网络请求,连接第一资源节点获取所述网络代理程序的启动信息,所述第一资源节点处于异常状态;

连接所述启动信息指定的第二资源节点,获取所述网络代理程序,所述第二资源节点处于正常状态。

示例5可包括示例1-示例4一个或多个所述的方法,其中,在所述获取在客户端提交的当前网络请求之前,所述方法还包括:

向所述第一资源节点请求所述网络代理程序的执行代码,所述执行代码用于从所述至少一个资源节点中选取满足连接要求的目标资源节点,并从所述目标资源节点获取网络资源;

连接所述第一资源节点指定的第三资源节点,获取所述执行代码,所述第二资源节点和第三资源节点为第一资源节点检测的负载最小节点,所述第二资源节点和第三资源节点为同一节点或不同节点。

示例6可包括示例1-示例5一个或多个所述的方法,其中,所述方法还包括:

检测所述网络代理程序注册完成;

控制所述客户端对当前页面进行刷新,根据所述首次网络请求产生当前网络请求。

示例7可包括示例1-示例6一个或多个所述的方法,其中,在所述注册网络代理程序之前,所述方法还包括:

检测到不支持所述网络代理程序,则对所述客户端进行升级。

示例8可包括示例1-示例7一个或多个所述的方法,其中,所述根据客户端的首次网络请求,获取所述网络代理程序包括:

从所述第一资源节点获取所述网络代理程序,所述第一资源节点处于正常状态。

示例9可包括示例1-示例8一个或多个所述的方法,其中,所述网络代理程序嵌入在根据所述首次网络请求获取的网络资源中。

示例10包括一种网络资源访问方法,其中,包括:

根据客户端的调用指令,拦截在客户端提交的当前网络请求;

获取记录的至少一个资源节点,并从所述至少一个资源节点中选取满足连接要求的目标资源节点;

根据所述当前网络请求从所述目标资源节点获取网络资源,并将所述网络资源提供给所述客户端。

示例11可包括示例10所述的方法,其中,所述从所述至少一个资源节点中选取满足连接要求的目标资源节点包括:

选取一个候选资源节点,获取所述网络资源;

检测到所述候选资源节点不满足所述连接要求,则选取另一个候选资源节点,获取所述网络资源;

检测到满足所述连接要求的候选资源节点,确定为所述目标资源节点。

示例12可包括示例10和/或示例11所述的方法,其中,所述选取一个候选资源节点包括:

根据所述资源节点的优先级,选取候选资源节点。

示例13可包括示例10-示例12一个或多个所述的方法,其中,所述方法还包括:

根据所述候选资源节点的连接信息,调整所述资源节点的优先级。

示例14可包括示例10-示例13一个或多个所述的方法,其中,所述连接信息包括资源节点的状态信息,所述状态信息包括异常状态和正常状态。

示例15可包括示例10-示例14一个或多个所述的方法,其中,所述资源节点支持多节点并行连接,所述根据所述候选资源节点的连接信息,调整所述资源节点的优先级包括:

根据节点切换导致未获取的网络资源的数据量,调整所述优先级。

示例16可包括示例10-示例15一个或多个所述的方法,其中,所述检测到所述候选资源节点不满足所述连接要求,则选取另一个候选资源节点,获取所述网络资源包括:

根据切换节点前已获取的网络资源,从所述另一个候选资源节点请求未获取的网络资源,所述另一个候选资源节点支持多节点并行连接。

示例17可包括示例10-示例16一个或多个所述的方法,其中,所述方法还包括:

检测到与所有候选资源节点连接失败或连接超时,则在所述客户端上进行提示。

示例18可包括示例10-示例17一个或多个所述的方法,其中,所述方法还包括:

检测到与各个候选资源节点的连接速度处于预设速度范围,且所述候选资源节点不满足所述连接要求;

选取多个候选资源节点,确定为目标资源节点,所述多个候选资源节点支持多节点并行连接。

示例19包括一种网络资源访问方法,包括:

向客户端提供网络代理程序,其中,所述客户端调用所述网络代理程序获取在客户端提交的当前网络请求,并从记录的至少一个资源节点中选取满足连接要求的目标资源节点;

获取所述网络代理程序的当前网络请求;

根据所述当前网络请求,将网络资源提供给所述网络代理程序。

示例20可包括示例19所述的方法,其中,所述向客户端提供网络代理程序包括:

根据所述客户端的首次网络请求,提供所述网络代理程序。

示例21可包括示例19和/或示例20所述的方法,其中,在所述向客户端提供网络代理程序之前,所述方法还包括:

监控所述至少一个资源节点的流量压力状态,所述流量压力状态包括正常状态或异常状态。

示例22包括一种网络资源访问装置,包括:

程序注册模块,用于注册网络代理程序;

请求获取模块,用于调用所述网络代理程序获取在客户端提交的当前网络请求,其中,所述网络代理程序记录有至少一个资源节点;

资源获取模块,用于调用所述网络代理程序从所述至少一个资源节点中选取满足连接要求的目标资源节点,并根据所述当前网络请求从所述目标资源节点获取网络资源。

示例23可包括示例22所述的装置,其中,所述当前网络请求包括网络标识,所述程序注册模块包括:

程序注册子模块,用于针对所述网络标识注册网络代理程序;

所述请求获取模块包括:

请求拦截子模块,用于调用所述网络代理程序,拦截针对所述网络标识的当前网络请求。

示例24可包括示例22和/或示例23所述的装置,其中,所述装置还包括:

程序获取模块,用于在所述注册网络代理程序之前,根据客户端的首次网络请求,获取所述网络代理程序。

示例25可包括示例22-示例24一个或多个所述的装置,其中,所述程序获取模块包括:

启动信息获取子模块,用于根据所述首次网络请求,连接第一资源节点获取所述网络代理程序的启动信息,所述第一资源节点处于异常状态;

第一程序获取子模块,用于连接所述启动信息指定的第二资源节点,获取所述网络代理程序,所述第二资源节点处于正常状态。

示例26可包括示例22-示例25一个或多个所述的装置,其中,所述装置还包括:

代码请求模块,用于在所述获取在客户端提交的当前网络请求之前,向所述第一资源节点请求所述网络代理程序的执行代码,所述执行代码用于从所述至少一个资源节点中选取满足连接要求的目标资源节点,并从所述目标资源节点获取网络资源;

代码获取模块,用于连接所述第一资源节点指定的第三资源节点,获取所述执行代码,所述第二资源节点和第三资源节点为第一资源节点检测的负载最小节点,所述第二资源节点和第三资源节点为同一节点或不同节点。

示例27可包括示例22-示例26一个或多个所述的装置,其中,所述装置还包括:

注册检测模块,用于检测所述网络代理程序注册完成;

刷新控制模块,用于控制所述客户端对当前页面进行刷新,根据所述首次网络请求产生当前网络请求。

示例28可包括示例22-示例27一个或多个所述的装置,其中,所述装置还包括:

升级模块,用于在所述注册网络代理程序之前,检测到不支持所述网络代理程序,则对所述客户端进行升级。

示例29可包括示例22-示例28一个或多个所述的装置,其中,所述程序获取模块包括:

第二程序获取子模块,用于从所述第一资源节点获取所述网络代理程序,所述第一资源节点处于正常状态。

示例30可包括示例22-示例29一个或多个所述的装置,其中,所述网络代理程序嵌入在根据所述首次网络请求获取的网络资源中。

示例31包括一种网络资源访问装置,包括:

请求拦截模块,用于根据客户端的调用指令,拦截在客户端提交的当前网络请求;

节点选取模块,用于获取记录的至少一个资源节点,并从所述至少一个资源节点中选取满足连接要求的目标资源节点;

资源获取模块,用于根据所述当前网络请求从所述目标资源节点获取网络资源,并将所述网络资源提供给所述客户端。

示例32可包括示例31所述的装置,其中,所述节点选取模块包括:

第一选取子模块,用于选取一个候选资源节点,获取所述网络资源;

第二选取子模块,用于检测到所述候选资源节点不满足所述连接要求,则选取另一个候选资源节点,获取所述网络资源;

节点确定子模块,用于检测到满足所述连接要求的候选资源节点,确定为所述目标资源节点。

示例33可包括示例31和/或示例32所述的装置,其中,所述第一选取子模块包括:

优先级选取单元,用于根据所述资源节点的优先级,选取候选资源节点。

示例34可包括示例31-示例33一个或多个所述的装置,其中,所述装置还包括:

优先级调整模块,用于根据所述候选资源节点的连接信息,调整所述资源节点的优先级。

示例35可包括示例31-示例34一个或多个所述的装置,其中,所述连接信息包括资源节点的状态信息,所述状态信息包括异常状态和正常状态。

示例36可包括示例31-示例35一个或多个所述的装置,其中,所述资源节点支持多节点并行连接,所述优先级调整模块包括:

优先级调整子模块,用于根据节点切换导致未获取的网络资源的数据量,调整所述优先级。

示例37可包括示例31-示例36一个或多个所述的装置,其中,所述第二选取子模块包括:

第二选取单元,用于根据切换节点前已获取的网络资源,从所述另一个候选资源节点请求未获取的网络资源,所述另一个候选资源节点支持多节点并行连接。

示例38可包括示例31-示例37一个或多个所述的装置,其中,所述装置还包括:

提示模块,用于检测到与所有候选资源节点连接失败或连接超时,则在所述客户端上进行提示。

示例39可包括示例31-示例38一个或多个所述的装置,其中,所述装置还包括:

速度检测模块,用于检测到与各个候选资源节点的连接速度处于预设速度范围,且所述候选资源节点不满足所述连接要求;

目标节点确定模块,用于选取多个候选资源节点,确定为目标资源节点,所述多个候选资源节点支持多节点并行连接。

示例40包括一种网络资源提供装置,包括:

程序提供模块,用于向客户端提供网络代理程序,其中,所述客户端调用所述网络代理程序获取在客户端提交的当前网络请求,并从记录的至少一个资源节点中选取满足连接要求的目标资源节点;

请求获取模块,用于获取所述网络代理程序的当前网络请求;

资源提供模块,用于根据所述当前网络请求,将网络资源提供给所述网络代理程序。

示例41可包括示例40所述的装置,其中,所述程序提供模块,具体用于根据所述客户端的首次网络请求,提供所述网络代理程序。

示例42可包括示例40和/或示例41所述的装置,其中,所述装置还包括:

状态监控模块,用于在所述向客户端提供网络代理程序之前,监控所述至少一个资源节点的流量压力状态,所述流量压力状态包括正常状态或异常状态。

示例43包括一种计算机设备,包括存储器、处理器及存储在存储器上并可在处理器上运行的计算机程序,所述处理器执行所述计算机程序时实现如示例1-21一个或多个的方法。

示例44包括一种计算机可读存储介质,其上存储有计算机程序,该程序被处理器执行时实现如示例1-21一个或多个的方法。

虽然某些实施例是以说明和描述为目的的,各种各样的替代、和/或、等效的实施方案、或计算来达到同样的目的实施例示出和描述的实现,不脱离本申请的实施范围。本申请旨在覆盖本文讨论的实施例的任何修改或变化。因此,显然本文描述的实施例仅由权利要求和它们的等同物来限定。

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