负载均衡方法、装置、电子设备及存储介质与流程

文档序号:15930466发布日期:2018-11-14 01:34阅读:173来源:国知局

本发明涉及计算机技术领域,特别是涉及负载均衡方法、装置、电子设备及存储介质。

背景技术

随着互联网技术的发展,互联网的业务形态也呈多样性趋势,后端功能逻辑更加复杂。随着微服务等技术的发展,后端服务系统也更倾向于逻辑和功能解耦。

在服务系统中,按照预设的比例,通过轮询方式为各服务节点配置服务请求,例如,在服务系统包括三个服务节点,预设比例为1:2:1时,则按照为第一个服务节点分配1个服务请求,为第二个服务节点分配2个服务请求,为第三个服务节点分配1个服务请求的顺序,轮询分配服务请求。

然而,发明人在实现本发明的过程中发现,现有技术至少存在如下问题:

在实际业务处理过程中,不同服务请求所占用的服务节点的处理资源也不同,按照预设的比例,采用轮询方法分配服务请求,可能会存在部分服务节点负载过高而部分服务节点负载空闲的情况,影响服务系统的处理效率。



技术实现要素:

本发明实施例的目的在于提供一种负载均衡方法、装置、电子设备及存储介质,以实现提高服务系统的处理效率。具体技术方案如下:

第一方面,本发明实施例提供了一种负载均衡方法,所述方法包括:

获取服务系统中各服务节点的负载信息;

通过预设均衡算法,利用各所述服务节点的负载信息,确定各所述服务节点当前的负载权重;

将路由表当前的路由数据备份到预设位置;

按照各所述服务节点当前的负载权重,更新所述预设位置中的路由数据,得到更新后的路由数据;

将所述更新后的路由数据配置为所述路由表当前的路由数据。

可选的,所述负载信息包括所述服务节点的响应时间、每秒查询率及单位时间内的错误请求个数;

所述通过预设均衡算法,利用各所述服务节点的负载信息,确定各所述服务节点的负载权重,包括:

根据计算所述服务节点的剩余负载系数,其中,tsvr-i为服务节点i的响应时间,γ为预设系数,taverage为各所述服务节点的平均响应时间,errsvr-i为服务节点i单位时间内的错误请求的个数,ctotal为单位时间内的总请求数,count为计数函数,ai为服务节点i的剩余负载系数;

若ai<thresholdmin,确定服务节点i当前的负载权重newweightsvr-i=0,其中,newweightsvr-i为服务节点i当前的负载权重;

若thresholdmin≤ai<thresholdmax,确定服务节点i当前的负载权重newweightsvr-i=α*weightsvr-i,其中,α为预设值,且0<α<1;

若ai≥thresholdmax,确定服务节点i当前的负载权重newweightsvr-i=(1+β)*weightsvr-i,其中,β为预设值,且0<β<1。

可选的,所述将路由表当前的路由数据,备份到预设位置,包括:

判断预设位置中的路由数据是否正在被读线程读取;

若所述预设位置中的路由数据没有正在被读线程读取,将路由表当前的路由数据,备份到所述预设位置。

可选的,在所述获取服务系统中各服务节点的负载信息之前,所述方法还包括:

向所述服务系统发送注册请求,获取所述服务系统根据所述注册请求返回的服务信息,其中,所述服务信息包括服务节点列表及各所述服务节点的负载权重。

第二方面,本发明实施例提供了一种负载均衡装置,所述装置包括:

信息获取模块,用于获取服务系统中各服务节点的负载信息;

权重确定模块,用于通过预设均衡算法,利用各所述服务节点的负载信息,确定各所述服务节点当前的负载权重;

数据备份模块,用于将路由表当前的路由数据备份到预设位置;

数据更新模块,用于按照各所述服务节点当前的负载权重,更新所述预设位置中的路由数据,得到更新后的路由数据;

路由更新模块,用于将所述更新后的路由数据配置为所述路由表当前的路由数据。

可选的,所述负载信息包括所述服务节点的响应时间、每秒查询率及单位时间内的错误请求个数;

所述权重确定模块,具体用于:

根据计算所述服务节点的剩余负载系数,其中,tsvr-i为服务节点i的响应时间,γ为预设系数,taverage为各所述服务节点的平均响应时间,errsvr-i为服务节点i单位时间内的错误请求的个数,ctotal为单位时间内的总请求数,count为计数函数,ai为服务节点i的剩余负载系数;

若ai≥thresholdmax,确定服务节点i当前的负载权重newweightsvr-i=0,其中,newweightsvr-i为服务节点i当前的负载权重;

若thresholdmin≤ai<thresholdmax,确定服务节点i当前的负载权重newweightsvr-i=α*weightsvr-i,其中,α为预设值,且0<α<1;

若ai<thresholdmin,确定服务节点i当前的负载权重newweightsvr-i=(1+β)*weightsvr-i,其中,β为预设值,且0<β<1。

可选的,所述数据备份模块,包括:

占用判定子模块,用于判断预设位置中的路由数据是否正在被读线程读取;

数据更新子模块,用于若所述预设位置中的路由数据没有正在被读线程读取,将路由表当前的路由数据,备份到所述预设位置。

可选的,本发明实施例的负载均衡装置还包括:

注册模块,用于向所述服务系统发送注册请求,获取所述服务系统根据所述注册请求返回的服务信息,其中,所述服务信息包括服务节点列表及各所述服务节点的负载权重。

第三方面,本发明实施例提供了一种电子设备,包括处理器、通信接口、存储器和通信总线,其中,所述处理器,所述通信接口,所述存储器通过所述通信总线完成相互间的通信;

所述存储器,用于存放计算机程序;

所述处理器,用于执行存储器上所存放的程序时,实现上述第一方面任一负载均衡方法。

第四方面,本发明实施例提供了一种计算机可读存储介质,所述计算机可读存储介质中存储有指令,当其在计算机上运行时,使得计算机执行上述第一方面任一负载均衡方法。

第五方面,本发明实施例提供了一种包含指令的计算机程序产品,当其在计算机上运行时,使得计算机执行上述第一方面任一负载均衡方法。

本发明实施例提供的负载均衡方法、装置、电子设备及存储介质,获取服务系统中各服务节点的负载信息;通过预设均衡算法,利用各服务节点的负载信息,确定各服务节点当前的负载权重;将路由表当前的路由数据,备份到预设位置;按照各服务节点的负载权重,更新预设位置中的路由数据,得到更新后的路由数据;将更新后的路由数据配置为路由表当前的路由数据。利用各服务节点的负载信息,确定各服务节点当前的负载权重,能够根据各服务节点实时的负载信息,配置各服务节点的负载,各服务节点的负载更加合理,可以提高服务系统的处理效率。在更新路由数据时更新备份的路由数据,在路由数据更新完毕后,将更新后的路由数据配置为路由表当前的路由数据,读取路由表时不需要加锁,更新路由数据不影响路由表的读取,能够提高服务形同的性能和每秒查询率。当然,实施本发明的任一产品或方法并不一定需要同时达到以上所述的所有优点。

附图说明

为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍。

图1为本发明实施例的负载均衡方法的一种流程示意图;

图2为本发明实施例的负载均衡方法的应用场景的一种示意图;

图3为本发明实施例的负载均衡方法的另一种流程示意图;

图4为本发明实施例的负载均衡装置的一种示意图;

图5为本发明实施例的电子设备的一种示意图。

具体实施方式

下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行描述。

在实际业务处理过程中,不同服务请求所占用的服务节点的处理资源也不同,在服务系统中,按照预设的比例,采用轮询方法分配服务请求,会存在部分服务节点负载过高而部分服务节点负载空闲的情况,影响服务系统的处理效率。

有鉴于此,本发明实施例提供了一种负载均衡方法,参见图1,该方法包括:

s101,获取服务系统中各服务节点的负载信息。

本发明实施例中的负载均衡方法可以通过负载均衡系统实现,负载均衡系统为任意能够实现本发明实施例的负载均衡方法的系统。例如:

负载均衡可以为一种电子设备,包括:处理器、存储器、通信接口和总线;处理器、存储器和通信接口通过总线连接并完成相互间的通信;存储器存储可执行程序代码;处理器通过读取存储器中存储的可执行程序代码来运行与可执行程序代码对应的程序,以用于执行本发明实施例的负载均衡方法。

负载均衡系统可以以应用程序的状态存在,用于在运行时执行本发明实施例的负载均衡方法。

负载均衡系统还可位于存储介质中,该存储介质用于存储可执行代码,可执行代码用于执行本发明实施例的负载均衡方法。

可选的,参见图2,本发明实施例中的负载均衡系统具体可以为客户端,服务系统包括多个服务节点及服务中心,服务节点可以为物理机,服务节点也可以为虚拟机。客户端可以通过服务中心获取服务系统中各服务节点的负载信息。客户端周期性的通过服务中心获取各服务节点的负载信息。

可选的,在上述获取服务系统中各服务节点的负载信息之前,上述方法还包括:

向上述服务系统发送注册请求,获取上述服务系统根据上述注册请求返回的服务信息,其中,上述服务信息包括服务节点列表及各上述服务节点的负载权重。

例如图2所示的场景,客户端向服务系统中的服务中心发送注册请求。服务中心根据注册请求完成客户端的注册,并向客户端发送服务信息。客户端获取服务系统根据注册请求返回的服务信息。服务信息中包括服务节点列表,服务节点列表中记录了各服务节点的标识,服务信息中还包括各服务节点的负载权重,负载权重表征负载节点的负载能力。客户端可以通过nameservice(名字服务)获取服务系统的信息,服务系统中各服务节点的动态上线或下线等通过名字服务通知客户端。

s102,通过预设均衡算法,利用各上述服务节点的负载信息,确定各上述服务节点当前的负载权重。

预设均衡算法为通过服务节点当前的负载信息,计算服务节点当前的负载权重的方法。利用服务节点当前的负载信息,实时计算服务节点当前的负载权重,能够灵活调整各服务节点的负载,可以提高服务系统的处理效率。

s103,将路由表当前的路由数据备份到预设位置。

s104,按照各上述服务节点当前的负载权重,更新上述预设位置中的路由数据,得到更新后的路由数据。

例如,服务节点1的负载权重为100,服务节点2的负载权重为500,则将预设位置的路由数据中服务节点1的负载权重更新为100,服务节点2的负载权重更新为500。

s105,将上述更新后的路由数据配置为上述路由表当前的路由数据。

在本发明实施例中,可以将路由表中的数据分为前台数据及后台数据,前台数据中的路由数据为路由表当前正在使用的路由数据。预设位置即为后台数据的存储位置。在后台数据更新完成后,置换前台数据及后台数据,将原来的前台数据设置为后台数据,将原来的后台数据设置为前台数据,这样路由当前的路由数据便变成了更新后的路由数据。

在本发明实施例中,利用各服务节点的负载信息,确定各服务节点当前的负载权重,能够根据各服务节点实时的负载信息,配置各服务节点的负载,各服务节点的负载更加合理,可以提高服务系统的处理效率。在更新路由数据时更新备份的路由数据,在路由数据更新完毕后,将更新后的路由数据配置为路由表当前的路由数据,读取路由表时不需要加锁,更新路由数据不影响路由表的读取,能够提高服务形同的性能和每秒查询率。

可选的,上述负载信息包括上述服务节点的响应时间、每秒查询率及单位时间内的错误请求个数;

上述通过预设均衡算法,利用各上述服务节点的负载信息,确定各上述服务节点的负载权重,包括:

根据计算上述服务节点的剩余负载系数,其中,tsvr-i为服务节点i的响应时间,γ为预设系数,taverage为各上述服务节点的平均响应时间,errsvr-i为服务节点i单位时间内的错误请求的个数,ctotal为单位时间内的总请求数,count为计数函数,ai为服务节点i的剩余负载系数;

若ai≥thresholdmax,确定服务节点i当前的负载权重newweightsvr-i=0,其中,newweightsvr-i为服务节点i当前的负载权重;

若thresholdmin≤ai<thresholdmax,确定服务节点i当前的负载权重newweightsvr-i=α*weightsvr-i,其中,α为预设值,且0<α<1;

若ai<thresholdmin,确定服务节点i当前的负载权重newweightsvr-i=(1+β)*weightsvr-i,其中,β为预设值,且0<β<1。

thresholdmin及thresholdmax为预设的阈值,可以根据实际需求进行设定,α及β均为经验值。

可选的,在ai≥thresholdmax时,将服务节点i添加到低效节点列表中,其中,所述低效节点列表中的服务节点不会被分配服务请求。

ai≥thresholdmax,则认为服务节点i的服务质量很差,因此将服务节点i的负载权重设置为0,客户端发送的服务请求不再分配给服务节点i。

负载均衡系统可以周期性的计算低效节点列表中各服务节点的负载权重,在低效节点列表中服务节点的负载权重ai<thresholdmin时,将该服务节点移出低效节点列表。计算低效节点列表中各服务节点的负载权重的周期,可以长于计算其他服务节点的负载权重的周期,以节约计算资源。

在本发明实施例中,给出了计算负载权重的具体方法,利用服务节点当前的负载信息,实时计算服务节点当前的负载权重,能够灵活调整各服务节点的负载,可以提高服务系统的处理效率。

可选的,参见图3,上述将路由表当前的路由数据备份到预设位置,包括:

s1031,判断预设位置中的路由数据是否正在被读线程读取。

s1032,若上述预设位置中的路由数据没有正在被读线程读取,将路由表当前的路由数据,备份到上述预设位置。

若预设位置中的路由数据正在被读线程读取,则需要等待,因为此时修改预设位置中的路由数据,会造成正在读取该路由数据的线程的异常。保持等待,直至预设位置中的路由数据没有正在被读线程读取,或达到预设回收条件。在达到预设回收条件,例如达到预设回收时间时,切断预设位置中路由数据的所有读线程,以防止读线程一直读取预设位置中的路由数据,从而保证能够将路由表当前的路由数据,备份到上述预设位置。

在本发明实施例中,若预设位置中的路由数据没有正在被读线程读取,将路由表当前的路由数据,备份到预设位置,减少正在读取预设位置中的路由数据的读线程的崩溃,提高服务系统的稳定性。

本发明实施例还提供了一种负载均衡装置,参见图4,该装置包括:

信息获取模块401,用于获取服务系统中各服务节点的负载信息;

权重确定模块402,用于通过预设均衡算法,利用各上述服务节点的负载信息,确定各上述服务节点当前的负载权重;

数据备份模块403,用于将路由表当前的路由数据备份到预设位置;

数据更新模块404,用于按照各上述服务节点当前的负载权重,更新上述预设位置中的路由数据,得到更新后的路由数据;

路由更新模块405,用于将上述更新后的路由数据配置为上述路由表当前的路由数据。

在本发明实施例中,利用各服务节点的负载信息,确定各服务节点当前的负载权重,能够根据各服务节点实时的负载信息,配置各服务节点的负载,各服务节点的负载更加合理,可以提高服务系统的处理效率。在更新路由数据时更新备份的路由数据,在路由数据更新完毕后,将更新后的路由数据配置为路由表当前的路由数据,读取路由表时不需要加锁,更新路由数据不影响路由表的读取,能够提高服务形同的性能和每秒查询率。

可选的,上述负载信息包括上述服务节点的响应时间、每秒查询率及单位时间内的错误请求个数;

上述权重确定模块402,具体用于:

根据计算上述服务节点的剩余负载系数,其中,tsvr-i为服务节点i的响应时间,γ为预设系数,taverage为各上述服务节点的平均响应时间,errsvr-i为服务节点i单位时间内的错误请求的个数,ctotal为单位时间内的总请求数,count为计数函数,ai为服务节点i的剩余负载系数;

若ai≥thresholdmax,确定服务节点i当前的负载权重newweightsvr-i=0,其中,newweightsvr-i为服务节点i当前的负载权重;

若thresholdmin≤ai<thresholdmax,确定服务节点i当前的负载权重newweightsvr-i=α*weightsvr-i,其中,α为预设值,且0<α<1;

若ai<thresholdmin,确定服务节点i当前的负载权重newweightsvr-i=(1+β)*weightsvr-i,其中,β为预设值,且0<β<1。

在本发明实施例中,给出了计算负载权重的具体方法,利用服务节点当前的负载信息,实时计算服务节点当前的负载权重,能够灵活调整各服务节点的负载,可以提高服务系统的处理效率。

可选的,本发明实施例负载均衡装置还包括:列表节点添加模块,用于在ai≥thresholdmax时,将服务节点i添加到低效节点列表中,其中,所述低效节点列表中的服务节点不会被分配服务请求。

可选的,上述数据备份模块403,包括:

占用判定子模块,用于判断预设位置中的路由数据是否正在被读线程读取;

数据更新子模块,用于若上述预设位置中的路由数据没有正在被读线程读取,将路由表当前的路由数据,备份到上述预设位置。

在本发明实施例中,若预设位置中的路由数据没有正在被读线程读取,将路由表当前的路由数据,备份到预设位置,减少正在读取预设位置中的路由数据的读线程的崩溃,提高服务系统的稳定性。

可选的,本发明实施例负载均衡装置还包括:

注册模块,用于向上述服务系统发送注册请求,获取上述服务系统根据上述注册请求返回的服务信息,其中,上述服务信息包括服务节点列表及各上述服务节点的负载权重。

本发明实施例还提供了一种电子设备,如图5所示,包括处理器501、通信接口502、存储器503和通信总线504,其中,处理器501,通信接口502,存储器503通过通信总线504完成相互间的通信,

存储器503,用于存放计算机程序;

处理器501,用于执行存储器503上所存放的程序时,实现如下步骤:

获取服务系统中各服务节点的负载信息;

通过预设均衡算法,利用各上述服务节点的负载信息,确定各上述服务节点当前的负载权重;

将路由表当前的路由数据备份到预设位置;

按照各上述服务节点当前的负载权重,更新上述预设位置中的路由数据,得到更新后的路由数据;

将上述更新后的路由数据配置为上述路由表当前的路由数据。

在本发明实施例中,利用各服务节点的负载信息,确定各服务节点当前的负载权重,能够根据各服务节点实时的负载信息,配置各服务节点的负载,各服务节点的负载更加合理,可以提高服务系统的处理效率。在更新路由数据时更新备份的路由数据,在路由数据更新完毕后,将更新后的路由数据配置为路由表当前的路由数据,读取路由表时不需要加锁,更新路由数据不影响路由表的读取,能够提高服务形同的性能和每秒查询率。

可选的,处理器501,用于执行存储器503上所存放的程序时,还能够实现上述实施例中的任一负载均衡方法。

上述电子设备提到的通信总线可以是外设部件互连标准(peripheralcomponentinterconnect,简称pci)总线或扩展工业标准结构(extendedindustrystandardarchitecture,简称eisa)总线等。该通信总线可以分为地址总线、数据总线、控制总线等。为便于表示,图中仅用一条粗线表示,但并不表示仅有一根总线或一种类型的总线。

通信接口用于上述电子设备与其他设备之间的通信。

存储器可以包括随机存取存储器(randomaccessmemory,简称ram),也可以包括非易失性存储器(non-volatilememory),例如至少一个磁盘存储器。可选的,存储器还可以是至少一个位于远离前述处理器的存储装置。

上述的处理器可以是通用处理器,包括中央处理器(centralprocessingunit,简称cpu)、网络处理器(networkprocessor,简称np)等;还可以是数字信号处理器(digitalsignalprocessing,简称dsp)、专用集成电路(applicationspecificintegratedcircuit,简称asic)、现场可编程门阵列(field-programmablegatearray,简称fpga)或者其他可编程逻辑器件、分立门或者晶体管逻辑器件、分立硬件组件。

在本发明提供的又一实施例中,还提供了一种计算机可读存储介质,该计算机可读存储介质中存储有指令,当其在计算机上运行时,使得计算机执行上述实施例中任一所述的负载均衡方法。

在本发明提供的又一实施例中,还提供了一种包含指令的计算机程序产品,当其在计算机上运行时,使得计算机执行上述实施例中任一所述的负载均衡方法。

在上述实施例中,可以全部或部分地通过软件、硬件、固件或者其任意组合来实现。当使用软件实现时,可以全部或部分地以计算机程序产品的形式实现。所述计算机程序产品包括一个或多个计算机指令。在计算机上加载和执行所述计算机程序指令时,全部或部分地产生按照本发明实施例所述的流程或功能。所述计算机可以是通用计算机、专用计算机、计算机网络、或者其他可编程装置。所述计算机指令可以存储在计算机可读存储介质中,或者从一个计算机可读存储介质向另一个计算机可读存储介质传输,例如,所述计算机指令可以从一个网站站点、计算机、服务器或数据中心通过有线(例如同轴电缆、光纤、数字用户线(dsl))或无线(例如红外、无线、微波等)方式向另一个网站站点、计算机、服务器或数据中心进行传输。所述计算机可读存储介质可以是计算机能够存取的任何可用介质或者是包含一个或多个可用介质集成的服务器、数据中心等数据存储设备。所述可用介质可以是磁性介质,(例如,软盘、硬盘、磁带)、光介质(例如,dvd)、或者半导体介质(例如固态硬盘solidstatedisk(ssd))等。

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

本说明书中的各个实施例均采用相关的方式描述,各个实施例之间相同相似的部分互相参见即可,每个实施例重点说明的都是与其他实施例的不同之处。尤其,对于装置、电子设备及存储介质的实施例而言,由于其基本相似于方法实施例,所以描述的比较简单,相关之处参见方法实施例的部分说明即可。

以上所述仅为本发明的较佳实施例而已,并非用于限定本发明的保护范围。凡在本发明的精神和原则之内所作的任何修改、等同替换、改进等,均包含在本发明的保护范围内。

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