负载均衡方法及装置、计算机存储介质与流程

专利2022-06-30  56


本公开涉及分布式技术领域,尤其涉及一种负载均衡方法及装置、计算机存储介质。



背景技术:

分布式一致性哈希算法提供了一种不同模块与节点之间的映射规则,是去中心化分布式系统常用的协同方案,它提供了这样的一个哈希表,当重新调整大小的时候,平均只有部分关键字值(key)需要重新映射哈希槽,而不像传统哈希表那样几乎所有key需要重新映射哈希槽。一致性哈希算法能保证在分布式环境中,key与节点之间的映射关系不会受节点的增加和删除而产生重大的变化。然而,对于已经使用一致性哈希算法的分布式系统,为解决该分布式系统负载不均衡的问题,需要彻底改变原有的调度架构,成本较大。



技术实现要素:

为克服相关技术中存在的问题,本公开提供一种负载均衡方法及装置、计算机存储介质。

根据本公开实施例的第一方面,提供一种负载均衡方法,所述方法包括:

获取各个服务器节点的负载数据;

根据所述负载数据,确定分布式系统中各个服务器节点包含的虚拟节点的个数;

向所述各个服务器节点发送被分配的虚拟节点的个数信息,以使所述各个服务器节点根据所述个数信息调整当前的虚拟节点,所述个数信息指示所述虚拟节点的个数。

上述方案中,所述方法还包括:

根据所述负载数据,构造一致性哈希函数;

调整所述一致性哈希函数中各个服务器节点包含的虚拟节点的个数,并使用调整虚拟节点个数后的一致性哈希函数模拟计算各个服务器节点的负载数据,直至模拟计算得到的负载数据满足预设负载均衡标准;

根据满足所述预设负载均衡标准时一致性哈希函数中各个服务器节点包含的虚拟节点的个数,确定分布式系统中各个服务器节点包含的虚拟节点的个数。

上述方案中,所述方法还包括:

基于各个服务器节点包含的虚拟节点的个数,确定所述虚拟节点的个数发生变化的第一服务器节点;

所述向所述各个服务器节点发送被分配的虚拟节点的个数信息,包括:

向所述第一服务器节点发送所述个数信息。

上述方案中,所述向所述各个服务器节点发送被分配的虚拟节点的个数信息,包括:

通过所述第一服务器节点向所述分布式系统中虚拟节点的个数未发生变化的第二服务器节点发送变化信息,所述变化信息指示所述第一服务器节点的虚拟节点的个数发生变化。

上述方案中,所述负载数据包括下述数据中的一种或几种:

网卡流量;

中央处理器(centralprocessingunit,cpu)内存;

每秒请求数(qps)。

根据本公开实施例的第二方面,提供一种负载均衡装置,所述装置包括:

获取模块,被配置为获取各个服务器节点的负载数据;

确定模块,被配置为根据所述负载数据,确定分布式系统中各个服务器节点包含的虚拟节点的个数;

通知模块,被配置为向所述各个服务器节点发送被分配的虚拟节点的个数信息,以使所述各个服务器节点根据所述个数信息调整当前的虚拟节点,所述个数信息指示所述虚拟节点的个数。

上述方案中,所述确定模块,被配置为:

根据所述负载数据,构造一致性哈希函数;

调整所述一致性哈希函数中各个服务器节点包含的虚拟节点的个数,并使用调整虚拟节点个数后的一致性哈希函数模拟计算各个服务器节点的负载数据,直至模拟计算得到的负载数据满足预设负载均衡标准;

根据满足所述预设负载均衡标准时一致性哈希函数中各个服务器节点包含的虚拟节点的个数,确定分布式系统中各个服务器节点包含的虚拟节点的个数。

上述方案中,所述确定模块,还被配置为:

基于各个服务器节点包含的虚拟节点的个数,确定所述虚拟节点的个数发生变化的第一服务器节点;

所述通知模块,被配置为:

向所述第一服务器节点发送所述个数信息。

上述方案中,所述通知模块,被配置为:

通过所述第一服务器节点向所述分布式系统中的第二服务器节点发送变化信息,所述变化信息指示所述第一服务器节点的虚拟节点的个数发生变化。

上述方案中,所述负载数据包括下述数据中的一种或几种:

网卡流量;

cpu内存;

qps。

根据本公开实施例的第三方面,提供一种负载均衡装置,包括:

处理器;

用于存储可执行指令的存储器;

其中,所述处理器被配置为:执行所述可执行指令以实现前述任意一个方案所述的负载均衡方法。

根据本公开实施例的第四方面,提供一种计算机存储介质,所述计算机存储介质中存储有可执行指令,所述可执行指令被处理器执行时,使得所述处理器执行前述任意一个方案所述的负载均衡方法。

本公开的实施例提供的技术方案可以包括以下有益效果:

获取负载数据;根据所述负载数据,确定分布式系统中各个服务器节点包含的虚拟节点的个数;向所述各个服务器节点发送被分配的虚拟节点的个数信息,以使所述各个服务器节点根据所述个数信息调整当前的虚拟节点,所述个数信息指示所述虚拟节点的个数;如此,在不需要改变现有的基于一致性哈希的分布式系统的架构的情况下,实现了负载均衡。

应当理解的是,以上的一般描述和后文的细节描述仅是示例性和解释性的,并不能限制本公开。

附图说明

此处的附图被并入说明书中并构成本说明书的一部分,示出了符合本发明的实施例,并与说明书一起用于解释本发明的原理。在附图中:

图1是根据一示例性实施例示出的一种负载均衡方法的流程示意图;

图2是根据一示例性实施例示出的现有技术中采用一致性哈希的各服务器节点的虚拟节点的示意图;

图3是根据一示例性实施例示出的本申请采用一致性哈希的各服务器节点的虚拟节点的示意图;

图4是根据一示例性实施例示出的另一种负载均衡方法的流程示意图;

图5是根据一示例性实施例示出的小服务集群上线后的流量效果图;

图6(a)是根据一示例性实施例示出的大集群上线前的日均流量分布图;

图6(b)是根据一示例性实施例示出的大集群上线后的日均流量分布图;

图7是根据一示例性实施例示出的一种负载均衡装置的框图;

图8是根据一示例性实施例示出的一种实现负载均衡处理的装置800的框图。

具体实施方式

这里将详细地对示例性实施例进行说明,其示例表示在附图中。下面的描述涉及附图时,除非另有表示,不同附图中的相同数字表示相同或相似的要素。以下示例性实施例中所描述的实施方式并不代表与本申请实施例相一致的所有实施方式。相反,它们仅是与如所附权利要求书中所详述的、本申请实施例的一些方面相一致的装置和方法的例子。

在本公开实施例使用的术语是仅仅出于描述特定实施例的目的,而非旨在限制本公开实施例。在本公开实施例和所附权利要求书中所使用的单数形式的“一种”、“”和“该”也旨在包括多数形式,除非上下文清楚地表示其他含义。还应当理解,本文中使用的术语“和/或”是指并包含一个或多个相关联的列出项目的任何或所有可能组合。

应当理解,尽管在本公开实施例可能采用术语第一、第二、第三等来描述各种信息,但这些信息不应限于这些术语。这些术语仅用来将同一类型的信息彼此区分开。例如,在不脱离本公开实施例范围的情况下,第一信息也可以被称为第二信息,类似地,第二信息也可以被称为第一信息。取决于语境,如在此所使用的词语“如果”及“若”可以被解释成为“在……时”或“当……时”或“响应于确定”。

为了更好地理解本申请的技术方案,下面详细介绍一下技术背景。

talos作为高吞吐型的消息队列服务,随着业务增长,带宽往往会成为瓶颈。如果网卡流量不均衡,就会产生集群网卡资源的木桶效应——当集群中使用网卡最多的机器达到资源瓶颈就要触发扩容,即便此时该集群其他节点网卡有大量富余,机器成本因此浪费。且随着业务量越来越多,集群规模不断变大,问题变得更加明显。以小米某线上集群为例,该集群150台机器,将各节点的日流量均值绘制成散点图以方便观察其流量均衡程度。其中最高流量324m,最低134m,相差两倍不止。分析此问题,机器节点网卡流量的大小,和该节点所伺服(serve)的所有partition流量之和呈正相关。要解决节点间网卡负载不均衡的问题,需要调整partition在各节点的分布情况(即改变partition的调度关系)。

下面,将简单介绍下优化前talos所使用的调度机制。

talos使用一致性哈希来约定partition调度关系。简单来讲,一致性哈希可以理解为一个函数,y=consistenthash(x)。任意的x取值都能映射为一个固定区间内的唯一数值y。举例说明,我们将10节点集群中各节点做映射,那么区间被分成了10份。同样将partition映射也映射到环上,根据其位置区间,来决定由哪个节点所伺服。集群所有节点都遵从这个约定从而调度信息一致。实际上,为了使圆环划分的更加均匀和节点上下线更加稳定,每个机器节点将对应多个虚拟节点以力求平均。传统的一致性哈希,每个节点映射的虚拟节点个数是一致的。例如,talos每个机器节点对应的虚拟节点个数都是2000个。可以理解,使用一致性哈希的调度方式,力求的是partition个数分布的尽量均衡,各partition在调度中的权重是一样的,并不关心partition其他指标(例如qps和流量)的差异,且一致性哈希算法的映射关系我们无法干预和调节。

基于此,本实施例提供一种负载均衡的方法,该负载均衡方法应用于分布式系统的服务器中,比如,所述服务器包括但不限于普通服务器或云服务器等。参考图1,图1是根据一示例性实施例示出的一种负载均衡方法的流程图,如图1所示,该负载均衡方法包括以下步骤:

在步骤s11中,获取各个服务器节点的负载数据。

在本实施例中,所述负载数据包括下述数据中的一种或几种:

网卡流量;

cpu内存;

每秒请求数(qps)。

在一些实施方式中,可以通过druid获取负载数据。其中,druid是一个高效的数据查询系统。

需要说明的是,本申请并不对获取负载数据的方式进行限定。

在步骤s12中,根据所述负载数据为分布式系统中各个服务器节点确定虚拟节点的个数。

在一些实施方式中,根据所述负载数据为分布式系统中各个服务器节点确定虚拟节点的个数,包括:

根据各个服务器节点的所述负载数据,构造一致性哈希函数;

调整所述一致性哈希函数中各个服务器节点包含的虚拟节点的个数,并使用调整虚拟节点个数后的一致性哈希函数模拟计算各个服务器节点的负载数据,直至模拟计算得到的负载数据满足预设负载均衡标准;

根据满足所述预设负载均衡标准时一致性哈希函数中各个服务器节点包含的虚拟节点的个数,确定分布式系统中各个服务器节点包含的虚拟节点的个数。

本实施例中,所述预设负载均衡标准包括负载均衡的目标值。例如,设定目标值为10%,则目标是调整集群最大日均流量与最小日均流量在集群日均流量的10%范围内。

需要说明的是,所述预设负载均衡标准可根据需求进行设定或调整。

如此,根据负载数据构造一致性哈希函数,模拟调整其一致性哈希函数虚拟节点的个数计算负载,直到符合预期,即是需要的虚拟节点个数分布,进而触发各个服务器节点根据该分布中对应虚拟节点的个数调整当前的虚拟节点。

实际应用中,我们引入负载数据参与一致性哈希函数中创建分区(partition)的调度决策。通过在调度策略中引入负载数据反馈机制,调节一致性哈希虚拟节点个数,达到负载均衡。具体地,获得监控到的负载数据,对比服务器节点的负载值与集群各服务器节点负载均值;如果该节点负载值较大,则通过减少该节点的虚拟节点个数减少所提供的partition个数;如果该节点负载值较小,则通过增多该节点的虚拟节点个数增多所提供的partition个数,不断反馈。通过监控反馈和虚拟节点不断的调整,最终可以找到符合各节点负载均衡分布的一致性哈希虚拟节点分布。需要说明的是,控制每次迁移的partition个数,保证集群整体稳定性;计算方差决定是否调整,以防止无谓的震荡调整或往更坏的方向调整。方差能反应离散程度,只有当模拟调整后的方差变小才触发调整;设定最大调节次数,以设定调整目标无法达到时的无限模拟计算。

参考图2,图2示出了现有技术中采用一致性哈希的各服务器节点的虚拟节点的示意图。如图2所示,现有采用一致性哈希的各服务器节点包含的虚拟节点个数是相同的,服务器节点rs0、rs1、rs2、rs3、rs4,各包含有两个虚拟节点。换言之,每个服务器节点的虚拟节点的个数是相同的。

参考图3,图3示出了本实施例中采用一致性哈希的各服务器节点的虚拟节点的示意图。如图3所示,各个服务器节点包含的虚拟节点个数不相同。例如,服务器节点rs0包含两个虚拟节点;rs1包含一个虚拟节点;rs2包含两个虚拟节点;rs3包含两个虚拟节点;rs4包含三个虚拟节点。

需要说明的是,本申请并不对分布式系统中的服务器节点的数量进行限定。

实际应用中,为分布式系统中各个服务器节点配置的虚拟节点的个数初始值可以是相同的。当然,还可以根据各个服务器的优先级不同,为分布式系统中各个服务器节点配置不同个数的虚拟节点。

在步骤s13中,通知所述各个服务器节点被分配的虚拟节点的个数,以使所述各个服务器节点根据被分配的虚拟节点的个数调整当前的虚拟节点。

本实施例所述的方法可应用于分布式系统中任意一个服务器中,运行该方法的服务器会负责完成根据阈值和监控值模拟计算,控制迁移量,按规定时间间隔触发等逻辑。集群的可用性不依赖该服务器,该服务器挂掉只是停止了集群的负载均衡调整,集群会继续按照当前的虚拟节点分布进行调度运行,不影响集群正常运行。

本实施例提供的技术方案,获取各个服务器节点的负载数据;根据所述负载数据,确定分布式系统中各个服务器节点包含的虚拟节点的个数;向所述各个服务器节点发送被分配的虚拟节点的个数信息,以使所述各个服务器节点根据所述个数信息调整当前的虚拟节点;如此,在不需要改变现有的基于一致性哈希的分布式系统的架构的情况下,实现了负载均衡。

本实施例还提供另一种负载均衡的方法。该负载均衡方法应用于分布式系统的服务器中,比如,所述服务器包括但不限于普通服务器或云服务器等。参考图4,图4示出了另一种负载均衡方法的流程图,如图4所示,图1所示的方法还包括以下步骤。在步骤s41中,基于各个服务器节点包含的虚拟节点的个数,确定所述虚拟节点的个数发生变化的第一服务器节点。这里,所述第一服务器节点是分布式系统中虚拟节点个数将发生变化的服务器节点。

在一些实施方式中,所述确定所述虚拟节点的个数发生变化的第一服务器节点,包括:

获取在根据负载数据确定虚拟节点的个数之前,各个服务器节点的虚拟节点的初始个数;

根据所述初始个数以及所述个数,确定所述虚拟节点的个数发生变化的第一服务器节点。

参考图4,在本实施例中,图1所示的步骤s13,包括以下步骤:

在步骤s42中,向第一服务器节点发送个数信息。

其中,所述个数信息用于表征所述第一服务器节点应该调整至的虚拟节点的个数。

如此,使得第一服务器节点获知虚拟节点变更通知,以便于所述第一服务节点根据该节点变更通知调整虚拟节点的个数。

参考图4,在本实施例中,图1所示的步骤s13,包括以下步骤:

在步骤s43中,通过所述第一服务器节点向所述分布式系统中虚拟节点的个数未发生变化的第二服务器节点发送变化信息,所述变化信息指示所述第一服务器节点的虚拟节点的个数发生变化。

这里,所述第二服务器节点是分布式系统中虚拟节点个数未发生变化的服务器节点。

图5是根据一示例性实施例示出的小服务集群上线后的流量效果图,曲线代表各服务器的流量数值,从图5可以看出,上线后各服务器的流量值趋于均衡状态。

以大集群如talos集群为例,将各服务器节点的日流量均值制作成散点图。图6(a)是根据一示例性实施例示出的大集群上线前的日均流量分布图,从图6(a)可以看出,上线前流量分布不太集中;仍以上述大集群如talos集群为例,将优化后各服务器节点的日流量均值制作成散点图,图6(b)是根据一示例性实施例示出的大集群上线后的日均流量分布图,从图6(b)可以看出,上线后流量分布更集中,也即,优化后各节点流量值明显聚合。经计算,此集群150台机器,可节省因网卡达到瓶颈而需要扩容的机器35台。

图7是根据一示例性实施例示出的一种负载均衡装置的框图。该负载均衡装置应用于分布式系统中,参照图7,该装置包括获取模块10、确定模块20和通知模块30。

获取模块10,被配置为获取各个服务器节点的负载数据;

确定模块20,被配置为根据所述负载数据,确定分布式系统中各个服务器节点包含的虚拟节点的个数;

通知模块30,被配置为向所述各个服务器节点发送被分配的虚拟节点的个数信息,以使所述各个服务器节点根据所述个数信息调整当前的虚拟节点,所述个数信息指示所述虚拟节点的个数。

上述方案中,所述确定模块20,还被配置为:

根据所述负载数据,构造一致性哈希函数;

调整所述一致性哈希函数中各个服务器节点包含的虚拟节点的个数,并使用调整虚拟节点个数后的一致性哈希函数模拟计算各个服务器节点的负载数据,直至模拟计算得到的负载数据满足预设负载均衡标准;

根据满足所述预设负载均衡标准时一致性哈希函数中各个服务器节点包含的虚拟节点的个数,确定分布式系统中各个服务器节点包含的虚拟节点的个数。

在一些实施例中,所述确定模块20,还被配置为:基于各个服务器节点包含的虚拟节点的个数,确定所述虚拟节点的个数发生变化的第一服务器节点;

所述通知模块30,被配置为:

向所述第一服务器节点发送所述个数信息。

在一些实施例中,所述通知模块30,被配置为:

通过所述第一服务器节点向所述分布式系统中的第二服务器节点发送变化信息,所述变化信息指示所述第一服务器节点的虚拟节点的个数发生变化。

在一些实施例中,所述负载数据包括下述数据中的一种或几种:

网卡流量;

cpu内存;

qps。

关于上述实施例中的装置,其中各个模块执行操作的具体方式已经在有关该方法的实施例中进行了详细描述,此处将不做详细阐述说明。

实际应用中,上述获取模块10、确定模块20和通知模块30的具体结构均可由该负载均衡装置或该负载均衡装置所属第一设备中的中央处理器(cpu,centralprocessingunit)、微处理器(mcu,microcontrollerunit)、数字信号处理器(dsp,digitalsignalprocessing)或可编程逻辑器件(plc,programmablelogiccontroller)等实现。

本实施例所述的负载均衡装置可设置于分布式系统中的任一服务器如主服务器中。

当然,所述负载均衡装置还可以作为一个独立设备而存在。

本领域技术人员应当理解,本公开实施例的负载均衡装置中各处理模块的功能,可参照前述应用于智能家居系统侧的负载均衡方法的相关描述而理解,本公开实施例的负载均衡装置中各处理模块,可通过实现本公开实施例所述的功能的模拟电路而实现,也可以通过执行本公开实施例所述的功能的软件在电子设备上的运行而实现。

本公开实施例所述的负载均衡装置,在不需要改变现有的基于一致性哈希的分布式系统的架构的情况下,实现了负载均衡。

本公开实施例还记载了一种负载均衡装置,所述装置包括:存储器、处理器及存储在存储器上并可在处理器上运行的计算机程序,所述处理器执行所述程序时实现前述任意一个应用于第一设备的技术方案提供的负载均衡方法。

作为一种实施方式,所述处理器执行所述程序时实现:

获取各个服务器节点的负载数据;

根据所述负载数据,确定分布式系统中各个服务器节点包含的虚拟节点的个数;

向所述各个服务器节点发送被分配的虚拟节点的个数信息,以使所述各个服务器节点根据所述个数信息调整当前的虚拟节点,所述个数信息指示所述虚拟节点的个数。

作为一种实施方式,所述处理器执行所述程序时实现:

根据所述负载数据,构造一致性哈希函数;

调整所述一致性哈希函数中各个服务器节点包含的虚拟节点的个数,并使用调整虚拟节点个数后的一致性哈希函数模拟计算各个服务器节点的负载数据,直至模拟计算得到的负载数据满足预设负载均衡标准;

根据满足所述预设负载均衡标准时一致性哈希函数中各个服务器节点包含的虚拟节点的个数,确定分布式系统中各个服务器节点包含的虚拟节点的个数。

作为一种实施方式,所述处理器执行所述程序时实现:

基于各个服务器节点包含的虚拟节点的个数,确定所述虚拟节点的个数发生变化的第一服务器节点;

向所述第一服务器节点发送所述个数信息。

作为一种实施方式,所述处理器执行所述程序时实现:

通过所述第一服务器节点向所述分布式系统中虚拟节点的个数未发生变化的第二服务器节点发送变化信息,所述变化信息指示所述第一服务器节点的虚拟节点的个数发生变化。

本申请实施例提供的负载均衡装置,在不需要改变现有的基于一致性哈希的分布式系统的架构的情况下,实现了负载均衡。

本申请实施例还记载了一种计算机存储介质,所述计算机存储介质中存储有计算机可执行指令,所述计算机可执行指令用于执行前述各个实施例所述的负载均衡方法。也就是说,所述计算机可执行指令被处理器执行之后,能够实现前述任意一个技术方案提供的负载均衡方法。

本领域技术人员应当理解,本实施例的计算机存储介质中各程序的功能,可参照前述各实施例所述的负载均衡方法的相关描述而理解。

图8是根据一示例性实施例示出的一种用于实现负载均衡处理的装置900的框图。例如,装置900可以被提供为一服务器。参照图8,装置900包括处理组件922,其进一步包括一个或多个处理器,以及由存储器932所代表的存储器资源,用于存储可由处理组件922的执行的指令,例如应用程序。存储器932中存储的应用程序可以包括一个或一个以上的每一个对应于一组指令的模块。此外,处理组件922被配置为执行指令,以执行上述应用于服务器侧的数据处理方法。

装置900还可以包括一个电源组件926被配置为执行装置900的电源管理,一个有线或无线网络接口950被配置为将装置900连接到网络,和一个输入输出(i/o)接口958。装置900可以操作基于存储在存储器932的操作系统,例如windowsservertm,macosxtm,unixtm,linuxtm,freebsdtm或类似。

本公开实施例所记载的技术方案之间,在不冲突的情况下,可以任意组合。

本领域技术人员在考虑说明书及实践这里公开的发明后,将容易想到本发明的其它实施方案。本申请旨在涵盖本发明的任何变型、用途或者适应性变化,这些变型、用途或者适应性变化遵循本发明的一般性原理并包括本公开未公开的本技术领域中的公知常识或惯用技术手段。说明书和实施例仅被视为示例性的,本发明的真正范围和精神由下面的权利要求指出。

应当理解的是,本发明并不局限于上面已经描述并在附图中示出的精确结构,并且可以在不脱离其范围进行各种修改和改变。本发明的范围仅由所附的权利要求来限制。


技术特征:

1.一种负载均衡方法,其特征在于,所述方法包括:

获取各个服务器节点的负载数据;

根据所述负载数据,确定分布式系统中各个服务器节点包含的虚拟节点的个数;

向所述各个服务器节点发送被分配的虚拟节点的个数信息,以使所述各个服务器节点根据所述个数信息调整当前的虚拟节点,所述个数信息指示所述虚拟节点的个数。

2.根据权利要求1所述的负载均衡方法,其特征在于,所述根据所述负载数据,确定分布式系统中各个服务器节点包含的虚拟节点的个数,包括:

根据所述负载数据,构造一致性哈希函数;

调整所述一致性哈希函数中各个服务器节点包含的虚拟节点的个数,并使用调整虚拟节点个数后的一致性哈希函数模拟计算各个服务器节点的负载数据,直至模拟计算得到的负载数据满足预设负载均衡标准;

根据满足所述预设负载均衡标准时一致性哈希函数中各个服务器节点包含的虚拟节点的个数,确定分布式系统中各个服务器节点包含的虚拟节点的个数。

3.根据权利要求1所述的负载均衡方法,其特征在于,所述方法还包括:

基于各个服务器节点包含的虚拟节点的个数,确定所述虚拟节点的个数发生变化的第一服务器节点;

所述向所述各个服务器节点发送被分配的虚拟节点的个数信息,包括:

向所述第一服务器节点发送所述个数信息。

4.根据权利要求3所述的负载均衡方法,其特征在于,所述向所述各个服务器节点发送被分配的虚拟节点的个数信息,包括:

通过所述第一服务器节点向所述分布式系统中虚拟节点的个数未发生变化的第二服务器节点发送变化信息,所述变化信息指示所述第一服务器节点的虚拟节点的个数发生变化。

5.根据权利要求1至4任一项所述的负载均衡方法,其特征在于,所述负载数据包括下述数据中的一种或几种:

网卡流量;

中央处理器cpu内存;

每秒请求数qps。

6.一种负载均衡装置,其特征在于,所述装置包括:

获取模块,被配置为获取各个服务器节点的负载数据;

确定模块,被配置为根据所述负载数据,确定分布式系统中各个服务器节点包含的虚拟节点的个数;

通知模块,被配置为向所述各个服务器节点发送被分配的虚拟节点的个数信息,以使所述各个服务器节点根据所述个数信息调整当前的虚拟节点,所述个数信息指示所述虚拟节点的个数。

7.根据权利要求6所述的负载均衡装置,其特征在于,所述确定模块,还被配置为:

根据所述负载数据,构造一致性哈希函数;

调整所述一致性哈希函数中各个服务器节点包含的虚拟节点的个数,并使用调整虚拟节点个数后的一致性哈希函数模拟计算各个服务器节点的负载数据,直至模拟计算得到的负载数据满足预设负载均衡标准;

根据满足所述预设负载均衡标准时一致性哈希函数中各个服务器节点包含的虚拟节点的个数,确定分布式系统中各个服务器节点包含的虚拟节点的个数。

8.根据权利要求6所述的负载均衡装置,其特征在于,所述确定模块,还被配置为:基于各个服务器节点包含的虚拟节点的个数,确定所述虚拟节点的个数发生变化的第一服务器节点;

所述通知模块,被配置为:

向所述第一服务器节点发送所述个数信息。

9.根据权利要求8所述的负载均衡装置,其特征在于,所述通知模块,被配置为:

通过所述第一服务器节点向所述分布式系统中的第二服务器节点发送变化信息,所述变化信息指示所述第一服务器节点的虚拟节点的个数发生变化。

10.根据权利要求7至9任一项所述的负载均衡装置,其特征在于,所述负载数据包括下述数据中的一种或几种:

网卡流量;

中央处理器cpu内存;

每秒请求数qps。

11.一种负载均衡装置,包括:

处理器;

用于存储可执行指令的存储器;

其中,所述处理器被配置为:执行所述可执行指令以实现权利要求1至5任一项所述的负载均衡方法。

12.一种计算机存储介质,所述计算机存储介质中存储有可执行指令,所述可执行指令被处理器执行时,使得所述处理器执行权利要求1至5任一项所述的负载均衡方法。

技术总结
本公开是关于一种负载均衡方法及装置、计算机存储介质,属于分布式技术领域;其中,负载均衡方法包括:获取各个服务器节点的负载数据;根据所述负载数据,确定分布式系统中各个服务器节点包含的虚拟节点的个数;向所述各个服务器节点发送被分配的虚拟节点的个数信息,以使所述各个服务器节点根据所述个数信息调整当前的虚拟节点,所述个数信息指示所述虚拟节点的个数;如此,在不需要改变现有的基于一致性哈希的分布式系统的架构的情况下,实现了负载均衡。

技术研发人员:张茜
受保护的技术使用者:北京松果电子有限公司
技术研发日:2020.01.08
技术公布日:2020.06.05

转载请注明原文地址: https://bbs.8miu.com/read-55270.html

最新回复(0)