资源请求分发方法、装置、服务器和存储介质与流程

文档序号:26003875发布日期:2021-07-23 21:21阅读:112来源:国知局
资源请求分发方法、装置、服务器和存储介质与流程

本申请涉及网络技术领域,尤其涉及一种资源请求分发方法、装置、服务器和存储介质。



背景技术:

在业务服务平台上经常会涉及到资源的更新上线。如,在网页服务平台中经常会涉及到网页资源(如,网页页面以及网页内的图片等资源)的更新上线。

在存在资源更新的情况下,需要将更新后的资源部署到业务服务平台的各台资源服务器中。由于部署资源的工作量较大,且为了减少更新后的资源异常所能影响到的用户数量,更新后的资源并不会同时部署到所有的资源服务器中,从而出现部分资源服务器中部署有新的资源,而部分资源服务器中部署的是旧的资源。

而实际应用中,客户端向业务服务平台请求的一项业务服务可能会涉及到多种资源,而该多种资源之间具有依赖关系,因此,客户端分次从业务服务平台请求的该多种资源的版本需要保持一致。如,以客户端请求网页服务为例,客户端加载网页可能会涉及资源包括网页的页面数据以及页面内图片,在该种情况下,如果客户端请求到的页面数据是已更新的最新版本的页面数据,那么客户端会继续请求该页面对应的已更新的最新版本的图片。

然而,业务服务平台在获得客户端发送的资源请求之后,会将资源请求分发给资源服务器处理,这就可能导致客户端针对一项业务服务多次发送的不同资源请求可能会被分发到多台资源服务器。如果这多台资源服务器中资源更新进度不同,就很容易出现客户端在获得该项业务服务的某些资源的最新版本数据之后,无法请求到该资源依赖的其他资源的最新版本数据的情况,从而出现资源请求异常。



技术实现要素:

有鉴于此,本申请提供了一种资源请求分发方法、装置、服务器和存储介质,以减少客户端资源请求异常的情况。

为实现上述目的,本申请提供了如下技术方案:

一方面,本申请提供了一种资源请求分发方法,包括:

获得客户端发送的第一资源请求,所述第一资源请求用于请求业务服务的第一类资源;

确定为所述第一类资源配置的第一资源服务器组,所述第一资源服务器组包括多个第一资源服务器;

从所述第一资源服务器组中确定用于处理所述第一资源请求的目标第一资源服务器,并将所述第一资源请求分配给所述目标第一资源服务器,以使得所述目标第一资源服务器为所述客户端返回所述第一类资源;

获得客户端发送的第二资源请求,所述第二资源请求用于请求所述业务服务的第二类资源,所述第二类资源为所述第一类资源所依赖的资源;

确定为所述第二类资源配置的第二资源服务器组,所述第二资源服务器组中包括多个第二资源服务器,其中,在所述业务服务的资源存在更新的情况下,所述第二资源服务器组中各第二资源服务器被配置为资源更新的时间早于所述第一资源服务器组中各第二资源服务器中资源更新的时间;

从所述第二资源服务器组中确定用于处理所述第二资源请求的目标第二资源服务器,并将所述第二资源请求分配给所述目标第二资源服务器,以使得所述目标第二资源服务器为所述客户端返回所述第二类资源。

优选的,所述第一类资源请求用于请求加载网页所需的页面结构数据;

所述第二类资源请求用于请求加载网页所需的第二类资源,所述第二类资源为所述客户端基于所述页面结构数据解析出的,网页相关的样式或者行为数据。

优选的,在所述业务资源的更新上线的测试阶段,所述第一资源服务器组中存在至少一台已完成所述业务服务对应的资源更新的第一资源服务器。

优选的,所述第一资源服务器和第二资源服务器采用资源覆盖更新的方式更新所述第一类资源,且所述第一资源服务器和第二资源服务器采用增量更新的方式更新所述第二类资源。

优选的,所述从所述第一资源服务器组中确定用于处理所述第一资源请求的目标第一资源服务器,包括:

按照所述第一资源服务器组中各第一资源服务器对应的第一先后顺序,确定当前待分配请求的第一资源服务器,将确定出的第一资源服务器确定为用于处理所述第一资源请求的目标第一资源服务器;

所述从所述第二资源服务器组中确定用于处理所述第二资源请求的目标第二资源服务器,包括:

按照所述第二资源服务器组中各第二资源服务器对应的第二先后顺序,确定当前待分配请求的第二资源服务器,将确定出的第二资源服务器确定为用于处理所述第二资源请求的目标第二资源服务器。

又一方面,本申请还提供了一种资源请求分发装置,包括:

第一请求获得单元,用于获得客户端发送的第一资源请求,所述第一资源请求用于请求业务服务的第一类资源;

第一组确定单元,用于确定为所述第一类资源配置的第一资源服务器组,所述第一资源服务器组包括多个第一资源服务器;

第一请求分发单元,用于从所述第一资源服务器组中确定用于处理所述第一资源请求的目标第一资源服务器,并将所述第一资源请求分配给所述目标第一资源服务器,以使得所述目标第一资源服务器为所述客户端返回所述第一类资源;

第二请求获得单元,用于获得客户端发送的第二资源请求,所述第二资源请求用于请求所述业务服务的第二类资源,所述第二类资源为所述第一类资源所依赖的资源;

第二组确定单元,用于确定为所述第二类资源配置的第二资源服务器组,所述第二资源服务器组中包括多个第二资源服务器,其中,在所述业务服务的资源存在更新的情况下,所述第二资源服务器组中各第二资源服务器被配置为资源更新的时间早于所述第一资源服务器组中各第二资源服务器中资源更新的时间;

第二请求分发单元,用于从所述第二资源服务器组中确定用于处理所述第二资源请求的目标第二资源服务器,并将所述第二资源请求分配给所述目标第二资源服务器,以使得所述目标第二资源服务器为所述客户端返回所述第二类资源。

又一方面,本申请还提供了一种资源请求分发系统,包括:

请求分发服务器和多台资源服务器;

其中,所述多台资源服务器被划分为第一资源服务器组和第二资源服务器组,所述第一资源服务器组中的多个第一资源服务器被配置为用于处理业务服务中第一类资源对应的第一资源请求,所述第二资源服务器组中的多个第二资源服务器组被配置为用于处理所述业务服务中第二类资源对应的第二类资源请求,所述第二类资源为所述第一类资源所依赖的资源;

且,所述第二资源服务器组中各第二资源服务器被配置为所述业务服务相关资源的资源更新时间,早于所述第一资源服务器组中各第一资源服务器中更新所述业务服务相关资源的资源更新时间;

其中,所述请求分发服务器用于,获得客户端发送的第一资源请求,所述第一资源请求用于请求所述第一类资源;从所述第一资源服务器组中确定用于处理所述第一资源请求的目标第一资源服务器,并将所述第一资源请求分配给所述目标第一资源服务器,以使得所述目标第一资源服务器为所述客户端返回所述第一类资源;获得客户端发送的第二资源请求,所述第二资源请求用于请求所述业务服务的第二类资源;从所述第二资源服务器组中确定用于处理所述第二资源请求的目标第二资源服务器,并将所述第二资源请求分配给所述目标第二资源服务器,以使得所述目标第二资源服务器为所述客户端返回所述第二类资源。

优选的,该系统还包括:

资源更新控制设备,用于获得所述业务服务待更新的资源以及所述资源对应的服务器资源上线顺序,所述服务器资源上线顺序中所述第二资源服务器组中各第二资源服务器的资源更新顺序早于所述第一资源服务器组中各第一资源服务器的资源更新顺序;按照所述服务器资源上线顺序依次向所述第二资源服务器组以及第一资源服务器组的资源服务器中更新业务服务待更新的资源。

又一方面,本申请还提供了一种服务器,包括存储器和处理器;

其中,所述存储器用于存储程序;

所述处理器用于执行所述程序,所述程序被执行时,具体用于实现如权利要求1至5任意一项所述的资源请求分发方法。

又一方面,本申请还提供了一种存储介质,用于存储程序,所述程序被执行时,用于实现如上任意一项所述资源请求分发方法。

由以上内容可知,在本申请将业务服务的第一类资源的资源请求固定分发到第一资源服务器组,而将第一类资源依赖的第二类资源固定分发到第二资源服务器组。由于在业务服务的资源存在更新的情况下,第二资源服务器组中的第二资源服务器会被优先更新资源,因此,如果第一资源服务器组存在完成资源更新上线的第一资源服务器的前提下,则说明第二资源服务器组中所有第二资源服务器均已完成资源更新上线。在该种情况下,如果客户端从第一资源服务器组中的第一资源服务器获得第一类资源的新版本数据,那么客户端从第二资源服务器组必然能够请求到该第一类资源所依赖的第二类资源的新版本数据,从而可以减少客户端由于无法请求到第一类资源所依赖的第二类资源的新版本数据,而导致资源请求异常的情况。

附图说明

为了更清楚地说明本申请实施例中的技术方案,下面将对实施例描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本申请的实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据提供的附图获得其他的附图。

图1示出了本申请一种资源请求分发系统的组成架构示意图;

图2示出了本申请实施例提供的资源请求分发方法的一种流程示意图;

图3示出了本申请实施例提供的资源请求分发方法的又一种流程示意图;

图4示出了本申请实施例提供的资源请求分发装置的一种组成结构示意图;

图5示出了本申请实施例提供的电子设备的一种组成结构示意图。

具体实施方式

下面将结合本申请实施例中的附图,对本申请实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本申请一部分实施例,而不是全部的实施例。基于本申请中的实施例,本领域普通技术人员在没有付出创造性劳动前提下所获得的所有其他实施例,都属于本申请保护的范围。

为了便于理解,先对本申请的资源请求分发系统进行介绍。

如图1所示,其示出了本申请一种资源请求分发系统的一种组成结构示意图。

由图1可知,该资源分发系统可以包括:请求分发服务器101和多台资源服务器102。

其中,请求分发服务器101与资源服务器102之间通过网络连接。在本申请中,该请求分发服务器和多台资源服务器实际上构成了业务服务的服务平台,如,以网页服务这一场景为例,请求分发服务器和资源服务器实际上就是提供网页服务的网站系统。

客户端103可以向请求分发服务器发送资源请求。

相应的,请求分发服务器用于向多台资源服务器分发资源请求,而资源请求服务器存储有服务平台所需提供的业务服务的服务资源,如,以网页服务为例,该资源服务器可以存储网页加载所涉及到的网页架构数据以及网页的样式脚本以及所需展现的图片等资源数据。

在本申请中该多台资源服务器被划分为第一资源服务器组和第二资源服务器组。其中,第一资源服务器组与第二资源服务器组均分别包括多台资源服务器,为了便于区分,将第一资源服务器组中的资源服务器称为第一资源服务器,而将第二资源服务器组中的资源服务器称为第二资源服务器。可以理解的是,一台资源服务器仅仅属于一个资源服务器组。

需要说明的是,本申请中第一资源服务器组和第二资源服务器组可以是从逻辑上将各台资源服务器进行划分得到的,而并不一定是物理上进行划分。

在本申请中,第一资源服务器组中的多个第一资源服务器被配置为用于处理业务服务中第一类资源对应的第一资源请求。而该第二资源服务器组中的多个第二资源服务器组被配置为用于处理业务服务中第二类资源对应的第二类资源请求。

其中,第二类资源为业务服务中第一类资源所依赖的资源。

如,在第一类资源的处理过程中需要调用该第二类资源。在业务服务中客户端一般需要先请求该第一类资源,而在客户端获得第一类资源之后,需要基于第一类资源调用第二类资源,才可以获得业务服务。

举例说明,以网页请求服务为例说明,在客户端需要请求网页时,会先向服务器发送网页请求,以请求网页的网页结构数据。在客户端解析获得到的网页结构数据中包含的图片链接或者样式脚本等,然后,客户端需要向服务器请求图片或者样式数据,然后才可以结合图片和样式数据最终完成页面的加载与展现。基于此可知,网页的网页结构数据为网页请求服务中的第一类资源,而图片以及样式数据为网页结构数据所依赖的第二类资源。

本申请的发明人经研究发现:由于第一类资源需要依赖第二类资源,而客户端请求的第二类资源的版本是由第一类资源的版本决定的。如果客户端获得第一类资源的最新版本数据,那么客户端必然需要请求第二类资源的最新版本数据。如,以网页请求服务为例,客户端发送网页请求之后,服务器为客户端返回的网页数据为网页的结构数据,如果网页的结构数据为最新版本,而在该网页的结构数据中包含的待调用的图片也是资源更新后的最新版本的图片。

在业务服务的资源更新上线阶段,多台资源服务器中会存在部分资源服务器已完成资源更新,而部分资源服务器尚未进行资源更新的情况。在已完成资源更新的资源服务器中既可以获得第二类资源的最新版本数据,也可以获得第二类资源的历史版本数据;而未完成资源更新的资源服务器中则只能获得第二类资源的历史版本数据。

如,在一种可能的情况中,对于任意一台资源服务器,资源服务器会同时保存更新后的第二类资源的资源数据,还会同时保存第二类资源的资源数据。

在一种优选方式中,第一资源服务器和第二资源服务器均采用资源覆盖更新的方式更新该第一类资源,且第一资源服务器和第二资源服务器采用增量更新的方式更新该第二类资源。

其中,第一资源服务器和第二资源服务器采用资源覆盖更新的方式更新第一类资源,则第一类资源和第二类资源只能保存第一类资源对应的最新数据,因此可以保证在资源更新部署后,可以使得更新后的业务服务能够被访问,有利于测试和检测更新后的业务服务是否存在异常等。

而在资源服务器采用增量更新的方式更新第二类资源可以减少资源更新所耗费的数据量,而且,也可以使得资源服务器能够同时提供旧版本的第二类资源以及新版本的第二类资源。

由以上可知,如果请求分发服务器将客户端的第一类资源的资源请求分发到已完成资源更新的资源服务器上,那么资源服务器为客户端返回的第一类资源为最新版本的第一类资源。在该种情况下,客户端需要请求最新版本的第二类资源,而客户端发送第二类资源的资源请求后,如果请求分发服务器将该第二类资源的资源请求分发到未完成资源更新的资源服务器,那么资源服务器只能未客户端返回历史版本的第二类资源,导致客户端请求最新版本的第二类资源失败,从而出现资源请求异常的情况。

举例说明:

业务服务a涉及到资源a和资源b,资源a依赖资源b,资源a和资源b均部署在资源服务器w、x、y和z上,相应到,针对资源a以及资源b的请求会被随机分发到w、x、y或者z这四台资源服务器上。

而在该业务服务a存在新资源上线的情况,假设上线前服务a的资源a为a1,资源b为b1,而上线后业务服务a的资源a为a2,资源b为b2。而上线过程为逐步将a2、b2部署在服务器w、x、y、z上。

假设在上线过程的某个时刻,资源a2和b2已部署在w和x两台资源服务器上(当然,w和z两台资源服务器也会同时存在资源b1),而资源服务器y和z上尚未部署资源a2和b2。在该种情况下,在客户端请求业务服务a时,则会涉及到如下4种情况:

1)、客户端针对资源a的请求被分发到资源服务器w或者x上,而客户端可以获得资源a2;此时客户端会资源请求b2,b2请求到w或者x上(由于w和x存在b2),故此时该资源请求所请求的资源b2能正常返回,服务无损;

2)、客户端针对资源a的请求被分发到资源服务器w或者x上,则客户端可以获得资源a2,此时客户端将请求资源b2,而资源b2的请求如果被分发到资源服务器y或者z上(此时y和z上不存在b2),故此时请求不能正常返回,服务受损;

3)、客户端针对资源a请求到y或者z上,则客户端可以获得资源a1,此时客户端将去请求资源b1,而资源b1的请求如果被分发到w或者x上(此时w和x存在b1),故此时请求能正常返回,服务无损;

4)、客户端针对资源a的请求被分发到资源服务器y或者z上,即a1,此时客户端将去请求资源b1,资源b1的请求被分发到资源服务器y或者z上(此时y和z存在b1),故此时客户端针对资源b1的请求能被正常返回,服务无损;

可见,以上四种情况概率均等,因此会有25%的可能导致服务受损,即第二类资源请求异常。

而发明人进一步研究发现:如果能够使得第二类资源的请求均被分发到已完成资源更新的资源服务器上,由于已完成资源更新的资源服务器可以同时获得第二类资源的最新版本数据以及历史版本数据,只要是将第二类资源定向到已完成资源更新的资源服务器就可以减少甚至避免第二类资源请求异常的情况。

同时,如果由请求分发服务器来查询各个资源服务器的资源更新状态,则可能会导致资源浪费,也会耗费较长时间,从而可能会影响到资源请求效率。

基于以上研究发现,本申请的发明人想到:可以将被依赖的第二类资源的请求固定分发到优先进行资源更新部署的资源服务器上,而将存在依赖资源的第一类资源的请求固定分发到后部署资源更新后的资源服务器上。

基于此,本申请中第二资源服务器组中各第二资源服务器被配置为业务服务相关资源的资源更新时间,早于该第一资源服务器组中各第一资源服务器中更新所述业务服务相关资源的资源更新时间。由此可知,在第一资源服务器组中存在完成资源更新的第一资源服务器的前提下,第二资源服务器组中各第二资源服务器均已完成资源更新,基于此,从第二资源服务器上既可以获得第二类资源的最新版本数据,也可以获得第二类资源的旧版本数据,从而可以减少无法获得到第二类资源所需版本数据的情况。

其中,对于第一资源服务器组和第二资源服务器组中部署需要上线更新的资源的具体实现不加限制,只要保证优先在第二资源服务器组中上线更新的资源即可。

在一种可选方式中,该系统还可以包括:资源更新控制设备(图1中未示出),该资源更新控制设备可以有一台,也可以有多台,该多台资源更新控制设备可以构成一个资源上线控制平台。

其中,资源更新控制设备,用于获得业务服务待更新的资源以及资源对应的服务器资源上线顺序,其中,服务器资源上线顺序中第二资源服务器组中各第二资源服务器的资源更新顺序早于该第一资源服务器组中各第一资源服务器的资源更新顺序;按照该服务器资源上线顺序依次向第二资源服务器组以及第一资源服务器组的资源服务器中更新业务服务待更新的资源。

其中,该服务器资源上线顺序可以由用户预先配置。

可以理解的是,服务器资源上线顺序还可以配置第二资源服务器组中各台第二资源服务器中部署更新后的资源的上线顺序,在此基础上,资源更新控制设备可以按照第二资源服务器组中各台第二资源服务器对应的上线顺序,依次向各台第二资源服务器中部署需要更新的资源。类似的,服务器资源上线顺序还可以配置有第一资源服务器组中各第一资源服务器中部署更新后的资源的上线顺序。

在实际应用中,服务器资源上线顺序还可以配置有资源部署暂停规则,可以按照该资源部署暂停规则在满足资源部署暂停条件时,暂停资源部署。如,资源部署暂停规则可以是每执行完一台资源服务器上的资源更新部署,则暂停资源部署,在到达暂停时长或者检测到继续部署指示时,继续执行下一台资源服务器上的资源更新部署。

下面结合流程图,对本申请的资源请求分发方法进行说明。

如图2所示,其示出了本申请一种资源请求分发方法一个实施例的流程示意图,本实施例应用于请求分发服务器,本申请的方案适用于请求分发服务器所在的业务服务平台处于业务服务的资源更新上线的阶段。本实施例的方法可以包括:

s201,获得客户端发送的第一资源请求。

第一资源请求用于请求业务服务的第一类资源。

该第一类资源为业务服务中需要依赖其他资源的资源。一般情况下,该第一类资源为业务服务的基础资源,客户端一般为了获得该业务服务,一般需要先请求该第一类资源。

s202,确定为第一类资源配置的第一资源服务器组。

该第一资源服务器组包括多个第一资源服务器。

如,在请求分发服务器中可以预先配置好第一资源服务器组所包含的资源服务器,且配置该第一资源服务器组适合第一类资源的资源请求。在此基础上,在识别出资源请求为请求第一类资源的资源请求,则可以确定需要固定定向到该第一资源服务器组。

s203,从第一资源服务器组中确定用于处理第一资源请求的目标第一资源服务器,并将第一资源请求分配给目标第一资源服务器,以使得目标第一资源服务器为客户端返回该第一类资源。

其中,为了便于区分,将用于处理该第一资源请求的第一资源服务器称为目标第一资源服务器。

如,请求分发服务器可以按照随机选择从第一资源服务器组中选择一台第一资源服务器作为该用于处理该第一资源请求的目标第一资源服务器。

又如,请求分发服务器可以按照负载均衡原则,从第一资源服务器组中确定用于处理第一资源请求的目标第一资源服务器。

在一种可选方式中,按照第一资源服务器组中各第一资源服务器对应的第一先后顺序,确定当前待分配请求的第一资源服务器,将确定出的第一资源服务器确定为用于处理所述第一资源请求的目标第一资源服务器。

其中,该第一先后顺序为预先设定的该第一资源服务器组中各个第一资源服务器被分配资源请求的先后顺序,在此基础上,请求分发服务器可以按照该第一先后顺序,依次向第一资源服务器组中各第一资源服务器分发资源请求。

例如,第一先后顺序为资源服务器1、资源服务器2、资源服务器3和资源服务器4,假设最近一次获得的资源请求分配给了资源服务器2,则当前接收到资源请求后,会将资源服务器3确定为待分配请求的资源服务器。

可以理解的是,目标第一资源服务器在获得该第一资源请求之后,如果该目标第一资源服务器中已完成资源更新部署,则该第一资源服务器中部署的是第一类资源的最新版本,在该种情况下,目标第一资源服务器必然会将最新版本的第一类资源服务返回给该客户端。如果该目标第一资源服务器中尚未完成资源更新部署,那么该第一资源服务器返回给客户端的第一类资源为旧版本的第一类资源。

s204,获得客户端发送的第二资源请求。

该第二资源请求用于请求业务服务的第二类资源。

其中,该第二类资源为第一类资源所依赖的资源。

在一种可能的情况中,该第二类资源为客户端基于第一类资源解析出的需要调用的资源。

在一种可能场景中,业务服务可以为网页请求服务,在该场景中,第一类资源可以为客户端请求的网页基础数据,比如页面结构数据。第二类资源请求用于请求加载网页所需的第二类资源,且第二类资源为客户端基于页面结构数据解析出的,网页相关的样式或者行为数据。

例如,网页由结构、表现和行为三类数据组成,结构一般指html,其用于描述页面的结构,而表现可以为css文件,其用于控制页面中元素的样式;行为可以为javascript,其用于响应用户操作。相应的,第一类资源可以包括网页的结构数据,而第二类资源为加载网页所需的样式,或者是诸如图片或者控件等行为数据。

在又一种可能的场景中,业务服务可以为接口调用服务,在该种情况中,第一类资源可以为该接口调用服务的初始调用的接口对应的接口状态数据,而第二类资源可以为基于该接口状态确定出的所需调用的接口资源。例如,在交易结算业务中,调用交易结算接口后可能会返回表征交易是否支付的状态数据,如果客户端根据该状态数据可以判断支付是否完成,并根据支付是否完成来确定所需调用的结算处理接口,则是否指出的状态数据为第一类资源,而客户端根据状态数据所请求调用的接口资源为第二类资源。

当然,根据业务服务场景的不同,第一类资源和第二类资源还可以有其他可能,只要是在业务服务中涉及到需要分别请求第一类资源以及第一类资源所依赖的第二类资源的场景均适用于本实施例,对此不再赘述。

s205,确定为第二类资源配置的第二资源服务器组。

该第二资源服务器组中包括多个第二资源服务器。

其中,在业务服务的资源存在更新的情况下,第二资源服务器组中各第二资源服务器被配置为资源更新的时间早于第一资源服务器组中各第二资源服务器中资源更新的时间。

s206,从第二资源服务器组中确定用于处理第二资源请求的目标第二资源服务器,并将第二资源请求分配给目标第二资源服务器,以使得目标第二资源服务器为客户端返回第二类资源。

为了便于区分,将第二资源服务器组中用于处理第二资源请求的第二资源服务器称为目标第二资源服务器。

其中,从第二资源服务器组中确定用于处理该第二资源请求的第二资源服务器同样可以是随机或者是基于负载均衡的方式来确定,具体与前面确定目标第一资源服务器的过程类似。

在一种可选方式中,可以按照第二资源服务器组中各第二资源服务器对应的第二先后顺序,确定当前待分配请求的第二资源服务器,将确定出的第二资源服务器确定为用于处理该第二资源请求的目标第二资源服务器。

该第二先后顺序为预先设定的该第二资源服务器组中各个第二资源服务器被分配资源请求的先后顺序。

可以理解的是,该第二资源请求中可以指示有第二资源请求

由以上内容可知,在本申请将业务服务的第一类资源的资源请求固定分发到第一资源服务器组,而将第一类资源依赖的第二类资源固定分发到第二资源服务器组。由于在业务服务的资源存在更新的情况下,第二资源服务器组中的第二资源服务器会被优先更新资源,因此,如果第一资源服务器组存在完成资源更新上线的第一资源服务器的前提下,则说明第二资源服务器组中所有第二资源服务器均已完成资源更新上线。在该种情况下,如果客户端从第一资源服务器组中的第一资源服务器获得第一类资源的新版本数据,那么客户端从第二资源服务器组必然能够请求到该第一类资源所依赖的第二类资源的新版本数据,从而可以减少客户端由于无法请求到第一类资源所依赖的第二类资源的新版本数据,而导致资源请求异常的情况。

可以理解的是,在业务服务的资源存在更新的情况下,为了能够保证资源上线过程中服务的稳定性,又可能通过能够更新后的资源的服务可用性,在业务资源的更新上线的测试阶段,第一资源服务器组中存在至少一台已完成该业务服务对应的资源更新的第一资源服务器。所谓测试阶段是指上线过程中,能够保证一部分用户使用更新后资源提供服务,一部分用户仍使用旧资源提供服务,以使得即使由于新资源导致服务出现漏洞,也可以保证有部分用户的服务可用。

在实际应用中,可以根据需要控制第一资源服务器组中完成资源更新的第一资源服务器的占比,来控制使用新资源获得服务的用户的占比。

为了便于理解本申请的好处,下面仍以前面到的资源服务器包括资源服务器w、x、y和z为例,且,假设业务服务a涉及到资源a和资源b,资源a依赖资源b。在该业务服务a存在新资源上线的情况,假设上线前服务a的资源a为a1,资源b为b1,而上线后业务服务a的资源a为a2,资源b为b2。

其中,y和z属于第一资源服务器组,而w和x属于第二资源服务器组。因此,在资源上线过程中,w和x优先完成新资源的部署。

假设目前w和x已经完成资源更新上线,而第一资源服务器组中y已完成资源更新上线,而z尚未部署更新后的资源。

在采用本申请的方案后,请求资源a的第一资源请求会被固定分发给第一资源服务器组,因此,资源a的请求可能会分发给资源服务器y或者z,可以分为如下两种情况:

1)、客户端发送的资源a的请求被分发到资源服务器y上,则此时资源服务器y为客户端返回更新后的资源a2。在该种情况下,客户端会请求更新后的资源b,即请求资源b2。资源b2的请求会被分发到资源服务器w或者x上(此时w和x均存在资源b2),故此时请求能正常返回,服务无损。

2)、客户端发送的资源a的请求被分发到资源服务器z上,则此时资源服务器z尚未更新资源,则资源服务器z为客户端返回资源a1。在该种情况下,客户端基于资源a1,会去请求资源b1。而资源b1的请求会被分发到w或者x上(此时w和x也存在资源b1),故此时请求能正常返回,服务无损。

由以上例子可见,通过本申请的方案可以大大减少资源请求异常的情况。而且,由于第一资源服务器组中50%的第一资源服务器上部署有新资源a2和b2,而50%的第一资源服务器上部署的是老资源a1和b1。通过分级发布,可以实现通过50%的新资源验证我们新资源对应新服务的可用性,从而达到即使新服务出现漏洞,也能保证仍然有50%的用户的服务可用。

当然,在实际应用中,通过增加第一资源服务器组的第一资源服务器的数量,便设置第一资源服务器组中完成资源更新的第一资源服务器的占比,可以灵活的控制获得新资源的新服务的用户的占比,如,降低该占比,以在资源更新上线的过程中,保证更多用户服务的稳定性,而仅通过少量用户来验证新资源所提供服务的可用性。

为了便于理解本申请的方案,下面结合一种应用场景进行说明,以网页请求服务这一场景为例。如图3,其示出了本申请一种资源请求分发方法又一个实施例的流程交互示意图,本实施例适用于网页服务平台中网页存在资源更新上线的场景。本实施例的方法可以包括:

s301,客户端向请求分发服务器发送网页请求。

该网页请求用于请求该网页的页面结构数据。如,该网页请求用于请求网页的http数据。

s302,请求分发服务器从页面结构数据对应的第一资源服务器中确定用于处理该网页请求的目标第一资源服务器,并将该网页请求分配给该目标第一资源服务器。

该第一资源服务器组包括多个第一资源服务器。

s303,目标第一资源服务器向客户端返回该网页的页面结构数据。

可以理解的是,网页请求服务场景中,如果网页请求为网页入口请求,而一台资源服务器中针对一个网页只能有一个网页入口,如果第一资源服务器中网页的页面结构数据更新之后,该第一资源服务器上不会存在新版本的网页入口。

相应的,如果目标第一资源服务器上已经完成该网页的资源更新上线,则目标第一资源服务器中存储的网页结构数据的新版本数据,在该种情况下,目标第一资源服务器会向客户端返回网页结构数据对应的新版本数据。

类似的,如果目标第一资源服务器上尚未完成该网页的资源更新上线,则目标第一资源服务器会向客户端返回网页结构数据对应的旧版本数据。

s304,客户端解析该页面结构数据,确定该页面结构数据所依赖的第二类资源以及第二类资源的版本信息,并向请求分发服务器发送第二资源请求。

其中,该第二类资源可以为网页内的格式或者行为数据的资源。如,第二类资源可以为网页内需要展现的图片资源或者加载网页所依据的样式脚本等数据。

可以理解的是,如果客户端获得的是页面结构数据的新版本数据,则通过解析该页面结构数据,客户端确定加载网页需要调用的图片或者样式等资源的最新版本,即页面结构数据中包含的是指向新版本的图片或者样式数据的信息。相应的,该第二资源请求用于请求新版本的第二类资源。

类似的,如果客户端获得的页面结构数据为旧版本数据,则第二类资源的版本信息为旧版本,则第二资源请求为请求旧版本的第二类资源。

s305,请求分发服务器从第二类资源对应的第二资源服务器组中确定用于处理该第二资源请求的目标第二资源服务器,并将该第二资源请求分配给该目标第二资源服务器。

该第二资源服务器组包括多个第二资源服务器。

s306,目标第二资源服务器依据该第二资源请求,为客户端返回相应版本的第二类资源。

在本申请中,相对第一资源服务器组,该第二资源服务器组被配置为优先完成网页对应资源的更新上线。

在本实施例中,针对网页中的图片以及样式等第二类资源,本申请中资源服务器可以采用增量更新的方式进行资源更新,其中,增量更新是指仅仅更新第二类资源的新版本中与旧版本的差异部分。采用增量更新的方式更新资源服务器中的第二类资源,可以减少资源更新上线所需的数据量,且使得资源服务器中既可以获得第二类资源的旧版本数据,又能够获得新版本数据。

可以理解的是,由于第二资源服务器组被配置为优先完成网页对应资源的更新上线,因此,在第一资源服务器组中存在完成网页的资源更新上线的第一资源服务器的情况下,则第二资源服务器组中各台第二资源服务器均已完成网页对应资源的更新上线,第二资源服务器中既可以提供第二类资源的新版本数据,又能够提供旧版本数据。基于此可知,目标第二资源服务器可以根据该第二资源请求,向客户端返回第二类资源的新版本数据或者旧版本数据,从而减少客户端请求资源异常的情况。

对应本申请的一种资源请求分发方法,本申请还提供了一种资源请求分发装置。

如图4所示,其示出了本申请一种资源请求分发装置一个实施例的组成结构示意图,该装置可以应用于请求分发服务器。该装置可以包括:

第一请求获得单元401,用于获得客户端发送的第一资源请求,所述第一资源请求用于请求业务服务的第一类资源;

第一组确定单元402,用于确定为所述第一类资源配置的第一资源服务器组,所述第一资源服务器组包括多个第一资源服务器;

第一请求分发单元403,用于从所述第一资源服务器组中确定用于处理所述第一资源请求的目标第一资源服务器,并将所述第一资源请求分配给所述目标第一资源服务器,以使得所述目标第一资源服务器为所述客户端返回所述第一类资源;

第二请求获得单元404,用于获得客户端发送的第二资源请求,所述第二资源请求用于请求所述业务服务的第二类资源,所述第二类资源为所述第一类资源所依赖的资源;

第二组确定单元405,用于确定为所述第二类资源配置的第二资源服务器组,所述第二资源服务器组中包括多个第二资源服务器,其中,在所述业务服务的资源存在更新的情况下,所述第二资源服务器组中各第二资源服务器被配置为资源更新的时间早于所述第一资源服务器组中各第二资源服务器中资源更新的时间;

第二请求分发单元406,用于从所述第二资源服务器组中确定用于处理所述第二资源请求的目标第二资源服务器,并将所述第二资源请求分配给所述目标第二资源服务器,以使得所述目标第二资源服务器为所述客户端返回所述第二类资源。

在一种可能的实现方式中,所述第一请求获得单元获得的所述第一类资源请求用于请求加载网页所需的页面结构数据;

所述第二请求获得单元获得的所述第二类资源请求用于请求加载网页所需的第二类资源,所述第二类资源为所述客户端基于所述页面结构数据解析出的,网页相关的样式或者行为数据。

在一种可能的实现方式中,在所述业务资源的更新上线的测试阶段,所述第一资源服务器组中存在至少一台已完成所述业务服务对应的资源更新的第一资源服务器。

在又一种可能的实现方式中,所述第一资源服务器和第二资源服务器采用资源覆盖更新的方式更新所述第一类资源,且所述第一资源服务器和第二资源服务器采用增量更新的方式更新所述第二类资源。

在又一种可能的实现方式中,第一请求分发单元在从所述第一资源服务器组中确定用于处理所述第一资源请求的目标第一资源服务器时,具体用于,按照所述第一资源服务器组中各第一资源服务器对应的第二先后顺序,确定当前待分配请求的第一资源服务器,将确定出的第一资源服务器确定为用于处理所述第一资源请求的目标第一资源服务器;

第二请求分发单元在从所述第二资源服务器组中确定用于处理所述第二资源请求的目标第二资源服务器时,具体用于,按照所述第二资源服务器组中各第二资源服务器对应的第二先后顺序,确定当前待分配请求的第二资源服务器,将确定出的第二资源服务器确定为用于处理所述第二资源请求的目标第二资源服务器。

又一方面,本申请还提供了一种服务器,该如图5,其示出了本申请提供的服务器的一种组成架构示意图。在图5中,该服务器500可以包括:处理器501和存储器502。

可选的,该服务器还可以包括:通信接口503、输入单元504和显示器505和通信总线506。

其中,处理器501、存储器502、通信接口503、输入单元504和显示器505均通过通信总线506完成相互间的通信。

在本申请实施例中,该处理器501,可以为中央处理器,特定应用集成电路等。

该处理器可以调用存储器502中存储的程序,具体的,处理器可以执行以上任意一个实施例的资源请求分发方法。

存储器502中用于存放一个或者一个以上程序,程序可以包括程序代码,所述程序代码包括计算机操作指令,在本申请实施例中,该存储器中至少存储有用于实现以上任意一个实施例中多媒体处理方法的程序。

在一种可能的实现方式中,该存储器502可包括存储程序区和存储数据区,其中,存储程序区可存储操作系统、以上所提到的程序等;存储数据区可存储根据请求分发服务器的使用过程中所创建的数据。

该通信接口503可以为通信模块的接口。

本申请还可以包括输入单元504,该输入单元可以包括触摸感应单元、键盘等等。

该显示器505包括显示面板,如触摸显示面板等。

当然,图5所示的服务器结构并不构成对本申请实施例中服务器的限定,在实际应用中服务器可以包括比图5所示的更多或更少的部件,或者组合某些部件。

另一方面,本申请还提供了一种存储介质,该存储介质中存储有计算机可执行指令,所述计算机可执行指令被处理器加载并执行时,实现如上任意一个实施例中的资源请求分发方法。

需要说明的是,本说明书中的各个实施例均采用递进的方式描述,每个实施例重点说明的都是与其他实施例的不同之处,各个实施例之间相同相似的部分互相参见即可。同时,本说明书中各实施例中记载的特征可以相互替换或者组合,使本领域专业技术人员能够实现或使用本申请。对于装置类实施例而言,由于其与方法实施例基本相似,所以描述的比较简单,相关之处参见方法实施例的部分说明即可。

最后,还需要说明的是,在本文中,诸如第一和第二等之类的关系术语仅仅用来将一个实体或者操作与另一个实体或操作区分开来,而不一定要求或者暗示这些实体或操作之间存在任何这种实际的关系或者顺序。而且,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、物品或者设备不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、物品或者设备所固有的要素。在没有更多限制的情况下,由语句“包括一个……”限定的要素,并不排除在包括要素的过程、方法、物品或者设备中还存在另外的相同要素。

对所公开的实施例的上述说明,使本领域技术人员能够实现或使用本发明。对这些实施例的多种修改对本领域技术人员来说将是显而易见的,本文中所定义的一般原理可以在不脱离本发明的精神或范围的情况下,在其它实施例中实现。因此,本发明将不会被限制于本文所示的这些实施例,而是要符合与本文所公开的原理和新颖特点相一致的最宽的范围。

以上仅是本发明的优选实施方式,应当指出,对于本技术领域的普通技术人员来说,在不脱离本发明原理的前提下,还可以做出若干改进和润饰,这些改进和润饰也应视为本发明的保护范围。

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