对象网关的负载处理方法及装置与流程

文档序号:21406726发布日期:2020-07-07 14:40阅读:145来源:国知局
对象网关的负载处理方法及装置与流程

本发明涉及分布式对象存储领域,具体而言,涉及一种对象网关的负载处理方法及装置。



背景技术:

在对象存储系统中,大部分客户端的访问策略并未充分考虑存储请求对客户端负载的动态变化。重要的是,不同业务的性能消耗差异较大、衡量压力水平的制约参数多,所以对象存储负载并不适合均摊请求。如果没有合理的负载机制,将不利于提高请求效率和增加资源利用率。

在对象存储系统领域,现有的负载算法包括:rr(轮循)、wrr(加权轮循)、ic(最小连接)、wlc(加权最小连接)、weight-round-robin(带权轮循)、soutce(原地址保持)、ri(请求url)、ip-hash(ip哈希)等。以上算法虽然可以在大部分业务场景下进行业务分压,但是由于对象存储业务的特殊性,上述算法并不能非常好的切合对象存储业务。比如,1条对象的put请求和5条对象head请求,如果不结合业务的运行数据,很难区分上述两例哪个对服务端的资源消耗更高。直白来讲,连接数或几个固定指标并不能真实体现出对象网关的压力等级。另外,现有技术中的对象负载模型如图1所示,其中,现有的对象网关负载系统并不能很好的根据业务负载情况,对网关节点进行弹性的压力调节。

针对上述的问题,目前尚未提出有效的解决方案。



技术实现要素:

本发明实施例提供了一种对象网关的负载处理方法及装置,以至少解决现有技术的对象存储系统,由于没有考虑客户端负载的动态变化,使得负载机制不合理,导致资源利用率低的技术问题。

根据本发明实施例的一个方面,提供了一种对象网关的负载处理方法,包括:对象存储负载熔断器接收到客户端的访问请求;上述对象存储负载熔断器基于上述访问请求从网关队列列表中选择网关,并将选中的网关信息反馈给上述客户端,其中,上述客户端基于上述选中的网关信息完成网络访问。

可选地,上述对象存储负载熔断器基于上述访问请求的类型,确定资源区间,其中,上述资源区间用于指示从上述网关队列列表中选定对应的队列来完成网关的选择,其中,上述网关队列列表中包括如下类型的队列:负载队列、降级队列和熔断队列。

可选地,上述方法还包括:上述对象存储负载熔断器根据探测数据,周期性的更新上述网关队列列表中的队列。

可选地,根据探测数据周期性的更新上述网关队列列表中的队列包括:读取探测器探测到的探测数据,其中,上述探测数据包括:探测负载参数和熔断参数得到的探测值;基于上述探测数据,计算上述网关队列列表中每个网关的开度值;基于每个上述网关的开度值动态更新上述网关队列列表中的队列。

可选地,上述负载参数包括:业务线程占用率、io连接数、cpu压力值和数据库延迟时间,上述熔断参数包括:内存占用率、网络延迟时间、进程报错、cpu压力值、数据库延迟时间和业务响应参数。

可选地,基于每个上述网关的开度值动态更新上述网关队列列表中的队列,包括:将上述开度值达到半连接开度值的网关,从上述负载队列中移动至上述降级队列;将上述开度值达到熔断阀值的网关,从上述负载队列中移除,并移动至上述熔断队列。

可选地,在将上述开度值达到熔断阀值的网关,从上述负载队列中移除,并移动至上述熔断队列之后,上述方法还包括:周期性探测上述熔断队列中网关的探测数据;基于上述熔断队列中网关的探测数据计算得到上述熔断队列中每个网关的开度值;基于上述开度值确定是否恢复上述熔断队列中的网关。

可选地,基于上述开度值确定是否恢复上述熔断队列中的网关,包括:如果按照预定次数周期性的探测到多个上述开度值均小于半连接开度值,则将上述熔断队列中的对应网关转入上述降级队列。

可选地,如果转入上述降级队列的网关再次出现熔断开度的情况,则再次熔断该网关;如果转入上述降级队列的网关的开度值持续保持在降级开度值以下,且达到预定时长,则将该网关转入上述负载队列。

根据本发明实施例的另一方面,还提供了一种对象网关的负载处理装置,包括:接收模块,用于接收到客户端的访问请求;处理模块,用于基于上述访问请求从网关队列列表中选择网关,并将选中的网关信息反馈给上述客户端,其中,上述客户端基于上述选中的网关信息完成网络访问。

根据本发明实施例的另一方面,还提供了一种存储介质,上述存储介质包括存储的程序,其中,在上述程序运行时控制上述存储介质所在设备执行任意一项上述对象网关的负载处理方法。

根据本发明实施例的另一方面,还提供了一种处理器,其特征在于,上述处理器用于运行程序,其中,上述程序运行时执行任意一项上述对象网关的负载处理方法。

在本发明实施例中,通过对象存储负载熔断器接收到客户端的访问请求;上述对象存储负载熔断器基于上述访问请求从网关队列列表中选择网关,并将选中的网关信息反馈给上述客户端,其中,上述客户端基于上述选中的网关信息完成网络访问,达到了充分考虑客户端负载的动态变化,提高负载机制的合理性的目的,从而实现了提高资源利用率的技术效果,进而解决了现有技术的对象存储系统,由于没有考虑客户端负载的动态变化,使得负载机制不合理,导致资源利用率低的技术问题。

附图说明

此处所说明的附图用来提供对本发明的进一步理解,构成本申请的一部分,本发明的示意性实施例及其说明用于解释本发明,并不构成对本发明的不当限定。在附图中:

图1是根据现有技术的一种对象负载模型的示意图;

图2是根据本发明实施例的一种对象网关的负载处理方法的流程图;

图3是根据本发明实施例的一种对象存储负载熔断器的示意图;

图4是根据本发明实施例的一种多个队列之间的关系示意图;

图5是根据本发明实施例的一种负载参数和熔断参数的关系示意图;

图6是根据本发明实施例的一种分布式对象存储系统的分层模型示意图;

图7是根据本发明实施例的一种对象网关的负载处理装置的结构示意图。

具体实施方式

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

需要说明的是,本发明的说明书和权利要求书及上述附图中的术语“第一”、“第二”等是用于区别类似的对象,而不必用于描述特定的顺序或先后次序。应该理解这样使用的数据在适当情况下可以互换,以便这里描述的本发明的实施例能够以除了在这里图示或描述的那些以外的顺序实施。此外,术语“包括”和“具有”以及他们的任何变形,意图在于覆盖不排他的包含,例如,包含了一系列步骤或单元的过程、方法、系统、产品或设备不必限于清楚地列出的那些步骤或单元,而是可包括没有清楚地列出的或对于这些过程、方法、产品或设备固有的其它步骤或单元。

首先,为方便理解本发明实施例,下面将对本发明中所涉及的部分术语或名词进行解释说明:

对象网关熔断器(objectgatewayfuse):熔断的作用类似于电器用的保险丝,当某对象网关节点出现不可用或响应超时的情况时,为了防止整个系统出现雪崩或影响客户端访问,需要对异常或超载节点进行熔断。

对象网关节点(objectgatewaynode):分布式对象存储系统有多个网关节点构成,每个对象存储网关都是对象存储系统的业务处理理者。

压力开度值(fusepressurevalue):对象存储网关节点在负载熔断系统中声明的压力值。

连接(nodeconnected):表示某个对象存储网关节点在负载熔断系统中,处于负载队列列中。该状态表征此节点可以响应客户端的全部请求。

半连接(nodesemi-connected):半连接状态是指对象网关被降级后所处的状态,该状态下的网关仅接受部分低压力请求,半连接状态的网关可以根据压力开度跃迁至连接状态或断开状态。

熔断/断开(nodedisconnect):是指压力开度值达到设计非容忍值(例如,熔断阈值)后的状态。在该状态下,停用客户端对该网关的业务访问直至节点恢复正常。

降级(nodedemotion):降级操作对应于半连接状态下对应的业务处理行为。被降级后的网关,仅支持轻量的对象存储请求,如headobject、setlifecycle等。

针对现有技术中的对象存储系统,由于没有考虑客户端负载的动态变化,使得负载机制不合理,导致资源利用率低的技术问题,本申请实施例提供了一种对象网关的负载处理方法及装置,本申请实施例中提供的负载均衡器可以真实的反应对象操作业务节点的整体压力,包含业务压力、硬件压力、网络性能、数据操作压力等。另外,本申请实施例中的负载熔断器还可以实现超压后的保护功能,例如,当某些网关达到指定压力值或出现异常后,可以自动对该网关进行降级处理,并可以进行降级后的自动恢复。

实施例1

根据本发明实施例,提供了一种对象网关的负载处理方法的实施例,需要说明的是,在附图的流程图示出的步骤可以在诸如一组计算机可执行指令的计算机系统中执行,并且,虽然在流程图中示出了逻辑顺序,但是在某些情况下,可以以不同于此处的顺序执行所示出或描述的步骤。

图2是根据本发明实施例的一种对象网关的负载处理方法的流程图,如图2所示,该方法包括如下步骤:

步骤s102,对象存储负载熔断器接收到客户端的访问请求;

步骤s104,上述对象存储负载熔断器基于上述访问请求从网关队列列表中选择网关,并将选中的网关信息反馈给上述客户端,其中,上述客户端基于上述选中的网关信息完成网络访问。

在本发明实施例中,通过对象存储负载熔断器接收到客户端的访问请求;上述对象存储负载熔断器基于上述访问请求从网关队列列表中选择网关,并将选中的网关信息反馈给上述客户端,其中,上述客户端基于上述选中的网关信息完成网络访问,达到了充分考虑客户端负载的动态变化,提高负载机制的合理性的目的,从而实现了提高资源利用率的技术效果,进而解决了现有技术的对象存储系统,由于没有考虑客户端负载的动态变化,使得负载机制不合理,导致资源利用率低的技术问题。

在一种可选的实施例中,上述对象存储负载熔断器基于上述访问请求的类型,确定资源区间,其中,上述资源区间用于指示从上述网关队列列表中选定对应的队列来完成网关的选择,其中,上述网关队列列表中包括如下类型的队列:负载队列、降级队列和熔断队列。

在本申请实施例中,当客户端访问对象存储负载熔断器时,该对象存储负载熔断器根据客户端请求类型,确定可以决策的资源区间。例如,对象的get/putobject请求的处理网关只能从负载队列选取,head对象和delete对象请求可以从负载队列和降级队列选取。需要说明的是,上述资源区间用于根据网关队列列表,选择合规的当前权重最高的网关返回给客户端,其中,会被访问的网关队列包含负载队列和降级队列。

作为一种可选的实施例,本申请实施例中的对象存储负载熔断器,还根据实时获取的权重数据和熔断探测数据,周期性的更新负载队列、降级队列、熔断队列。

在一种可选的实施例中,基于每个上述网关的开度值动态更新上述网关队列列表中的队列,包括:将上述开度值达到半连接开度值的网关,从上述负载队列中移动至上述降级队列;将上述开度值达到熔断阀值的网关,从上述负载队列中移除,并移动至上述熔断队列。

图3是根据本发明实施例的一种对象存储负载熔断器的示意图,可选的,如图3所示,该对象存储负载熔断器包括:负载器和熔断器;上述负载器与网关(如图3所示的对象网关)连接,上述熔断器用于周期拉取探测器的探测值,根据配置的开度算法计算网关的开度值。对于开度值达到半连接阀值的网关,移动至降级队列;对于开度达到熔断阀值的网关从负载队列移除。

通过本申请实施例,还可以在对象存储集群网关超压后,为该对象存储集群网关提供保护及恢复能力,其中,负载器侧重于提供对客户端提供稳定服务能力,熔断器侧重于提供对集群网关的自我保护。

作为一种可选的实施例,上述方法还包括:上述对象存储负载熔断器根据探测数据,周期性的更新上述网关队列列表中的队列。

在本申请实施例中,根据探测数据周期性的更新上述网关队列列表中的队列包括:

步骤s202,读取探测器探测到的探测数据,其中,上述探测数据包括:探测负载参数和熔断参数得到的探测值;

步骤s204,基于上述探测数据,计算上述网关队列列表中每个网关的开度值;基于每个上述网关的开度值动态更新上述网关队列列表中的队列。

作为一种可选的实施例,负载队列、降级队列、熔断队列之间的关系,可以但不限于如图4所示,其中,每个队列中的网关不重复,例如,若所有的网关包括:网关1、网关2、网关3、网关4、网关5、网关6和网关7,则负载队列中可以包括:网关1、网关2、网关3、网关5和网关7,降级队列中可以包括:网关4和网关8,熔断队列中则仅包括:网关6。

在将对象网关(即上述网关)进行熔断处理后,通过周期探测该对象网关的各项熔断参数(例如,数据库时延时间、io效率、业务线程占用率、硬件压力值等),并根据该各项熔断参数值计算对象网关的开度值,动态更新上述网关队列列表中的队列。

可选地,在将上述开度值达到熔断阀值的网关,从上述负载队列中移除,并移动至上述熔断队列之后,上述方法还包括:

步骤s302,周期性探测上述熔断队列中网关的探测数据;

步骤s304,基于上述熔断队列中网关的探测数据计算得到上述熔断队列中每个网关的开度值;

步骤s306,基于上述开度值确定是否恢复上述熔断队列中的网关。

可选地,基于上述开度值确定是否恢复上述熔断队列中的网关,包括:如果按照预定次数周期性的探测到多个上述开度值均小于半连接开度值,则将上述熔断队列中的对应网关转入上述降级队列。

可选地,如果转入上述降级队列的网关再次出现熔断开度的情况,则再次熔断该网关;如果转入上述降级队列的网关的开度值持续保持在降级开度值以下,且达到预定时长,则将该网关转入上述负载队列。

当开度值稳定小于降级开度值并稳定n分钟后,确定该对象网关熔断器进入半连接状态,并将该熔断网关以最低优先级加入降级队列,并每间隔一分钟根据探测值修改其开度值。在进行恢复的过程中:如果检测到该网关的开度值再次出现大于熔断开度值的情况,则再次熔断该网关,下次进入半连接状态,需要稳定时间为上次稳定时间的2倍;如果转入上述降级队列的网关的开度值持续保持在降级开度值以下,且达到预定时长,即如果开度状态一直保持在降级开度以下达n*2分钟后,将该网关从降级对列加入负载队列。

作为一种可选的实施例,负载队列根据负载参数计算负载优先级,熔断器根据熔断参数计算开度值。

可选地,如图5所示,上述负载参数包括:业务线程占用率、io连接数、cpu压力值和数据库延迟时间,上述熔断参数包括:内存占用率、网络延迟时间、进程报错、cpu压力值、数据库延迟时间和业务响应参数。其中,如图5所示,上述负载参数和熔断参数之间可以有交叉,交叉的参数即为cpu压力值、数据库延迟时间。

在一种可选的实施例中,分布式对象存储系统的分层模型如图6所示,该分布式对象存储系统包括:路由选择层(该路由选择层中包括负载决策层:熔断与恢复模块);权重算法与推送层,包括:权重计算模块和开度推送模块,监控探测层和监控子系统,路由选择模块,用于接收客户端的访问请求。

以下具体实施步骤结合分布式对象存储系统的实际应用与操作场景,对本申请实施例所提供的对象网关的负载处理方法进行示意性说明:

在本申请实施例中,当客户端访问对象存储负载熔断器时,该对象存储负载熔断器根据客户端请求类型,确定可以决策的资源区间。例如,对象的get/putobject请求的处理网关只能从负载队列选取,head对象和delete对象请求可以从负载队列和降级队列选取。需要说明的是,上述资源区间用于根据网关队列列表,选择合规的当前权重最高的网关返回给客户端,其中,会被访问的网关队列包含负载队列和降级队列。

熔断与恢复模块负责读取网关的开度值,并根据开度值调整网关的队列位置。若该网关的开度值达到熔断阀值的80%,将网关从负载队列移动到降级队列。若该网关的开度值达到熔断阀值的90%并持续10分钟后,将该网关移至熔断队列,若该网关的开度值达到熔断阀值的100%则瞬时熔断。

针对熔断后网关的恢复流程,可以再次探测熔断后网关的开度值,并进行如下处理:在网关被熔断后,间隔60s探测一次实时开度值。如果开度值小于半连接开度值,间隔60s,如果5次探测到的开度值均小于半连接开度至值,则将该熔断后网关移至降级队列。

权重算法与推送层,包括:权重计算模块,用于计算负载权重值,该负载权重值的计算方法可以但不限于如下所示:压力探针1读数*权重+压力探针2读数*权重+压力探针3读数*权重+…+自定义探针n读数*权重。

与上述负载权重值相似,熔断开度值的计算也需要读取探针数据,并匹配开度算法来计算。一般需要将开度值分为关键质变区间,对于不同区间的开度值使用不同的开度权重值进行计算,加权算法示例(mem开度加权)可以但不限于如下所示:

(91%至100%的开度值)*100(开度权重值),例如,95%*100=95;

(61%至80%的开度值)*50(开度权重值),例如,70%*50=35;

(21%至60%的开度值)*30(开度权重值),例如,30%*30=9;

(0至20%的开度值)*10(开度权重值),例如,10%*10=1。

需要说明的是,开度权重值越高表明该网关的压力越大,在同一队列中(负载队列、降级队列),权重值越大则表明被选中的概率越低。

上述权重算法与推送层,还包括:开度推送模块,用于将开度值数据主动推送给负载决策层,在开度值发生关键变化时,该业务被调用,强制更新负载队列、降级队列、熔断队列。在开度值数据和权重值变化只是常规变化时,周期性(例如,每2s)推送给负载决策层。

监控探测层包括:硬件探针、业务压力探针、io压力探针和探针插件,业务压力探针和io压力探针通过时序数据库抓取压力数据,并对时序数据库的探测数据进行聚合与结构封装。

监控子系统包括:数据库监测系统和数据io监控系统,用于负责将业务线程、子系统压力、元数据操作数实时写入时序数据库,后台高压业务在执行过程中,可能会发生高io或大量元数据操作,该部分业务压力数据作为独立子系统额外写入时序数据库。

其中,需要说明的是,本申请实施例中的术语均与对象存储产品对相应业务的定义一致。

通过本申请实施例,解决对象存储业务的负载系统无法反映节点真实压力,以及对象存储系统负载器无法可靠保护系统业务的问题;并且,针对对象存储业务的不同访问请求,进行定制负载策略与降级策略;由于熔断和降级机制的存在,极大增强系统弹性与抗压能力,最大化硬件效能。

实施例2

根据本发明实施例,还提供了一种用于实施上述对象网关的负载处理方法的装置实施例,图7是根据本发明实施例的一种对象网关的负载处理装置的结构示意图,如图7所示,上述对象网关的负载处理装置,包括:接收模块70和处理模块72,其中:

接收模块70,用于接收到客户端的访问请求;处理模块72,用于基于上述访问请求从网关队列列表中选择网关,并将选中的网关信息反馈给上述客户端,其中,上述客户端基于上述选中的网关信息完成网络访问。

需要说明的是,上述各个模块是可以通过软件或硬件来实现的,例如,对于后者,可以通过以下方式实现:上述各个模块可以位于同一处理器中;或者,上述各个模块以任意组合的方式位于不同的处理器中。

此处需要说明的是,上述接收模块70和处理模块72对应于实施例1中的步骤s102至步骤s104,上述模块与对应的步骤所实现的实例和应用场景相同,但不限于上述实施例1所公开的内容。需要说明的是,上述模块作为装置的一部分可以运行在计算机终端中。

需要说明的是,本实施例的可选或优选实施方式可以参见实施例1中的相关描述,此处不再赘述。

上述的对象网关的负载处理装置还可以包括处理器和存储器,上述接收模块70和处理模块72等均作为程序单元存储在存储器中,由处理器执行存储在存储器中的上述程序单元来实现相应的功能。

处理器中包含内核,由内核去存储器中调取相应的程序单元,上述内核可以设置一个或以上。存储器可能包括计算机可读介质中的非永久性存储器,随机存取存储器(ram)和/或非易失性内存等形式,如只读存储器(rom)或闪存(flashram),存储器包括至少一个存储芯片。

根据本申请实施例,还提供了一种存储介质实施例。可选地,在本实施例中,上述存储介质包括存储的程序,其中,在上述程序运行时控制上述存储介质所在设备执行上述任意一种对象网关的负载处理方法。

可选地,在本实施例中,上述存储介质可以位于计算机网络中计算机终端群中的任意一个计算机终端中,或者位于移动终端群中的任意一个移动终端中,上述存储介质包括存储的程序。

可选地,在程序运行时控制存储介质所在设备执行以下功能:对象存储负载熔断器接收到客户端的访问请求;上述对象存储负载熔断器基于上述访问请求从网关队列列表中选择网关,并将选中的网关信息反馈给上述客户端,其中,上述客户端基于上述选中的网关信息完成网络访问。

根据本申请实施例,还提供了一种处理器实施例。可选地,在本实施例中,上述处理器用于运行程序,其中,上述程序运行时执行上述任意一种对象网关的负载处理方法。

本申请实施例提供了一种设备,设备包括处理器、存储器及存储在存储器上并可在处理器上运行的程序,处理器执行程序时实现以下步骤:对象存储负载熔断器接收到客户端的访问请求;上述对象存储负载熔断器基于上述访问请求从网关队列列表中选择网关,并将选中的网关信息反馈给上述客户端,其中,上述客户端基于上述选中的网关信息完成网络访问。

本申请还提供了一种计算机程序产品,当在数据处理设备上执行时,适于执行初始化有如下方法步骤的程序:对象存储负载熔断器接收到客户端的访问请求;上述对象存储负载熔断器基于上述访问请求从网关队列列表中选择网关,并将选中的网关信息反馈给上述客户端,其中,上述客户端基于上述选中的网关信息完成网络访问。

上述本发明实施例序号仅仅为了描述,不代表实施例的优劣。

在本发明的上述实施例中,对各个实施例的描述都各有侧重,某个实施例中没有详述的部分,可以参见其他实施例的相关描述。

在本申请所提供的几个实施例中,应该理解到,所揭露的技术内容,可通过其它的方式实现。其中,以上所描述的装置实施例仅仅是示意性的,例如所述单元的划分,可以为一种逻辑功能划分,实际实现时可以有另外的划分方式,例如多个单元或组件可以结合或者可以集成到另一个系统,或一些特征可以忽略,或不执行。另一点,所显示或讨论的相互之间的耦合或直接耦合或通信连接可以是通过一些接口,单元或模块的间接耦合或通信连接,可以是电性或其它的形式。

所述作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个单元上。可以根据实际的需要选择其中的部分或者全部单元来实现本实施例方案的目的。

另外,在本发明各个实施例中的各功能单元可以集成在一个处理单元中,也可以是各个单元单独物理存在,也可以两个或两个以上单元集成在一个单元中。上述集成的单元既可以采用硬件的形式实现,也可以采用软件功能单元的形式实现。

所述集成的单元如果以软件功能单元的形式实现并作为独立的产品销售或使用时,可以存储在一个计算机可读取存储介质中。基于这样的理解,本发明的技术方案本质上或者说对现有技术做出贡献的部分或者该技术方案的全部或部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质中,包括若干指令用以使得一台计算机设备(可为个人计算机、服务器或者网络设备等)执行本发明各个实施例所述方法的全部或部分步骤。而前述的存储介质包括:u盘、只读存储器(rom,read-onlymemory)、随机存取存储器(ram,randomaccessmemory)、移动硬盘、磁碟或者光盘等各种可以存储程序代码的介质。

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

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