一种负载均衡方法及装置与流程



1.本技术涉及到云计算领域,具体而言,涉及一种负载均衡方法及装置。


背景技术:



2.本部分旨在为权利要求书中陈述的本发明实施例提供背景或上下文。此处的描述不因为包括在本部分中就承认是现有技术。
3.一般的,对于微服务体系下的远程调用框架,服务端部署的数量往往不止一台机器,因此在发起远程调用的时候必不可少的需要从多个地址中选择出一个地址来进行调用。关于地址筛选的过程主要可以分为如图2所示的两个阶段:路由筛选和负载均衡。路由筛选阶段的目的主要是对所有可以使用的目标地址进行筛选,如在国际化场景下因为合规的需要只能调用到同地域的服务端;负载均衡阶段的目的是从多个可用的目标地址中选择一个可用的地址进行本次调用。常见的负载均衡算法有:随机算法、基于权重的随机算法、一致性算法等。其中,基于权重的随机算法,可以通过权重计算,实现对服务端的选址。
4.对于大多数应用而言,在应用启动后的一段时间内由于初始化连接池、java的c1、c2编译等原因,会造成卡顿的现象,应用预热的目的就是为了减少这样的卡顿现象给业务带来的体验损失量。应用预热基于负载均衡规则中的权重计算来工作,在应用启动后的一段时间内降低其权重,可以让小流量先进入到机器对环境进行预热。然而在实际的部署场景中,由于权重计算是在每一次请求时进行的,其时间复杂度为o(n),在服务端部署规模较大的情况下,会带来严重的性能下降问题。


技术实现要素:



5.本技术实施例提供了一种负载均衡方法及装置,以至少解决现有技术中,在预热场景下,当服务端的量级和请求量都较大时,运行消耗计算资源较大的问题。
6.根据本技术的一个方面,还提供了一种负载均衡方法,包括:获取服务端的参数信息;所述参数信息包括服务端的地址、权重阈值和预热时长;基于所述权重阈值、所述预热时长和已预热时长,确定各服务端的实时权重,并根据所述实时权重对各服务端进行权重预分组,得到预分组结果;所述预分组结果中包括多个权重组;每个所述权重组中包括实时权重相同的一个或多个服务端的地址;收到调用请求时,利用动态路由结果和所述预分组结果确定每个所述权重组中的可用地址个数;所述动态路由结果中包括一个或多个可用地址;利用所述权重组的实时权重和与所述实时权重对应的可用地址个数,生成权重计算结果;按照所述权重计算结果确定所述调用请求的目标调用地址。
7.根据申请的另一个方面,还提供了一种计算机设备,包括存储器、处理器及存储在存储器上并可在处理器上运行的计算机程序,所述处理器执行所述计算机程序时实现上述的方法步骤。
8.根据本技术的另一个方面,还提供了一种计算机可读存储介质,所述计算机可读存储介质存储有计算机程序,所述计算机程序被处理器执行时实现上述的方法步骤。
9.根据本技术的另一个方面,还提供了一种计算机程序产品,所述计算机程序产品包括计算机程序,所述计算机程序被处理器执行时实现上述的方法步骤。
10.在本技术实施例中,首先,获取服务端的参数信息;所述参数信息包括服务端的地址、权重阈值和预热时长;之后,基于所述权重阈值、所述预热时长和已预热时长,确定各服务端的实时权重,并根据所述实时权重对各服务端进行权重预分组,得到预分组结果;所述预分组结果中包括多个权重组;每个所述权重组中包括实时权重相同的一个或多个服务端的地址;收到调用请求时,利用动态路由结果和所述预分组结果确定每个所述权重组中的可用地址个数;所述动态路由结果中包括一个或多个可用地址;利用所述权重组的实时权重和与所述实时权重对应的可用地址个数,生成权重计算结果;最后,按照所述权重计算结果确定所述调用请求的目标调用地址。本技术通过服务端参数信息中的权重阈值和预热时长,实现对地址的预分组处理,而采用预分组的方式,可以将权重计算过程中,大量的重复计算工作移到后台异步计算,有利于去除运行时繁重的遍历地址取参数的工作量,使得在集规模特别庞大时也可以以极低性能损耗运行,大幅减少调用时计算量;得到预分组结果之后,结合动态路由结果和预分组结果生成权重计算结果,进而实现负载均衡,为大规模部署场景下的预热计算提供有力支持。
附图说明
11.构成本技术的一部分的附图用来提供对本技术的进一步理解,本技术的示意性实施例及其说明用于解释本技术,并不构成对本技术的不当限定。在附图中:
12.图1是根据本技术实施例的负载均衡方法的流程图;
13.图2是根据本技术实施例的地址筛选过程示意图;
14.图3是根据本技术实施例的预热场景下的基于权重的随机算法的计算逻辑示意图;
15.图4是根据本技术实施例的预热场景下不同时机计算的权重示例图;
16.图5是根据本技术实施例的基于遍历选址方案的实现过程示意图;
17.图6是根据本技术实施例的基于二叉树查地址的方式示意图;
18.图7是根据本技术实施例的预分组结果示意图;
19.图8是根据本技术实施例的权重计算过程示意图;
20.图9是根据本技术实施例的存储结构示意图。
具体实施方式
21.需要说明的是,在不冲突的情况下,本技术中的实施例及实施例中的特征可以相互组合。下面将参考附图并结合实施例来详细说明本技术。
22.需要说明的是,在附图的流程图示出的步骤可以在诸如一组计算机可执行指令的计算机系统中执行,并且,虽然在流程图中示出了逻辑顺序,但是在某些情况下,可以以不同于此处的顺序执行所示出或描述的步骤。
23.考虑在现有技术中,权重计算广泛应用于涉及网络传输的产品中,在云原生微服务领域,如brpc(又称baidu-rpc,是百度开发一款远程过程调用网络框架)、grpc(是由google开发的一个高性能、通用的开源rpc框架)、envoy(是开源的边缘和服务代理,用于云
原生应用)等都有对应的基于权重选址的逻辑,brpc、grpc、envoy提供的普通的基于权重的选址均需要每次发起请求的时候遍历每个目标的权重信息,进行计算,在目标地址数量达到一定量级以后,每次请求的性能损耗将达到极高的程度,占用很大的一部分的资源。
24.图5是根据本技术实施例的基于遍历选址方案的实现过程示意图,主要可以分为参数读取、单一权重计算和权重筛选三个过程。参数读取是指从服务端的参数列表中读取出本次计算所需要的参数信息;单一权重计算是指基于单一地址的参数计算出当前该地址的权重,对于预热场景,此处计算需要考虑该服务端的启动后的累积时长,以此计算当前的权重;权重筛选阶段是指统计所有地址的权重信息,基于随机数选中一个服务端。参见图3所示的根据本技术实施例的预热场景下的基于权重的随机算法的计算逻辑示意图,首先是从服务端的参数列表中获取出最大权重、预热时间等参数,然后基于当前的时间计算出最新的权重信息,最后基于随机数选中一个服务端。参见图4所示的根据本技术实施例的预热场景下不同时机计算的权重示例图,图中包括在10秒、50秒以及100秒预热时刻的权重计算结果。图3和图4示出了遍历选址方案的实现步骤。
25.遍历选址方案在每次请求调用的过程中都需要对所有的地址进行计算,是一个时间复杂度为o(n)的算法(n为服务端地址量),当服务端n的量级和请求量都较大时,运行时会消耗大量的计算资源,导致基于权重预热的负载均衡方案无法广泛推广。
26.在现有技术中,brpc中提供了lalb(locality-aware load balancing)算法,权重筛选时使用了二叉树查算法,优化了单次调用时的性能,但是由于其权重信息是动态计算的,二叉树需要一直被重建维护,而且lalb算法不支持动态路由选址(在负载均衡前动态地摘除部分地址)。
27.图6为根据本技术实施例的基于二叉树查地址的方式示意图,此方式较前述遍历选址方案将权重的计算和权重的筛选流程分离开来,通过预先将每个地址的权重计算好,记录在二叉树中,二叉树每个节点记录了左子树的权值之和,这样在调用的时候就可以在o(logn)时间内完成查。但是该方案有一个较大的局限性:无法和动态路由一起工作,由于二叉树是预先计算好的,每个节点的左子树权重和也是固定的,不能在运行时动态的剔出部分节点,因此,此方案不适合在场景复杂的情况下使用。
28.在以下实施方式中,考虑到运行时遍历地址去参数,存在大量重复操作,为了优化性能,可以将权重计算中的一部分重复计算工作预先进行处理,因此,在一次取地址后,将地址信息进行预分组处理,保存其中的关键信息,进而,基于得到的预分组结果进行计算,避免在每次请求调用的过程中都需要对所有的地址进行计算,使得在集规模特别庞大时也可以以极低性能损耗开启权重筛选。另外,在以下实施方式中,结合动态路由结果进行负载均衡计算,因此,可以天然支持动态路由。
29.首先,对涉及的术语进行解释。
30.地址:rpc(remote procedure call protocol,远程过程调用协议)服务提供方的访问方式。
31.路由:根据一定的规则对服务提供方的地址进行筛选。
32.负载均衡:从多个地址中通过一定算法选择一个最佳地址,在请求量000达到一定程度后可以达到所有地址资源最大利用率。
33.在本实施例中提供了一种负载均衡方法,图1是根据本技术实施例的负载均衡方
法的流程图,下面对图1中所涉及到的方法步骤进行说明。
34.步骤s102,获取服务端的参数信息;所述参数信息包括服务端的地址、权重阈值和预热时长。
35.在该步骤中,服务端预先将调用涉及到的相关参数信息在注册中心进行注册,消费端从注册中心获取服务端的参数信息,其中,所述参数信息中包括服务端的地址、权重阈值和预热时长。服务端可以包括多台机器,每台机器对应一组参数信息。其中,权重阈值可以用于描述该组参数对应的服务端的机器性能,权重阈值较高的机器,能够执行较大的任务量。参见图7,对于图中第一个全量地址10.0.0.1,其所对应机器的权重阈值(图中以weight表示)为100,对于全量地址10.0.0.3,其所对应机器的权重阈值为50,则说明地址10.0.0.1对应的机器性能强于地址10.0.0.3对应的机器,能够承担的任务量相对较多,计算能力相对较强。预热时长可以用于描述机器完成预热需要花费的时长,例如,参见图7,对于图中第一个全量地址10.0.0.1,其所对应机器的预热时长为(图中以warmup time表示)为50。根据地址可以获知rpc服务提供方的访问方式。
36.步骤s104,基于所述权重阈值、所述预热时长和已预热时长,确定各服务端的实时权重,并根据所述实时权重对各服务端进行权重预分组,得到预分组结果;所述预分组结果中包括多个权重组;每个所述权重组中包括实时权重相同的一个或多个服务端的地址。
37.在该步骤中,预热过程从启动到结束所需要的时长为预热时长,已预热时长是从预热启动至当前时刻所花费的时长。基于已预热时长在预热时长中的占比,可以得知预热操作的进度。服务端的实时权重随预热操作的进度而变化,在预热结束时,服务端的实时权重达到权重阈值。因此,利用预热时长和已预热时长,可以得知服务端的性能占用占比,结合权重阈值,描述服务端的性能占用情况,即基于所述权重阈值、所述预热时长和已预热时长,确定各服务端的实时权重,实时权重可以用于描述预热阶段服务端的性能占用程度。在获取到服务端的地址之后,按照每个地址的实时权重对服务端的地址进行分组,记录分组后得到的预分组结果。其中,所述预分组结果中包括多个权重组;每个所述权重组中包括实时权重相同的一个或多个服务端的地址。
38.在预热场景下权重预分组行为需要在机器启动预热周期中不断执行。预分组处理阶段,可以由后台的独立线程维护。在服务端部署规模较大的情况下,基于预分组处理,可以将一半以上的重复计算工作移到后台异步计算,降低计算量,提升处理效率。在执行一次获取服务端的参数信息的操作之后,基于获得的参数计算实时权重,进而得到预分组结果,该预分组结果可用于后续权重计算步骤。通过对预热类权重的计算进行预计算,缓解运行时多次遍历地址的情况,减少消费端取地址的频次,并且大幅减少调用时计算量。
39.步骤s106,收到调用请求时,利用动态路由结果和所述预分组结果确定每个所述权重组中的可用地址个数;所述动态路由结果中包括一个或多个可用地址。
40.在该步骤中,收到调用请求时,启动为该调用请求分配目标调用地址。在进行负载均衡前,已经通过动态路由,对服务端的地址信息进行筛选得到动态路由结果。该动态路由结果中剔除了服务端不可用的或不符合使用条件的地址信息,动态路由结果中包括一个或多个可用地址。而预分组结果中,是对服务端所有地址进行分组,得到多个权重组,基于动态路由结果和多个权重组,剔除权重组中不可用的地址,进而得到每个所述权重组中的可用地址个数。
41.在上述步骤中,动态路由的步骤会剔除掉一部分不可用的地址,该步骤基于动态路由结果,将预分组结果的每个权重组中不可用的地址同样剔除出去,基于动态路由结果筛选预分组结果中的可用地址,天然支持动态路由。该步骤可以快速筛选出可用的地址,较遍历计算方案复杂度从o(n)压缩到接近o(1),其中n为服务端机器数量,使得在集规模特别庞大时也可以以极低性能损耗开启权重筛选。
42.步骤s108,利用所述权重组的实时权重和与所述实时权重对应的可用地址个数,生成权重计算结果。
43.在该步骤中,由于每个权重组中都具有相同实时权重的一个或多个地址,因此,对于同一权重组,可以利用同一权重组中可用地址的个数和该组的权重值生成分组权重值,对所有权重组的分组权重值求和,即可得到权重计算结果。
44.在上述步骤中,利用所述权重组的实时权重和与所述实时权重对应的可用地址个数,生成权重计算结果,避免对所有服务端都进行完整的预热权重计算,提升了预热场景下的权重计算效率。
45.在具体实施时,可以参照图8所示的权重计算过程示意图,权重值为20的权重组中可用地址的个数为2,基于权重值20和可用地址个数2计算得到该组的分组权重值为40。按照相同的方法,计算得出每个分组的总权重值。如图8所示,动态路由的结果值剩下3个地址,权重20的分组比对后只剩下2个地址,权重10的分组比对后不存在地址,权重5的分组对比后只剩下1个地址,进而可以得出每个分组的总权重值分别为40、0、5,动态路由结果的总权重值为45,也即权重计算结果为45。
46.步骤s110,按照所述权重计算结果确定所述调用请求的目标调用地址。
47.在该步骤中,权重计算结果的生成,基于预分组处理结果实现,而得到预分组处理结果需要基于权重阈值、已预热时长和预热时长,因此,基于权重计算结果得到的目标调用地址,可以应用在预热场景下,为预热计算提供有力支持。
48.需要说明的是,基于权重的随机算法延伸可以实现服务端预热功能,其目的是在服务端刚启动的时候通过降低权重,仅允许小流量进入,在服务端运行时优化都处理完毕后(如连接池、java c2编译等)再放入全量流量,以此来降低由于启动卡顿带来的影响。
49.本技术提供了一种负载均衡方法,该方法首先,获取服务端的参数信息;所述参数信息包括服务端的地址、权重阈值和预热时长;之后,基于所述权重阈值、所述预热时长和已预热时长,确定各服务端的实时权重,并根据所述实时权重对各服务端进行权重预分组,得到预分组结果;所述预分组结果中包括多个权重组;每个所述权重组中包括实时权重相同的一个或多个服务端的地址;收到调用请求时,利用动态路由结果和所述预分组结果确定每个所述权重组中的可用地址个数;所述动态路由结果中包括一个或多个可用地址;利用所述权重组的实时权重和与所述实时权重对应的可用地址个数,生成权重计算结果;最后,按照所述权重计算结果确定所述调用请求的目标调用地址。本技术通过服务端参数信息中的权重阈值和预热时长,实现对地址的预分组处理,而采用预分组的方式,可以将权重计算过程中,大量的重复计算工作移到后台异步计算,有利于去除运行时繁重的遍历地址取参数的工作量,使得在集规模特别庞大时也可以以极低性能损耗运行,大幅减少调用时计算量;得到预分组结果之后,结合动态路由结果和预分组结果生成权重计算结果,进而实现负载均衡,为大规模部署场景下的预热计算提供有力支持。
50.考虑到为了进一步提升权重计算的效率,作为一个可选的实施方式,利用动态路由结果和所述预分组结果确定每个所述权重组中的可用地址个数,按照如下步骤执行:
51.若动态路由结果与所述权重组中存在相同的地址,则将该相同的地址作为可用地址;统计每个权重组中可用地址的个数。
52.在该步骤中,将动态路由结果分别和每个权重组进行对比,将相同的地址作为可用地址,将每个权重组中不相同的地址剔除掉,之后,统计每个权重组中可用地址的个数。
53.该步骤在具体实施时,例如,参见图8所示的根据本技术实施例的权重计算过程示意图,将动态路由结果与权重值为20的权重组进行对比,筛选掉图中权重为20的虚线框对应的地址。在进行调用的时候,通过将动态路由的结果和每一组的权重结果进行比对,可以快速得出每个分组下当前剩余的地址数,即得到可用地址个数。
54.在一个可选实施方式中,若动态路由结果与所述权重组中存在相同的地址,则将该相同的地址作为可用地址,可以按照如下步骤执行:
55.对服务端的地址进行排序,得到排序信息;按照所述排序信息,利用二进制位分别标记所述动态路由结果中和每个所述权重组中所述服务端的地址的存在状态;若标记后的动态路由结果和标记后的权重组在相同排序位置的二进制值相同,则将权重组中该排序位置的地址作为可用地址。
56.在该步骤中,对服务端的地址进行排序,可以按照预设的排序规则,例如,可以按照地址的序号进行排序,或者按照随机分布的顺序进行排序,排序后记录得到的排序信息,利用二进制位按照排序信息的顺序,标记动态路由结果,得到二进制的标记结果,比如,若地址存在,则标记为“1”,若地址不存在,则标记为“0”。对每个权重组中的地址,也利用二进制位按照排序信息的顺序进行标记,得到二进制的标记结果,标记方法同上,在此不再赘述。最终,利用标记后的动态路由结果和标记后的权重组按照排序位置进行对比,以得到可用地址,即若标记后的动态路由结果和标记后的权重组在相同排序位置的二进制值相同,则将权重组中该排序位置的地址作为可用地址。在一个可选实施方式中,若标记后的动态路由结果和标记后的权重组在相同排序位置的二进制值相同,则将权重组中该排序位置的地址作为可用地址,包括:将标记后的动态路由结果分别与每个标记后的权重组按位进行与操作,以判断相同排序位置的二进制值是否相同。
57.在该步骤中,运行时采用位运算快速比对得出每个分组下真实可用的地址,天然支持路由动态计算。本技术实施例由于采用位运算进行比对,避免对每个地址都进行遍历,在获取总权重值的时候将时间复杂度从o(n)需要遍历每个节点压缩到简单的cpu底层的与指令,实际耗时接近o(1),受集规模影响较小,以此来为大规模部署场景下的预热计算提供有力支持。
58.该步骤在具体实施时,参见图9所示的根据本技术实施例的存储结构示意图,该图为本技术方案所对应的存储结构,本技术方案中用二进制位标记每一个地址是否存在,对于有5个地址情况,如果二进制存储位为00100,则代表仅第3位所在的地址是存在的,其他都被筛选掉了。
59.以图9为例子,动态路由结果原始有三个,分别对应第1、4、5位的地址,其对应的二进制存储位为10011;对于权重为20的分组缓存的地址结果原始有三个,分别对应第1、2、5位地址,其对应的二进制存储位为11001;类似的,权重10的分组存储值为00100,代表第3个
地址在当前分组中存在;权重5的分组存储值为00010,代表第4个地址在当前分组中存在。动态路由结果标记为10011,代表路由结果仅存在第1、4、5个地址。
60.在将每组地址分别用二进制存储位表示后,通过二进制与操作可以快速得出两个结果组之间的交集,如10011和11001进行与操作得到10001,表示第1、5位是共同存在。基于此将每个分组的二进制数值与动态路由结果按位进行与操作,即可以得到每个分组在当前动态路由结果下剩余的地址信息。最终可以得出每组权重下的当前实际存在地址数。
61.在得到地址数量之后,基于分组本身的权重属性,可以得出分组的总权重值,进而得到所有分组的总权重值。
62.权重预分组阶段的工作主要是对每个地址的实时权重进行计算,为了得到随机器预热进行而更新的权重信息,作为一个可选的实施方式,基于所述权重阈值、所述预热时长和已预热时长,确定各服务端的实时权重,并根据所述实时权重对各服务端进行权重预分组,按照如下步骤执行:根据预热时长和已预热时长计算权重系数;利用所述权重系数和所述权重阈值计算服务端每个地址的实时权重;将所述实时权重相同的地址添加至同一个权重组中。
63.在该步骤中,已预热时长可以表示预热阶段执行的进度。据预热时长和已预热时长计算权重系数,具体计算权重系数的方法可以根据实际需求进行选择,本技术实施例在此不做具体限定。在具体实施时,可以将已预热时长和预热时长的比值作为权重系数。需要说明的是,权重系数的值不超过1。之后,利用所述权重系数和所述权重阈值计算服务端每个地址的实时权重;将所述实时权重相同的地址添加至同一个权重组中,从而得到多组权重组。
64.该步骤在具体实施时,参见图7所示的根据本技术实施例的预分组结果示意图,图7为预热时刻为10s时的权重分布,权重计算结果为20的有3个地址,权重计算结果为10的有1个地址,权重计算结果为5的有1个地址。该步骤采用权重预分组的方式,将权重计算一半以上的重复计算工作移到后台异步计算,有利于去除运行时繁重的遍历地址取参数的热点,可以有效降低计算量。
65.本技术实施例在预热场景下权重预分组行为需要在机器启动预热周期中不断执行,但对于大规模部署的集,单机的权重并不是要求需要特别高的精确度,因此权重预计算的频率并不高,而且时效性要求也较低。(对比brpc中lalb算法,由于lalb算法的时间窗口小、集流量调度依赖权重的精度,无法在集规模大的情况下部署。)因此,为了进一步减少性能损耗,作为一种可选的实施方式,该方法还可以执行如下步骤:
66.当每个服务端的所述已预热时长大于所述预热时长时,若收到调用请求,则利用随机算法,基于所述动态路由结果,生成权重计算结果。
67.在该步骤中,若当每个服务端的所述已预热时长大于所述预热时长时,则表示预热阶段已结束,预热阶段结束之后,后台计算线程发现所有地址权重都一致时,即所有地址的实时权重均达到权重阈值,不再变化时,本技术实施例会自动退化到普通随机算法,调用时不再比对分组结果,而是基于动态路由结果和随机算法直接进行权重计算,从而进一步减少性能损耗。本技术实施例通过定期检测权重的结果,在全局权重都一样时,快速跳过权重计算逻辑,避免出现不必要的计算。
68.在得到权重计算结果后,作为一种可选的实施方式,按照所述权重计算结果确定
service framework)等相关产品中,该方法将权重的计算拆分为权重预分组阶段和权重比对阶段,权重预分组阶段由后台线程独立维护,该方法对权重进行预分组,基于位运算快速匹配可用服务器的权重,在计算机器权重阶段,较遍历计算方案复杂度从o(n)压缩到接近o(1),使得在集规模特别庞大时也可以以极低性能损耗开启权重筛选。另外,该方法使常0态化权重计算变成可能,并且该方法支持路由动态计算,具备复杂场景下落地的能力。
81.在本实施例中提供一种电子设备,包括存储器、处理器及存储在存储器上并可在处理器上运行的计算机程序,所述处理器执行所述计算机程序时实现以上实施例中的方法。
82.上述程序可以运行在处理器中,或者也可以存储在存储器中(或称为计算机可读介质),计算机可读介质包括永久性和非永久性、可移动和非可移动媒体可以由任何方法或技术来实现信息存储。信息可以是计算机可读指令、数据结构、程序的模块或其他数据。计算机的存储介质的例子包括,但不限于相变内存(pram)、静态随机存取存储器(sram)、动态随机存取存储器(dram)、其他类型的随机存取存储器(ram)、只读存储器(rom)、电可擦除可编程只读存储器(eeprom)、快闪记忆体或其他内存技术、只读光盘只读存储器(cd-rom)、数字多功能光盘(dvd)或其他光学存储、磁盒式磁带,磁带磁盘存储或其他磁性存储设备或任何其他非传输介质,可用于存储可以被计算设备访问的信息。按照本文中的界定,计算机可读介质不包括暂存电脑可读媒体(transitory media),如调制的数据信号和载波。
83.这些计算机程序也可装载到计算机或其他可编程数据处理设备上,使得在计算机或其他可编程设备上执行一系列操作步骤以产生计算机实现的处理,从而在计算机或其他可编程设备上执行的指令提供用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的步骤,对应与不同的步骤可以通过不同的模块来实现。
84.该本实施例中就提供了这样的一种装置。该装置被称作是一种负载均衡装置,该装置包括:参数获取模块,用于获取服务端的参数信息;所述参数信息包括服务端的地址、权重阈值和预热时长;预分组模块,用于基于所述权重阈值、所述预热时长和已预热时长,确定各服务端的实时权重,并根据所述实时权重对各服务端进行权重预分组,得到预分组结果;所述预分组结果中包括多个权重组;每个所述权重组中包括实时权重相同的一个或多个服务端的地址;比对模块,用于利用动态路由结果和所述预分组结果确定每个所述权重组中的可用地址个数;所述动态路由结果中包括一个或多个可用地址;权重计算模块,利用所述权重组的实时权重和与所述实时权重对应的可用地址个数,生成权重计算结果;负载均衡模块,用于按照所述权重计算结果确定所述调用请求的目标调用地址。
85.该系统或者装置用于实现上述的实施例中的方法的功能,该系统或者装置中的每个模块与方法中的每个步骤相对应,已经在方法中进行过说明的,在此不再赘述。
86.可选地,利用动态路由结果和所述预分组结果确定每个所述权重组中的可用地址个数,包括:若动态路由结果与所述权重组中存在相同的地址,则将该相同的地址作为可用地址;统计每个权重组中可用地址的个数。
87.可选地,若动态路由结果与所述权重组中存在相同的地址,则将该相同的地址作为可用地址,包括:对服务端的地址进行排序,得到排序信息;按照所述排序信息,利用二进制位分别标记所述动态路由结果中和每个所述权重组中所述服务端的地址的存在状态;若标记后的动态路由结果和标记后的权重组在相同排序位置的二进制值相同,则将权重组中
该排序位置的地址作为可用地址。
88.可选地,若标记后的动态路由结果和标记后的权重组在相同排序位置的二进制值相同,则将权重组中该排序位置的地址作为可用地址,包括:将标记后的动态路由结果分别与每个标记后的权重组按位进行与操作,以判断相同排序位置的二进制值是否相同。
89.可选地,基于所述权重阈值、所述预热时长和已预热时长,确定各服务端的实时权重,并根据所述实时权重对各服务端进行权重预分组,包括:根据预热时长和已预热时长计算权重系数;利用所述权重系数和所述权重阈值计算服务端每个地址的实时权重;将所述实时权重相同的地址添加至同一个权重组中。
90.可选地,还包括:当每个服务端的所述已预热时长大于所述预热时长时,若收到调用请求,则利用随机算法,基于所述动态路由结果,生成权重计算结果。
91.可选地,按照所述权重计算结果确定所述调用请求的目标调用地址,包括:利用所述权重计算结果生成权重值范围;利用目标随机算法在所述权重值范围内确定目标权重;根据所述预分组结果中的实时权重和所述目标权重确定所述调用请求的目标调用地址。
92.可选地,根据所述预分组结果中的实时权重和所述目标权重确定所述调用请求的目标调用地址,包括:按照预分组处理结果中的实时权重对服务端的地址信息进行排序,得到地址排序结果;按照所述地址排序结果对服务端的一个或多个地址的实时权重求和,得到求和结果;当所述求和结果不小于所述目标权重时,将所述计算结果对应的地址信息确定为目标调用地址。
93.可选地,根据所述预分组结果中的实时权重和所述目标权重确定所述调用请求的目标调用地址,包括:利用二叉树记录所述预分组结果中每个地址的实时权重;基于所述二叉树和所述目标权重计算所述调用请求的目标调用地址。
94.可选地,利用所述权重组的实时权重和与所述实时权重对应的可用地址个数,生成权重计算结果,包括:利用权重组的实时权重和与所述实时权重对应的可用地址个数的乘积计算分组权重值;对所有所述分组权重值求和,得到权重计算结果。
95.可选地,按照所述权重计算结果确定所述调用请求的目标调用地址之后,还包括:根据所述目标调用地址,对服务端进行调用。
96.通过上述实施例解决了现有技术中,预热场景下,当服务端的量级和请求量都较大时,运行消耗计算资源较大的问题。本技术上述实施例通过服务端参数信息中的地址、权重阈值和预热时长,实现对地址信息的预分组处理,而采用预分组的方式,可以将权重计算过程中,大量的重复计算工作移到后台异步计算,有利于去除运行时繁重的遍历地址取参数的工作量,使得在集规模特别庞大时也可以以极低性能损耗运行,大幅减少调用时计算量;得到预分组结果之后,结合动态路由结果和预分组结果生成权重计算结果,进而实现负载均衡,为大规模部署场景下的预热计算提供有力支持。
97.在本实施例中还提供一种计算机可读存储介质,所述计算机可读存储介质存储有计算机程序,所述计算机程序被处理器执行时实现以上实施例中的方法。
98.在本实施例中还提供一种计算机程序产品,所述计算机程序产品包括计算机程序,所述计算机程序被处理器执行时实现上述实施例中的方法。
99.以上仅为本技术的实施例而已,并不用于限制本技术。对于本领域技术人员来说,本技术可以有各种更改和变化。凡在本技术的精神和原理之内所作的任何修改、等同替换、
改进等,均应包含在本技术的权利要求范围之内。

技术特征:


1.一种负载均衡方法,其特征在于,包括:获取服务端的参数信息;所述参数信息包括服务端的地址、权重阈值和预热时长;基于所述权重阈值、所述预热时长和已预热时长,确定各服务端的实时权重,并根据所述实时权重对各服务端进行权重预分组,得到预分组结果;所述预分组结果中包括多个权重组;每个所述权重组中包括实时权重相同的一个或多个服务端的地址;收到调用请求时,利用动态路由结果和所述预分组结果确定每个所述权重组中的可用地址个数;所述动态路由结果中包括一个或多个可用地址;利用所述权重组的实时权重和与所述实时权重对应的可用地址个数,生成权重计算结果;按照所述权重计算结果确定所述调用请求的目标调用地址。2.根据权利要求1所述的方法,其特征在于,利用动态路由结果和所述预分组结果确定每个所述权重组中的可用地址个数,包括:若动态路由结果与所述权重组中存在相同的地址,则将该相同的地址作为可用地址;统计每个权重组中所述可用地址的个数。3.根据权利要求2所述的方法,其特征在于,若动态路由结果与所述权重组中存在相同的地址,则将该相同的地址作为可用地址,包括:对服务端的地址进行排序,得到排序信息;按照所述排序信息,利用二进制位分别标记所述动态路由结果中和每个所述权重组中所述服务端的地址的存在状态;若标记后的动态路由结果和标记后的权重组在相同排序位置的二进制值相同,则将权重组中该排序位置的地址作为可用地址。4.根据权利要求3所述的方法,其特征在于,若标记后的动态路由结果和标记后的权重组在相同排序位置的二进制值相同,则将权重组中该排序位置的地址作为可用地址,包括:将标记后的动态路由结果分别与每个标记后的权重组按位进行与操作,以判断相同排序位置的二进制值是否相同。5.根据权利要求1所述的方法,其特征在于,基于所述权重阈值、所述预热时长和已预热时长,确定各服务端的实时权重,并根据所述实时权重对各服务端进行权重预分组,包括:根据预热时长和已预热时长计算权重系数;利用所述权重系数和所述权重阈值计算服务端每个地址的实时权重;将所述实时权重相同的地址添加至同一个权重组中。6.根据权利要求1所述的方法,其特征在于,还包括:当每个服务端的所述已预热时长大于所述预热时长时,若收到调用请求,则利用随机算法,基于所述动态路由结果,生成权重计算结果。7.根据权利要求1所述的方法,其特征在于,按照所述权重计算结果确定所述调用请求的目标调用地址,包括:利用所述权重计算结果生成权重值范围;利用目标随机算法在所述权重值范围内确定目标权重;根据所述预分组结果中的实时权重和所述目标权重确定所述调用请求的目标调用地
址。8.根据权利要求7所述的方法,其特征在于,根据所述预分组结果中的实时权重和所述目标权重确定所述调用请求的目标调用地址,包括:按照预分组处理结果中的实时权重对服务端的地址信息进行排序,得到地址排序结果;按照所述地址排序结果对服务端的一个或多个地址的实时权重求和,得到求和结果;当所述求和结果不小于所述目标权重时,将所述计算结果对应的地址信息确定为目标调用地址。9.根据权利要求7所述的方法,其特征在于,根据所述预分组结果中的实时权重和所述目标权重确定所述调用请求的目标调用地址,包括:利用二叉树记录所述预分组结果中每个地址的实时权重;基于所述二叉树和所述目标权重计算所述调用请求的目标调用地址。10.根据权利要求1所述的方法,其特征在于,利用所述权重组的实时权重和与所述实时权重对应的可用地址个数,生成权重计算结果,包括:利用权重组的实时权重和与所述实时权重对应的可用地址个数的乘积计算分组权重值;对所有所述分组权重值求和,得到权重计算结果。11.根据权利要求1-10中任一项所述的方法,其特征在于,按照所述权重计算结果确定所述调用请求的目标调用地址之后,还包括:根据所述目标调用地址,对服务端进行调用。12.一种电子设备,包括存储器、处理器及存储在存储器上并可在处理器上运行的计算机程序,其特征在于,所述处理器执行所述计算机程序时实现权利要求1至11任一所述的方法步骤。13.一种计算机可读存储介质,其特征在于,所述计算机可读存储介质存储有计算机程序,所述计算机程序被处理器执行时实现权利要求1至11任一所述的方法步骤。14.一种计算机程序产品,其特征在于,所述计算机程序产品包括计算机程序,所述计算机程序被处理器执行时实现权利要求1至11任一所述的方法步骤。

技术总结


本申请公开了一种负载均衡方法及装置,涉及云计算技术领域,该方法包括:获取服务端的参数信息;确定各服务端的实时权重,根据实时权重对各服务端进行权重预分组;收到调用请求时,利用动态路由结果和预分组结果确定每个权重组中的可用地址个数;利用权重组的实时权重和与实时权重对应的可用地址个数,生成权重计算结果;按照权重计算结果确定调用请求的目标调用地址。本申请采用预分组的方式,将权重计算过程中,大量的重复计算工作移到后台异步计算,去除运行时繁重的遍历地址取参数的工作量,使得在集规模特别庞大时也可以以极低性能损耗运行,结合动态路由结果和预分组结果生成权重计算结果,为大规模部署场景下的预热计算提供有力支持。算提供有力支持。算提供有力支持。


技术研发人员:

江河清 刘军 郭浩 罗毅

受保护的技术使用者:

阿里巴巴(中国)有限公司

技术研发日:

2022.10.14

技术公布日:

2023/2/23

本文发布于:2024-09-20 15:44:10,感谢您对本站的认可!

本文链接:https://www.17tex.com/tex/4/60524.html

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。

标签:权重   所述   地址   服务端
留言与评论(共有 0 条评论)
   
验证码:
Copyright ©2019-2024 Comsenz Inc.Powered by © 易纺专利技术学习网 豫ICP备2022007602号 豫公网安备41160202000603 站长QQ:729038198 关于我们 投诉建议