CN111355814A - 一种负载均衡方法、装置及存储介质 - Google Patents

一种负载均衡方法、装置及存储介质 Download PDF

Info

Publication number
CN111355814A
CN111355814A CN202010316201.8A CN202010316201A CN111355814A CN 111355814 A CN111355814 A CN 111355814A CN 202010316201 A CN202010316201 A CN 202010316201A CN 111355814 A CN111355814 A CN 111355814A
Authority
CN
China
Prior art keywords
service instance
time
service
response
instance
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Granted
Application number
CN202010316201.8A
Other languages
English (en)
Other versions
CN111355814B (zh
Inventor
李永华
高凡石
陈科锦
孙根
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Shanghai Fortune Techgroup Co ltd
Original Assignee
Shanghai Fortune Techgroup Co ltd
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Shanghai Fortune Techgroup Co ltd filed Critical Shanghai Fortune Techgroup Co ltd
Priority to CN202010316201.8A priority Critical patent/CN111355814B/zh
Publication of CN111355814A publication Critical patent/CN111355814A/zh
Application granted granted Critical
Publication of CN111355814B publication Critical patent/CN111355814B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L67/00Network arrangements or protocols for supporting network services or applications
    • H04L67/01Protocols
    • H04L67/10Protocols in which an application is distributed across nodes in the network
    • H04L67/1001Protocols in which an application is distributed across nodes in the network for accessing one among a plurality of replicated servers
    • H04L67/1004Server selection for load balancing
    • H04L67/1008Server selection for load balancing based on parameters of servers, e.g. available memory or workload
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L67/00Network arrangements or protocols for supporting network services or applications
    • H04L67/01Protocols
    • H04L67/10Protocols in which an application is distributed across nodes in the network
    • H04L67/1001Protocols in which an application is distributed across nodes in the network for accessing one among a plurality of replicated servers
    • H04L67/1004Server selection for load balancing
    • H04L67/101Server selection for load balancing based on network conditions

Landscapes

  • Engineering & Computer Science (AREA)
  • Computer Networks & Wireless Communication (AREA)
  • Signal Processing (AREA)
  • Computer Hardware Design (AREA)
  • General Engineering & Computer Science (AREA)
  • Computer And Data Communications (AREA)

Abstract

本公开涉及一种负载均衡方法、装置及存储介质,其中,该方法包括:根据服务实例列表中各服务实例的等待时间及响应时间,确定目标服务实例,其中,服务实例的等待时间包括该服务实例距离上一次接收服务请求的时间间隔,服务实例的响应时间包括该服务实例从开始处理服务请求到该服务请求处理结束的时间;将当前接收到的服务请求下发至目标服务实例。本公开中,响应时间反应了服务实例在包括自身能力和网络波动等综合因素影响下的实际处理能力,等待时间反应了服务实例的空闲情况;将等待时间和响应时间作为选择目标服务实例的依据,从而保证了服务请求分发的稳定性、均衡性,提高了分发效率。

Description

一种负载均衡方法、装置及存储介质
技术领域
本公开涉及计算机技术领域,尤其涉及一种负载均衡方法、装置及存储介质。
背景技术
在微服务技术体系中,通过负载均衡来实现系统的高可用性,集群扩容等功能。相关技术中,采用随机或轮询等方式实现负载均衡,然而,由于各服务实例的处理能力不同以及网络状况的波动,导致现有负载均衡方式服务请求分发的效率低、稳定性差。
发明内容
有鉴于此,本公开提出了一种负载均衡方法、装置及存储介质。
根据本公开的一方面,提供了一种负载均衡方法,所述方法包括:
根据服务实例列表中各服务实例的等待时间及响应时间,确定目标服务实例,其中,服务实例的等待时间包括该服务实例距离上一次接收服务请求的时间间隔,服务实例的响应时间包括该服务实例从开始处理服务请求到该服务请求处理结束的时间;
将当前接收到的服务请求下发至所述目标服务实例。
在一种可能的实现方式中,所述根据服务实例列表中各服务实例的等待时间及响应时间,确定目标服务实例,包括:
根据各服务实例处理最近预设次数的服务请求的响应时间,以及各服务实例的等待时间,确定目标服务实例。
在一种可能的实现方式中,所述根据服务实例列表中各服务实例的等待时间及响应时间,确定目标服务实例,包括:
根据服务实例的等待时间及响应时间,确定服务实例对应的响应比;
选取服务实例列表中响应比最大的服务实例,作为目标服务实例;
其中,所述响应比与所述响应时间成负相关,与所述等待时间成正相关。
在一种可能的实现方式中,所述根据服务实例的等待时间及响应时间,确定对应的响应比,包括:
根据服务实例在处理最近预设次数的服务请求的响应时间之和,得到第一时间;
根据服务实例列表中各服务实例的第一时间之和,得到第二时间;
根据所述服务实例的等待时间及所述第二时间之和,得到第三时间;
通过求取所述第三时间与所述第一时间的比值,确定所述响应比。
在一种可能的实现方式中,所述选取服务实例列表中响应比最大的服务实例,作为目标服务实例,包括:
在所述服务实例列表中多个服务实例的响应比最大且相同的情况下,通过在所述多个服务实例中随机选取的方式,确定所述目标服务实例。
在一种可能的实现方式中,所述方法还包括:
通过初始化处理,确定服务实例列表中各服务实例的初始权重;
选取初始权重最大的服务实例,作为初始目标服务实例;
下发初次服务请求至所述初始目标服务实例;
其中,所述初次服务请求为初始化处理后,接收的第一次服务请求。
在一种可能的实现方式中,所述通过初始化处理,确定服务实例列表中各服务实例的初始权重,包括:
依次轮询服务实例列表中的服务实例,得到各服务实例的响应时间;
通过统计各服务实例处理预设次数的服务请求的响应时间,得到第四时间;
通过统计服务实例列表中各服务实例的第四时间,得到第五时间;
根据所述第四时间及第五时间,确定所述服务实例的初始权重;
其中,所述初始权重与所述第四时间负相关,与所述第五时间正相关。
根据本公开的另一方面,提供了一种负载均衡装置,包括:
目标服务实例确定模块,用于根据服务实例列表中各服务实例的等待时间及响应时间,确定目标服务实例,其中,服务实例的等待时间包括该服务实例距离上一次接收服务请求的时间间隔,服务实例的响应时间包括该服务实例从开始处理服务请求到该服务请求处理结束的时间;
服务请求下发模块,用于将当前接收到的服务请求下发至所述目标服务实例。
根据本公开的另一方面,提供了一种负载均衡装置,包括:处理器;用于存储处理器可执行指令的存储器;其中,所述处理器被配置为执行上述方法。
根据本公开的另一方面,提供了一种非易失性计算机可读存储介质,其上存储有计算机程序指令,其中,所述计算机程序指令被处理器执行时实现上述方法。
本公开实施例中,响应时间反应了服务实例在包括自身能力和网络波动等综合因素影响下的实际处理能力,等待时间反应了服务实例的空闲情况;将服务实例的等待时间和响应时间作为选择目标服务实例的依据,并将当前接收到的服务请求下发至目标服务实例;充分考虑了各服务实例的处理能力、等待时间、系统波动等因素,从而保证了服务请求分发的稳定性、均衡性,提高了分发效率。
根据下面参考附图对示例性实施例的详细说明,本公开的其它特征及方面将变得清楚。
附图说明
包含在说明书中并且构成说明书的一部分的附图与说明书一起示出了本公开的示例性实施例、特征和方面,并且用于解释本公开的原理。
图1示出根据本公开一实施例的一种负载均衡方法的流程图;
图2示出根据本公开一实施例的一种负载均衡方法的流程图;
图3示出根据本公开一实施例的一种负载均衡装置的结构图;
图4示出根据本公开一实施例的一种用于负载均衡的装置的框图。
具体实施方式
以下将参考附图详细说明本公开的各种示例性实施例、特征和方面。附图中相同的附图标记表示功能相同或相似的元件。尽管在附图中示出了实施例的各种方面,但是除非特别指出,不必按比例绘制附图。
在这里专用的词“示例性”意为“用作例子、实施例或说明性”。这里作为“示例性”所说明的任何实施例不必解释为优于或好于其它实施例。
另外,为了更好的说明本公开,在下文的具体实施方式中给出了众多的具体细节。本领域技术人员应当理解,没有某些具体细节,本公开同样可以实施。在一些实例中,对于本领域技术人员熟知的方法、手段、元件和电路未作详细描述,以便于凸显本公开的主旨。
在微服务技术体系中,负载均衡是需要使用的技术,通过负载均衡来实现系统的高可用性,集群扩容等功能。一般来说,负载均衡大致可以分为两种:客户端负载均衡和服务端负载均衡,可以通过多种硬件设备和软件来实现服务端负载均衡。负载均衡器维护一个服务端清单,利用心跳检测等手段实现清单维护,及时清理无法访问的服务,保证清单中都是可以正常访问的服务节点。当客户端发送请求时,会首先到达负载均衡器,负载均衡器会根据负载均衡算法从可调用的服务实例列表中取出一个服务实例地址进行转发,以便均衡平台压力。与服务端负载均衡相对的是客户端负载均衡,其与服务端负载均衡的主要区别在于服务清单的存放位置;在客户端负载均衡中,客户端会自己存放一份服务清单,由客户端本身对该清单进行维护。
目前,工业界一般使用轮询算法实现负载均衡机制,极少使用随机算法。这是因为随机算法在服务实例数量有限的情况下,依旧存在着将大量请求转发到同一服务实例的可能性,并不是负载均衡的最佳实践。轮询算法的原理是把所有来自用户的请求轮流分配给内部的服务实例,从服务实例1开始直到服务实例N,然后重新开始循环。其假定所有服务实例的处理性能都相同,并不关心每个具体实例的响应时间和可接入连接数,适用于服务实例具有相同的软硬件配置的情况;但是由于实际的应用场景是十分复杂的,所有的服务实例不可能具有相同的处理能力,因而,可能出现因服务实例间不同的处理能力以及网络状况的波动导致的请求分发效率的降低。
在上述轮询算法中,平滑加权轮询算法广泛应用工业界,该算法的关键参数包括:权重及当前权重,如下表1所示:
表1:平滑加权轮询算法参数表
参数名称 描述
初始权重 配置文件中指定的该服务实例的权重,该值是固定不变
当前权重 服务实例目前的权重。初始值为0,然后会动态调整
每次当请求到来,选取服务实例时,会遍历数组中所有可以接收请求的服务实例。对于每个服务实例,将它的初始权重增加到当前权重;同时累加所有服务实例的当前权重,并保存为总和权重。遍历完所有服务实例之后,如果该服务实例的当前权重是最大的,就选择这个服务实例处理本次请求,最后把该服务实例的当前权重减去上述总和权重,并更新当前权重。
假设初始状态下有三台服务实例a、b、c,权重分别是4、2、1。则平滑加权轮询算法的迭代过程如下表2所示:
表2-平滑加权轮询算法的迭代过程
请求次数 迭代前权重 本次迭代结果 迭代后权重
1 {4,2,1} a {-3,2,1}
2 {1,4,2} b {1,-3,2}
3 {5,-1,3} a {-2,-1,3}
4 {2,1,4} c {2,1,-3}
5 {6,3,-2} a {-1,3,-2}
6 {3,5,-1} b {3,-2,-1}
7 {7,0,0} a {0,0,0}
8 {4,2,1} a {-3,2,1}
如表2所示,第一次请求,迭代前的三台服务实例的权重是{4,2,1},其中服务实例a的权重最大,选择a为请求提供服务,此时总和权重为a、b、c权重之和(即4+2+1=7),迭代后a的权重是a的权重减去总和权重(即4-7=-3),服务实例数组的权重是{-3,2,1},将该数组的权重分别与服务实例的初始权重{4,2,1}相加,得到下次迭代前的权重{1,4,2},就此完成一轮循环,随后的迭代过程也是遵循上述算法,7次迭代以后,迭代前权重会与第一次相同。
由此可见,7次服务请求中,a、b、c分别被选取了4、2、1次,符合它们的权重值;a、b、c被选取的顺序为a、b、a、c、a、b、a,分布均匀,权重最大的a没有被连续选取;每经过7次请求后,a、b、c的当前权重又回到初始值{0,0,0},因此上述流程是不断循环的。
然而,在上述平滑加权轮询算法中,一个很大的问题是其并未考虑到系统波动对服务实例权重的影响,例如,对于服务实例a,其初始权重是4,但是由于服务实例a发生了网络波动,或者服务实例所扇出的服务发生了波动,很可能会降低服务实例的处理能力,在不降低服务质量的情况下,必须降低服务实例的权重才能让该服务实例接收匹配其处理能力的请求数量。另外,很多时候服务实例的权重是一种难以量化的值,该权重随着服务实例的带宽、CPU处理能力、内存大小等因素而变化,很难说一个具有低带宽高内存的服务实例在处理业务的时候一定能比高带宽低内存的服务实例效率要高,具体情况还需要分析服务实例所在的业务场景,而难以对权重进行量化以及较低的鲁棒性会影响算法的性能稳定。
因此,为了解决相关技术中存在的上述技术问题,本公开提出了一种基于滑动窗格的响应比轮询负载均衡的技术方案,充分考虑到服务实例可能具有不同的软硬件资源配置以及受系统波动的影响,将服务实例的等待时间和处理能力作为影响服务请求分发的因子,以便提升负载均衡技术方案的整体表现。
图1示出根据本公开一实施例的一种负载均衡方法的流程图。该方法可以应用于服务端,例如应用在微服务系统的注册中心,实现负载均衡,如图1所示,该方法可以包括以下步骤:
步骤101、根据服务实例列表中各服务实例的等待时间及响应时间,确定目标服务实例,其中,服务实例的等待时间包括该服务实例距离上一次接收服务请求的时间间隔,服务实例的响应时间包括该服务实例从开始处理服务请求到该服务请求处理结束的时间;
步骤102、将当前接收到的服务请求下发至所述目标服务实例。
本公开实施例中,服务端在接收到客户端发送的外部服务请求或者服务端的内部服务请求后,遍历服务实例列表中所有可以接收服务请求的服务实例,根据所记录的各服务实例的等待时间及响应时间,在所有可以接收服务请求的服务实例中选出目标服务实例,进而将当前接收到服务请求下发至该目标服务实例,该目标服务实例针对该服务请求进行处理。同时,记录该目标服务实例处理当前服务请求的时长及服务实例列表中其他服务实例等待的时长,进而更新各服务实例的响应时间及等待时间。
示例性地,客户端向服务端发送服务请求,服务请求首先到达服务端的注册中心,注册中心的服务实例列表中存储有可以提供相同服务的服务实例;注册中心通过遍历所有可以接收该服务请求的服务实例,根据各服务实例的等待时间及响应时间,选取出一台服务实例作为目标服务实例,并通过该目标服务实例的地址,将该次服务请求转发至该服务实例。若服务实例选定为目标服务实例,则注册中心会记录该目标服务实例从开始处理当前服务请求到该服务请求处理结束的时间,该时间即为该服务实例处理最新一次服务请求的响应时间,同时,该服务实例最新的等待时间为0;若服务实例未选定为目标服务实例,则将上述目标服务实例处理此处服务请求的响应时间作为该服务实例本次的等待时长,并将该时长添加到原有等待时间,得到最新的等待时间。
响应时间反应了服务实例在包括自身能力和网络波动等综合因素影响下的实际处理能力,等待时间反应了服务实例的空闲情况,通过将服务实例的等待时间和响应时间作为选择目标服务实例的依据,并将当前接收到的服务请求下发至目标服务实例;充分考虑了各服务实例的处理能力、等待时间、系统波动等因素,从而保证了服务请求分发的稳定性、均衡性,提高了分发效率。
在一种可能的实现方式中,在步骤101中,所述根据服务实例列表中各服务实例的等待时间及响应时间,确定目标服务实例,可以包括:根据各服务实例处理最近预设次数的服务请求的响应时间,以及各服务实例的等待时间,确定目标服务实例。
本公开实施例中,考虑到服务实例发生了网络波动或者服务实例所扇出的服务发生了波动(例如:与该服务实例相关联的其他服务实例发生了延迟),很可能会降低该服务实例的处理能力,因此,通过设置滑动窗格(即预设次数)的方式减少响应时间随机波动造成的影响,更科学地计算服务实例的响应时间,从而提升负载均衡方法的鲁棒性。其中,预设次数可以根据系统实际的波动情况进行设定,本公开实施例对此不作限定。
示例性地,可以将预设次数设置为5次,在注册中心接收到服务请求时,根据服务实例列表中各服务实例处理每次服务请求的历史记录,确定各服务实例的等待时间及最近5次处理服务请求的响应时间,进而选取出目标服务实例,并通过该目标服务实例的地址,将该次服务请求转发至该目标服务实例。
在一种可能的实现方式中,在步骤101中,所述根据服务实例列表中各服务实例的等待时间及响应时间,确定目标服务实例,可以包括:根据服务实例的等待时间及响应时间,确定服务实例对应的响应比;选取服务实例列表中响应比最大的服务实例,作为目标服务实例;其中,所述响应比与所述响应时间成负相关,与所述等待时间成正相关。响应时间反应了服务实例在包括自身能力和网络波动等综合因素影响下的实际处理能力,等待时间反应了服务实例的空闲情况,响应比与所述响应时间成负相关,与所述等待时间成正相关,使得在响应时间越短,等待时间越长的情况下,响应比越大,相应的服务实例越容易成为目标服务实例以对服务请求进行处理,由此,使得处理能力强、等待时间长的服务实例优先处理服务请求,从而保证了服务请求分发的稳定性、均衡性,提高了分发效率。
本公开实施例中,可以根据服务实例的等待时间及处理最新一次服务请求的响应时间,还可以根据服务实例的等待时间及处理最近预设次数的服务请求的响应时间,确定服务实例对应的响应比。这样,充分考虑了各服务实例的处理能力以及等待时间等因素,并对上述因素进行量化,引入了响应比作为目标服务实例选择的动态标准,衡量结果更加精确,有效解决了服务实例的实际处理能力难以量化的问题。
示例性地,在注册中心接收到服务请求时,根据服务实例列表中各服务实例处理每次服务请求的历史记录,确定各服务实例的等待时间及处理最近5次的服务请求的响应时间,根据上述等待时间和处理最近5次的服务请求的响应时间,并基于轮询优先级(即响应比)随着响应时间的减小而提高,随着等待时间的增加而增加的原则,对各服务实例的响应比进行比较,选择最大响应比所对应的服务实例作为目标服务实例;并通过该目标服务实例的地址,将该次服务请求转发至该目标服务实例。
在一种可能的实现方式中,在步骤101中,所述根据服务实例的等待时间及响应时间,确定对应的响应比,可以包括:根据服务实例在处理最近预设次数的服务请求的响应时间之和,得到第一时间;根据服务实例列表中各服务实例的第一时间之和,得到第二时间;根据所述服务实例的等待时间及所述第二时间之和,得到第三时间;通过求取所述第三时间与所述第一时间的比值,确定所述响应比。
本公开实施例中,第三时间包含了各服务实例处理最近预设次数的服务请求的响应时间之和,以及本服务实例的等待时间,而第一时间包含了本服务实例处理最近预设次数的服务请求的响应时间之和,因此,本服务实例的响应时间相对于其他服务实例越短、等待时间越长,则响应比越大,响应比表征了服务实例的实际处理能力和等待情况,通过服务实例的等待时间及响应时间定量求取响应比,响应比可以在每次服务请求到来时进行动态调整,将响应比作为目标服务实例选择的标准,使选取出的目标服务实例能够接受匹配其处理能力的服务请求,从而保证了服务请求分发的稳定性,提高了分发效率。并且,通过考虑等待时间的因素,使得各服务实例获得服务请求的机会尽可能均衡,减少服务实例等待时间,提高资源利用率。
示例性地,预设次数可以为5,在注册中心接收到服务请求时,可以更新每个服务实例的响应比,具体地,求取服务实例处理最近5次的服务请求的响应时间之和,从而得到该服务实例对应的第一时间;在得到服务实例列表中所有可以接收服务请求的服务实例对应的第一时间之后,求取所有的第一时间之和,得到本次下发服务请求过程中对应的第二时间;进而将各服务实例的等待时间分别与该第二时间相加,得到各服务实例对应的第三时间,进而通过公式:响应比=第三时间/第一时间,求取各服务实例对应的响应比;选择最大响应比所对应的服务实例作为目标服务实例;并通过该目标服务实例的地址,将该次服务请求转发至该目标服务实例;同时,记录目标服务实例针对本次服务请求开始处理到结束处理所花费的时间,将本次服务请求所花费的时间加入到第二时间中,将该目标服务实例的等待时间归零并更新响应比;滑动窗格向前移动一次,即重新界定服务实例处理最近5次的服务请求的响应时间,从而更新可以提供服务的各服务实例的第一时间、等待时间以及响应比。
在一种可能的实现方式中,在步骤101中,所述选取服务实例列表中响应比最大的服务实例,作为目标服务实例,可以包括:在所述服务实例列表中多个服务实例的响应比最大且相同的情况下,通过在所述多个服务实例中随机选取的方式,确定所述目标服务实例。
本公开实施例中,响应比相同的服务实例表征这些服务实例具有相同的处理能力,响应比最大表征该服务实例在所有服务实例中具有最大的处理能力。当求取的响应比的最大值对应多个服务实例时,则表征这些服务实例具有相同的轮询优先级;此时,在这些响应比最大且相同的服务实例中随机选取出处理本次服务请求的服务实例,从而保证服务请求分发的整体稳定和均衡。
图2示出根据本公开一实施例的一种负载均衡方法的流程图。如图2所示,该方法可以包括以下步骤:
步骤201、通过初始化处理,确定服务实例列表中各服务实例的初始权重;
步骤202、选取初始权重最大的服务实例,作为初始目标服务实例;
步骤203、下发初次服务请求至所述初始目标服务实例;其中,所述初次服务请求为初始化处理后,接收的第一次服务请求;
步骤204、根据服务实例列表中各服务实例的等待时间及响应时间,确定目标服务实例,其中,服务实例的等待时间包括该服务实例距离上一次接收服务请求的时间间隔,服务实例的响应时间包括该服务实例从开始处理服务请求到该服务请求处理结束的时间;
步骤205、将当前接收到的服务请求下发至所述目标服务实例。
本公开实施例中,通过初始化处理,得到各服务实例初始化后的权重,并将该初始权重作为初始化后接收第一次服务请求时选择服务实例的依据。这样,通过初始化阶段,使得在接下来正式接收第一次服务请求时,可以通过表征各服务实例真实处理能力的初始权重更加合理地选择目标服务实例,使选取出的目标服务实例能够接受匹配其处理能力的服务请求,从而提升了负载均衡处理过程的整体表现,保证了服务请求分发的稳定性,提高了分发效率。
在一种可能的实现方式中,在步骤201中、所述通过初始化处理,确定服务实例列表中各服务实例的初始权重,可以包括:依次轮询服务实例列表中的服务实例,得到各服务实例的响应时间;通过统计各服务实例处理预设次数的服务请求的响应时间,得到第四时间;通过统计服务实例列表中各服务实例的第四时间,得到第五时间;根据所述第四时间及第五时间,确定所述服务实例的初始权重,其中,所述初始权重与所述第四时间负相关,与所述第五时间正相关。
示例性地,在初始化处理阶段会依次对每个服务实例进行初始权重的初始化,具体地,首先选择依次轮询每个服务实例预设次数,即每个服务实例均处理预设次数的服务请求,计算每个服务实例处理每次服务请求的响应时间,从而得到每个服务实例处理所有预设次数的服务请求的响应时间之和(即第四时间)以及所有服务实例的响应时间的总和(即第五时间),进而可以通过公式:初始权重=1-第四时间/第五时间;计算出各服务实例的初始权重,作为第一次正式请求到来时选择目标服务实例的依据。
在完成初始化处理阶段后,选取初始权重最大的服务实例,作为初始目标服务实例(即步骤202);下发初始化处理后的第一次服务请求至该初始目标服务实例(即步骤203);接下来,根据服务实例列表中各服务实例的等待时间及响应时间,确定处理每次服务请求的目标服务实例(即步骤204),每次当新的服务请求到来时,将当前接收到的新的服务请求下发至所述目标服务实例(即步骤205)。需要说明的是,本公开实施例中,步骤204与上述图1所示的实施例中的步骤101相同,步骤205与上述图1所示的实施例中的步骤102相同,在此不再赘述。
举例来说,假设初始状态下服务实例列表中具有三个服务实例,分别为:服务实例a、服务实例b、服务实例c;滑动窗格尺寸设定为5,即预设次数取值为5;基于滑动窗格的响应比轮询算法实现负载均衡的过程中,涉及到的主要参数如下表3所示:
表3-基于滑动窗格的响应比轮询算法参数
Figure BDA0002459524860000121
首先,进行初始化处理阶段,如下表4所示,依次调用服务实例a、服务实例b、服务实例c各5次,记录每次调用服务实例处理服务请求的响应时间,分别将服务实例a、b、c这5次的响应时间求和,得到对应的响应时间和,将服务实例a、b、c对应的时间和相加,得到总时间。
表4-基于滑动窗格的响应比轮询算法的初始化过程
提供服务的实例 每次响应时间(ms) 响应时间和(ms) 总时间(ms)
服务实例a {100,120,150,130,140} 640 640
服务实例b {100,110,90,100,110} 500 1140
服务实例c {80,90,100,80,100} 450 1590
通过上述表3和表4,计算得到服务实例a的初始权重为:1-640/1590=0.597;服务实例b的初始权重为:1-500/1590=0.686;服务实例c的初始权重为:1-450/1590=0.717,经过初始化处理以后总时间为1590,由于服务实例c的初始权重最大,那么下次将优先选择服务实例c进行服务。这也符合直观的观察结果相同:服务实例c的响应时间最短,说明服务实例c的处理能力最强,那么可以优先让其处理服务请求。
然后,在正式服务请求到来时的处理过程,如下表5所示,第一次请求由服务实例c接收,处理时间为100ms,处理结束后服务实例c的响应时间和随着滑动窗格的前移会被更新为:450-80+100=470,由于此次并未轮询到服务实例a和服务实例b,所以服务实例a和服务实例b的等待时间都是100ms,服务实例c的等待时间为0;对所有服务实例响应时间和进行求和得到总时间,计算结果为:640+500+470=1610,最终可以根据表3计算每个服务实例的响应比,具体的,服务实例a的响应比为(1610+100)/640=2.67,服务实例b的响应比为(1610+100)/500=3.42,服务实例c的响应比为(1610+0)/470=3.43,经过比较可知服务实例c的响应比最大,那么下次由服务实例c处理服务请求。
表5-基于滑动窗格的响应比轮询算法的迭代过程
服务实例 响应时间 响应时间和 总时间 等待时间 响应比
c 100 {640,500,470} 1610 {100,100,0} {2.67,3.42,3.43}
c 150 {640,500,540} 1680 {250,250,0} {3.02,3.86,3.11}
b 200 {640,600,540} 1780 {450,0,200} {3.48,2.97,3.67}
c 160 {640,600,600} 1840 {650,160,0} {3.89,3.33,3.07}
需要说明的是,尽管以上述实施例作为示例介绍了负载均衡方法如上,但本领域技术人员能够理解,本公开应不限于此。事实上,用户完全可根据个人喜好和/或实际应用场景灵活设定各实施方式,只要符合本公开的技术方案即可。
这样,本公开实施例中,响应时间反应了服务实例在包括自身能力和网络波动等综合因素影响下的实际处理能力,等待时间反应了服务实例的空闲情况;将服务实例的等待时间和响应时间作为选择目标服务实例的依据,并将当前接收到的服务请求下发至目标服务实例;充分考虑了各服务实例的处理能力、等待时间、系统波动等因素,从而保证了服务请求分发的稳定性、均衡性,提高了分发效率。
图3示出根据本公开一实施例的一种负载均衡装置的结构图,如图3所示,该装置可以包括:目标服务实例确定模块41,用于根据服务实例列表中各服务实例的等待时间及响应时间,确定目标服务实例,其中,服务实例的等待时间包括该服务实例距离上一次接收服务请求的时间间隔,服务实例的响应时间包括该服务实例从开始处理服务请求到该服务请求处理结束的时间;服务请求下发模块42,用于将当前接收到的服务请求下发至所述目标服务实例。
在一种可能的实现方式中,所述目标服务实例确定模块41,具体用于:根据各服务实例处理最近预设次数的服务请求的响应时间,以及各服务实例的等待时间,确定目标服务实例。
在一种可能的实现方式中,所述目标服务实例确定模块41,具体用于:根据服务实例的等待时间及响应时间,确定服务实例对应的响应比;选取服务实例列表中响应比最大的服务实例,作为目标服务实例;其中,所述响应比与所述响应时间成负相关,与所述等待时间成正相关。
在一种可能的实现方式中,所述目标服务实例确定模块41,具体用于:根据服务实例在处理最近预设次数的服务请求的响应时间之和,得到第一时间;根据服务实例列表中各服务实例的第一时间之和,得到第二时间;根据所述服务实例的等待时间及所述第二时间之和,得到第三时间;通过求取所述第三时间与所述第一时间的比值,确定所述响应比。
在一种可能的实现方式中,所述目标服务实例确定模块41,具体用于:在所述服务实例列表中多个服务实例的响应比最大且相同的情况下,通过在所述多个服务实例中随机选取的方式,确定所述目标服务实例。
在一种可能的实现方式中,所述装置还包括:初始化模块,用于通过初始化处理,确定服务实例列表中各服务实例的初始权重;选取初始权重最大的服务实例,作为初始目标服务实例;下发初次服务请求至所述初始目标服务实例;其中,所述初次服务请求为初始化处理后,接收的第一次服务请求。
在一种可能的实现方式中,所述初始化模块,具体用于:依次轮询服务实例列表中的服务实例,得到各服务实例的响应时间;通过统计各服务实例处理预设次数的服务请求的响应时间,得到第四时间;通过统计服务实例列表中各服务实例的第四时间,得到第五时间;根据所述第四时间及第五时间,确定所述服务实例的初始权重,其中所述初始权重与所述第四时间负相关,与所述第五时间正相关。
需要说明的是,尽管以上述实施例作为示例介绍了负载均衡装置如上,但本领域技术人员能够理解,本公开应不限于此。事实上,用户完全可根据个人喜好和/或实际应用场景灵活设定各实施方式,只要符合本公开的技术方案即可。
这样,本公开实施例中,响应时间反应了服务实例在包括自身能力和网络波动等综合因素影响下的实际处理能力,等待时间反应了服务实例的空闲情况;将服务实例的等待时间和响应时间作为选择目标服务实例的依据,并将当前接收到的服务请求下发至目标服务实例;充分考虑了各服务实例的处理能力、等待时间、系统波动等因素,从而保证了服务请求分发的稳定性、均衡性,提高了分发效率。
本实施例还提供了一种负载均衡装置,包括:处理器;用于存储处理器可执行指令的存储器;其中,所述处理器被配置为执行上述方法。
本实施例还提供了一种非易失性计算机可读存储介质,其上存储有计算机程序指令,其中,所述计算机程序指令被处理器执行时实现上述方法。
图4示出根据本公开一实施例的一种用于负载均衡的装置1900的框图。例如,装置1900可以被提供为一服务器。参照图4,装置1900包括处理组件1922,其进一步包括一个或多个处理器,以及由存储器1932所代表的存储器资源,用于存储可由处理组件1922的执行的指令,例如应用程序。存储器1932中存储的应用程序可以包括一个或一个以上的每一个对应于一组指令的模块。此外,处理组件1922被配置为执行指令,以执行上述方法。
装置1900还可以包括一个电源组件1926被配置为执行装置1900的电源管理,一个有线或无线网络接口1950被配置为将装置1900连接到网络,和一个输入输出(I/O)接口1958。装置1900可以操作基于存储在存储器1932的操作系统,例如Windows ServerTM,MacOS XTM,UnixTM,LinuxTM,FreeBSDTM或类似。
在示例性实施例中,还提供了一种非易失性计算机可读存储介质,例如包括计算机程序指令的存储器1932,上述计算机程序指令可由装置1900的处理组件1922执行以完成上述方法。
本公开可以是系统、方法和/或计算机程序产品。计算机程序产品可以包括计算机可读存储介质,其上载有用于使处理器实现本公开的各个方面的计算机可读程序指令。
计算机可读存储介质可以是可以保持和存储由指令执行设备使用的指令的有形设备。计算机可读存储介质例如可以是――但不限于――电存储设备、磁存储设备、光存储设备、电磁存储设备、半导体存储设备或者上述的任意合适的组合。计算机可读存储介质的更具体的例子(非穷举的列表)包括:便携式计算机盘、硬盘、随机存取存储器(RAM)、只读存储器(ROM)、可擦式可编程只读存储器(EPROM或闪存)、静态随机存取存储器(SRAM)、便携式压缩盘只读存储器(CD-ROM)、数字多功能盘(DVD)、记忆棒、软盘、机械编码设备、例如其上存储有指令的打孔卡或凹槽内凸起结构、以及上述的任意合适的组合。这里所使用的计算机可读存储介质不被解释为瞬时信号本身,诸如无线电波或者其他自由传播的电磁波、通过波导或其他传输媒介传播的电磁波(例如,通过光纤电缆的光脉冲)、或者通过电线传输的电信号。
这里所描述的计算机可读程序指令可以从计算机可读存储介质下载到各个计算/处理设备,或者通过网络、例如因特网、局域网、广域网和/或无线网下载到外部计算机或外部存储设备。网络可以包括铜传输电缆、光纤传输、无线传输、路由器、防火墙、交换机、网关计算机和/或边缘服务器。每个计算/处理设备中的网络适配卡或者网络接口从网络接收计算机可读程序指令,并转发该计算机可读程序指令,以供存储在各个计算/处理设备中的计算机可读存储介质中。
用于执行本公开操作的计算机程序指令可以是汇编指令、指令集架构(ISA)指令、机器指令、机器相关指令、微代码、固件指令、状态设置数据、或者以一种或多种编程语言的任意组合编写的源代码或目标代码,所述编程语言包括面向对象的编程语言—诸如Smalltalk、C++等,以及常规的过程式编程语言—诸如“C”语言或类似的编程语言。计算机可读程序指令可以完全地在用户计算机上执行、部分地在用户计算机上执行、作为一个独立的软件包执行、部分在用户计算机上部分在远程计算机上执行、或者完全在远程计算机或服务器上执行。在涉及远程计算机的情形中,远程计算机可以通过任意种类的网络—包括局域网(LAN)或广域网(WAN)—连接到用户计算机,或者,可以连接到外部计算机(例如利用因特网服务提供商来通过因特网连接)。在一些实施例中,通过利用计算机可读程序指令的状态信息来个性化定制电子电路,例如可编程逻辑电路、现场可编程门阵列(FPGA)或可编程逻辑阵列(PLA),该电子电路可以执行计算机可读程序指令,从而实现本公开的各个方面。
这里参照根据本公开实施例的方法、装置(系统)和计算机程序产品的流程图和/或框图描述了本公开的各个方面。应当理解,流程图和/或框图的每个方框以及流程图和/或框图中各方框的组合,都可以由计算机可读程序指令实现。
这些计算机可读程序指令可以提供给通用计算机、专用计算机或其它可编程数据处理装置的处理器,从而生产出一种机器,使得这些指令在通过计算机或其它可编程数据处理装置的处理器执行时,产生了实现流程图和/或框图中的一个或多个方框中规定的功能/动作的装置。也可以把这些计算机可读程序指令存储在计算机可读存储介质中,这些指令使得计算机、可编程数据处理装置和/或其他设备以特定方式工作,从而,存储有指令的计算机可读介质则包括一个制造品,其包括实现流程图和/或框图中的一个或多个方框中规定的功能/动作的各个方面的指令。
也可以把计算机可读程序指令加载到计算机、其它可编程数据处理装置、或其它设备上,使得在计算机、其它可编程数据处理装置或其它设备上执行一系列操作步骤,以产生计算机实现的过程,从而使得在计算机、其它可编程数据处理装置、或其它设备上执行的指令实现流程图和/或框图中的一个或多个方框中规定的功能/动作。
附图中的流程图和框图显示了根据本公开的多个实施例的系统、方法和计算机程序产品的可能实现的体系架构、功能和操作。在这点上,流程图或框图中的每个方框可以代表一个模块、程序段或指令的一部分,所述模块、程序段或指令的一部分包含一个或多个用于实现规定的逻辑功能的可执行指令。在有些作为替换的实现中,方框中所标注的功能也可以以不同于附图中所标注的顺序发生。例如,两个连续的方框实际上可以基本并行地执行,它们有时也可以按相反的顺序执行,这依所涉及的功能而定。也要注意的是,框图和/或流程图中的每个方框、以及框图和/或流程图中的方框的组合,可以用执行规定的功能或动作的专用的基于硬件的系统来实现,或者可以用专用硬件与计算机指令的组合来实现。
以上已经描述了本公开的各实施例,上述说明是示例性的,并非穷尽性的,并且也不限于所披露的各实施例。在不偏离所说明的各实施例的范围和精神的情况下,对于本技术领域的普通技术人员来说许多修改和变更都是显而易见的。本文中所用术语的选择,旨在最好地解释各实施例的原理、实际应用或对市场中的技术改进,或者使本技术领域的其它普通技术人员能理解本文披露的各实施例。

Claims (10)

1.一种负载均衡方法,其特征在于,所述方法包括:
根据服务实例列表中各服务实例的等待时间及响应时间,确定目标服务实例,其中,服务实例的等待时间包括该服务实例距离上一次接收服务请求的时间间隔,服务实例的响应时间包括该服务实例从开始处理服务请求到该服务请求处理结束的时间;
将当前接收到的服务请求下发至所述目标服务实例。
2.根据权利要求1所述的方法,其特征在于,所述根据服务实例列表中各服务实例的等待时间及响应时间,确定目标服务实例,包括:
根据各服务实例处理最近预设次数的服务请求的响应时间,以及各服务实例的等待时间,确定目标服务实例。
3.根据权利要求1或2所述的方法,其特征在于,所述根据服务实例列表中各服务实例的等待时间及响应时间,确定目标服务实例,包括:
根据服务实例的等待时间及响应时间,确定服务实例对应的响应比;
选取服务实例列表中响应比最大的服务实例,作为目标服务实例;
其中,所述响应比与所述响应时间成负相关,与所述等待时间成正相关。
4.根据权利要求3所述的方法,其特征在于,所述根据服务实例的等待时间及响应时间,确定对应的响应比,包括:
根据服务实例在处理最近预设次数的服务请求的响应时间之和,得到第一时间;
根据服务实例列表中各服务实例的第一时间之和,得到第二时间;
根据所述服务实例的等待时间及所述第二时间之和,得到第三时间;
通过求取所述第三时间与所述第一时间的比值,确定所述响应比。
5.根据权利要求3所述的方法,其特征在于,所述选取服务实例列表中响应比最大的服务实例,作为目标服务实例,包括:
在所述服务实例列表中多个服务实例的响应比最大且相同的情况下,通过在所述多个服务实例中随机选取的方式,确定所述目标服务实例。
6.根据权利要求1中所述的方法,其特征在于,所述方法还包括:
通过初始化处理,确定服务实例列表中各服务实例的初始权重;
选取初始权重最大的服务实例,作为初始目标服务实例;
下发初次服务请求至所述初始目标服务实例;
其中,所述初次服务请求为初始化处理后,接收的第一次服务请求。
7.根据权利要求6所述的方法,其特征在于,所述通过初始化处理,确定服务实例列表中各服务实例的初始权重,包括:
依次轮询服务实例列表中的服务实例,得到各服务实例的响应时间;
通过统计各服务实例处理预设次数的服务请求的响应时间,得到第四时间;
通过统计服务实例列表中各服务实例的第四时间,得到第五时间;
根据所述第四时间及第五时间,确定所述服务实例的初始权重;
其中,所述初始权重与所述第四时间负相关,与所述第五时间正相关。
8.一种负载均衡装置,其特征在于,包括:
目标服务实例确定模块,用于根据服务实例列表中各服务实例的等待时间及响应时间,确定目标服务实例,其中,服务实例的等待时间包括该服务实例距离上一次接收服务请求的时间间隔,服务实例的响应时间包括该服务实例从开始处理服务请求到该服务请求处理结束的时间;
服务请求下发模块,用于将当前接收到的服务请求下发至所述目标服务实例。
9.一种负载均衡装置,其特征在于,包括:
处理器;
用于存储处理器可执行指令的存储器;
其中,所述处理器被配置为在执行所述存储器存储的可执行指令时实现权利要求1至权利要求7中任意一项所述的方法。
10.一种非易失性计算机可读存储介质,其上存储有计算机程序指令,其特征在于,所述计算机程序指令被处理器执行时实现权利要求1至7中任意一项所述的方法。
CN202010316201.8A 2020-04-21 2020-04-21 一种负载均衡方法、装置及存储介质 Active CN111355814B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN202010316201.8A CN111355814B (zh) 2020-04-21 2020-04-21 一种负载均衡方法、装置及存储介质

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN202010316201.8A CN111355814B (zh) 2020-04-21 2020-04-21 一种负载均衡方法、装置及存储介质

Publications (2)

Publication Number Publication Date
CN111355814A true CN111355814A (zh) 2020-06-30
CN111355814B CN111355814B (zh) 2024-04-19

Family

ID=71194976

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202010316201.8A Active CN111355814B (zh) 2020-04-21 2020-04-21 一种负载均衡方法、装置及存储介质

Country Status (1)

Country Link
CN (1) CN111355814B (zh)

Cited By (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN112035254A (zh) * 2020-08-28 2020-12-04 北京达佳互联信息技术有限公司 负载均衡方法及装置
CN112416576A (zh) * 2020-11-04 2021-02-26 北京人大金仓信息技术股份有限公司 一种数据库负载均衡的方法及装置
CN114390089A (zh) * 2021-12-06 2022-04-22 深圳市法本信息技术股份有限公司 一种api网关负载均衡方法及api网关
CN115580618A (zh) * 2022-10-14 2023-01-06 济南浪潮数据技术有限公司 一种负载均衡方法、装置、设备及介质

Citations (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20100217866A1 (en) * 2009-02-24 2010-08-26 Thyagarajan Nandagopal Load Balancing in a Multiple Server System Hosting an Array of Services
CN103516807A (zh) * 2013-10-14 2014-01-15 中国联合网络通信集团有限公司 一种云计算平台服务器负载均衡系统及方法
CN103927225A (zh) * 2014-04-22 2014-07-16 浪潮电子信息产业股份有限公司 一种多核心架构的互联网信息处理优化方法
CN106325976A (zh) * 2016-08-05 2017-01-11 天河国云(北京)科技有限公司 一种渲染任务调度处理方法及服务器
CN106936925A (zh) * 2017-04-17 2017-07-07 广州孩教圈信息科技股份有限公司 负载均衡方法和系统
CN109257440A (zh) * 2018-10-29 2019-01-22 南京南瑞信息通信科技有限公司 一种基于服务注册中心的服务发现和客户端负载均衡方法
US10594562B1 (en) * 2015-08-25 2020-03-17 Vmware, Inc. Intelligent autoscale of services

Patent Citations (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20100217866A1 (en) * 2009-02-24 2010-08-26 Thyagarajan Nandagopal Load Balancing in a Multiple Server System Hosting an Array of Services
CN103516807A (zh) * 2013-10-14 2014-01-15 中国联合网络通信集团有限公司 一种云计算平台服务器负载均衡系统及方法
CN103927225A (zh) * 2014-04-22 2014-07-16 浪潮电子信息产业股份有限公司 一种多核心架构的互联网信息处理优化方法
US10594562B1 (en) * 2015-08-25 2020-03-17 Vmware, Inc. Intelligent autoscale of services
CN106325976A (zh) * 2016-08-05 2017-01-11 天河国云(北京)科技有限公司 一种渲染任务调度处理方法及服务器
CN106936925A (zh) * 2017-04-17 2017-07-07 广州孩教圈信息科技股份有限公司 负载均衡方法和系统
CN109257440A (zh) * 2018-10-29 2019-01-22 南京南瑞信息通信科技有限公司 一种基于服务注册中心的服务发现和客户端负载均衡方法

Non-Patent Citations (1)

* Cited by examiner, † Cited by third party
Title
高凡石: "基于微服务的边缘计算网关设计与实现", 中国优秀硕士学位论文全文数据库 信息科技辑, no. 4, 15 April 2021 (2021-04-15) *

Cited By (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN112035254A (zh) * 2020-08-28 2020-12-04 北京达佳互联信息技术有限公司 负载均衡方法及装置
CN112416576A (zh) * 2020-11-04 2021-02-26 北京人大金仓信息技术股份有限公司 一种数据库负载均衡的方法及装置
CN114390089A (zh) * 2021-12-06 2022-04-22 深圳市法本信息技术股份有限公司 一种api网关负载均衡方法及api网关
CN115580618A (zh) * 2022-10-14 2023-01-06 济南浪潮数据技术有限公司 一种负载均衡方法、装置、设备及介质

Also Published As

Publication number Publication date
CN111355814B (zh) 2024-04-19

Similar Documents

Publication Publication Date Title
CN111355814B (zh) 一种负载均衡方法、装置及存储介质
US20190347134A1 (en) Capacity Expansion Method and Apparatus
CN110058936B (zh) 用于确定专用处理资源的资源量的方法、设备和计算机程序产品
US11150999B2 (en) Method, device, and computer program product for scheduling backup jobs
CN110753112A (zh) 云服务的弹性伸缩方法和装置
CN109272348B (zh) 活跃用户数量确定方法及装置、存储介质和电子设备
US20210176174A1 (en) Load balancing device and method for an edge computing network
US10108520B2 (en) Systems and methods for service demand based performance prediction with varying workloads
CN110391873B (zh) 用于确定数据传送方式的方法、装置以及计算机程序产品
CN110288625B (zh) 用于处理图像的方法和装置
CN110140326A (zh) 对设备的性能数据进行采样的方法和装置
CN112000457A (zh) 管理处理系统中的任务的方法、设备和计算机程序产品
US10649670B2 (en) Data block processing
CN110856004B (zh) 消息处理方法、装置、可读存储介质及电子设备
CN114020469A (zh) 基于边缘节点的多任务学习方法、装置、介质与设备
CN113760982B (zh) 一种数据处理方法和装置
US9537740B2 (en) Monitoring device usage
US9998347B2 (en) Monitoring device usage
CN116541167A (zh) 系统流量控制方法、装置、电子设备及计算机可读介质
CN111158907A (zh) 数据处理方法及装置、电子设备和存储介质
US9537742B2 (en) Automatic adjustment of application launch endpoints
CN115858147A (zh) 成本建模方法和装置
CN114265692A (zh) 服务调度方法、装置、设备以及存储介质
CN112148551B (zh) 用于确定存储系统的使用变化率的方法、设备和计算机程序产品
CN111898061A (zh) 搜索网络的方法、装置、电子设备和计算机可读介质

Legal Events

Date Code Title Description
PB01 Publication
PB01 Publication
SE01 Entry into force of request for substantive examination
SE01 Entry into force of request for substantive examination
GR01 Patent grant
GR01 Patent grant