CN115033390B - 一种负载均衡的方法及装置 - Google Patents
一种负载均衡的方法及装置 Download PDFInfo
- Publication number
- CN115033390B CN115033390B CN202210951560.XA CN202210951560A CN115033390B CN 115033390 B CN115033390 B CN 115033390B CN 202210951560 A CN202210951560 A CN 202210951560A CN 115033390 B CN115033390 B CN 115033390B
- Authority
- CN
- China
- Prior art keywords
- fragments
- equipment
- load
- core resources
- balanced
- 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.)
- Active
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/46—Multiprogramming arrangements
- G06F9/50—Allocation of resources, e.g. of the central processing unit [CPU]
- G06F9/5083—Techniques for rebalancing the load in a distributed system
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/20—Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
- G06F16/27—Replication, distribution or synchronisation of data between databases or within a distributed database system; Distributed database system architectures therefor
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Databases & Information Systems (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Software Systems (AREA)
- Computing Systems (AREA)
- Data Mining & Analysis (AREA)
- Multi Processors (AREA)
Abstract
本申请公开了一种负载均衡的方法及装置,该负载均衡的方法包括:对每个设备进行分片数量均衡,并判断均衡后的分片的个数是否均衡;在判断结果为是的情况下,计算分布式集群中每个设备中各分片的核心资源的使用总量;依据每个设备中各分片的核心资源的使用总量确定待负载均衡的设备;将待负载均衡的设备中的分片与分布式集群中设备的分片进行交换,得到负载均衡的设备。本申请还公开了一种电子设备和可读存储介质。通过本申请解决了现有技术中由于对不同分片的负载评估复杂,导致适用性差的问题,在保证分片数大致相同的前提下,基于CPU使用量进行二级均衡,实现了更好的负载均衡效果。
Description
技术领域
本申请涉及到计算机技术应用领域,具体而言,涉及一种负载均衡的方法、装置、电子设备和可读存储介质。
背景技术
分布式数据库***中,范围分片是一种常用的分布式设计。范围分片不仅对应一段连续的数据范围,也需要负责其数据的读写服务,从而产生负载。
在集群中,有效地编排分片的分布,可以使整个集群的机器负载更加均匀,避免形成单机热点。
然而,实际数据处理场景中,同一张表的不同分片,其承载的流量可能有较大差异(热点分片),导致负载差异大,进而机器负载不均匀,形成单机热点,影响服务质量,降低***稳定性。并且,由于目前相关技术中由于对不同分片的负载评估复杂,导致适用性差的问题,目前尚未得到有效的解决。
发明内容
本申请实施例提供了一种负载均衡的方法、装置、电子设备和可读存储介质,以至少解决现有技术中由于对不同分片的负载评估复杂,导致适用性差的问题。
根据本申请的一个方面,提供了一种负载均衡的方法,包括:对每个设备进行分片数量均衡,并判断均衡后的分片的个数是否均衡;在判断结果为是的情况下,计算分布式集群中每个设备中各分片的核心资源的使用总量;依据每个设备中各分片的核心资源的使用总量确定待负载均衡的设备;将待负载均衡的设备中的分片与分布式集群中设备的分片进行交换,得到负载均衡的设备。
可选的,该方法还包括:在判断结果为否的情况下,通过预设负载平衡策略调整分布式集群中每个设备之间的负载均衡。
可选的,计算分布式集群中每个设备中各分片的核心资源的使用总量包括:在范围分片的维度上,依据范围分片处理读请求、写请求和冲刷操作进行计算,得到各分片的核心资源的使用量;依据每个设备中各分片的核心资源的使用量进行计算,得到每个设备的核心资源的使用总量。
可选的,依据范围分片处理读请求、写请求和冲刷操作进行计算,得到各分片的核心资源的使用量包括:获取指定线程使用核心资源的时间;依据指定线程使用核心资源的时间,确定核心资源在读请求、写请求和冲刷操作的值;依据核心资源在读请求、写请求和冲刷操作的值进行计算,得到各分片的核心资源的使用量。
可选的,获取指定线程使用核心资源的时间包括:通过预设采样逻辑获取指定线程使用核心资源的时间,其中,获取指定线程使用核心资源的时间包括:记录指定线程的起始时间和结束时间;依据起始时间和结束时间得到指定线程使用核心资源的时间。
可选的,该方法还包括:当发生切换指定线程时,计算切换线程后核心资源的使用量;将切换线程后核心资源的使用量和切换线程前核心资源的使用量进行统计。
可选的,依据每个设备中各分片的核心资源的使用总量确定待负载均衡的设备包括:依据每个设备中各分片的核心资源的使用总量,对各设备进行分类,得到第一类设备和第二类设备,其中,第一类设备的核心资源的使用总量大于第二类设备的核心资源的使用总量;将第一类设备确定为待负载均衡的设备。
可选的,将待负载均衡的设备中的分片与分布式集群中设备的分片进行交换,得到负载均衡的设备包括:将第一类设备的分片与第二类设备的分片进行交换,以使得第一类设备负载均衡。
可选的,将第一类设备的分片与第二类设备的分片进行交换包括:判断第一类设备和第二类设备的工作状态是否稳定持续;在判断结果为是的情况下,将第一类设备的分片与第二类设备的分片进行交换;其中,将第一类设备的分片与第二类设备的分片进行交换包括:判断每次交换的各分片的核心资源的使用量差值是否大于预设值,在判断结果为是的情况下,执行第一类设备的分片与第二类设备的分片的交换操作。
根据本申请的另一个方面,还提供了一种负载均衡的装置,包括:判断模块,用于对每个设备进行分片数量均衡,并判断均衡后的分片的个数是否均衡;计算模块,用于在判断结果为是的情况下,计算分布式集群中每个设备中各分片的核心资源的使用总量;确定模块,用于依据每个设备中各分片的核心资源的使用总量确定待负载均衡的设备;均衡模块,用于将待负载均衡的设备中的分片与分布式集群中设备的分片进行交换,得到负载均衡的设备。
根据本申请的另一个方面,还提供了一种电子设备,包括存储器和处理器;其中,存储器用于存储一条或多条计算机指令,其中,一条或多条计算机指令被处理器执行以实现上述的方法步骤。
根据本申请的另一个方面,还提供了一种可读存储介质,其上存储有计算机指令,其中,该计算机指令被处理器执行时实现上述的方法步骤。
在本申请实施例中,通过对每个设备进行分片数量均衡,并判断均衡后的分片的个数是否均衡;在判断结果为是的情况下,计算分布式集群中每个设备中各分片的核心资源的使用总量;依据每个设备中各分片的核心资源的使用总量确定待负载均衡的设备;将待负载均衡的设备中的分片与分布式集群中设备的分片进行交换,得到负载均衡的设备。通过本申请解决现有技术中由于对不同分片的负载评估复杂,导致适用性差的问题,在保证分片数大致相同的前提下,基于CPU使用量进行二级均衡,实现更好的负载均衡效果。
附图说明
构成本申请的一部分的附图用来提供对本申请的进一步理解,本申请的示意性实施例及其说明用于解释本申请,并不构成对本申请的不当限定。在附图中:
图1是根据本申请实施例一的一种负载均衡的方法的流程示意图;
图2是根据本申请实施例一的另一种负载均衡的方法的流程示意图;
图3是根据本申请实施例一的又一种负载均衡的方法的流程示意图;
图4是根据本申请实施例一的另一种负载均衡的方法中计算region的CPU使用量的示意图;
图5是根据本申请实施例一的一种负载均衡的方法中Region CPU UsageBalancer的示意图;
图6是根据本申请实施例二的一种负载均衡的装置的示意图。
具体实施方式
需要说明的是,在不冲突的情况下,本申请中的实施例及实施例中的特征可以相互组合。下面将参考附图并结合实施例来详细说明本申请。
需要说明的是,在附图的流程图示出的步骤可以在诸如一组计算机可执行指令的计算机***中执行,并且,虽然在流程图中示出了逻辑顺序,但是在某些情况下,可以以不同于此处的顺序执行所示出或描述的步骤。
本申请实施例涉及的技术名词:
热点:特指在分布式***当中,因为数据处理的特点,请求或者压力集中于集群一台或者几台上面的场景。
region:即分片,数据库中的概念,region负责一部分数据的读写服务,可以在机器之间迁移,同一时间,只能在一台机器上提供服务。
范围分片:分布式***常见的拆分数据的方法,通过排序后切分数据,使得每个分片包含一段连续的数据。
balancer:***中负责决策region在机器上分布的模块。
负载均衡:即是一种状态,指集群中的机器负载压力大致均衡,也常用于指代***中为了达到这一状态负责决策的模块。
实施例1
在本实施例中提供了一种负载均衡的方法,本申请实施例提供的负载均衡的方法可以适用于分布式数据库***中,在应用场景上可以包括以CPU、内存、磁盘IOPS(Input/Output Operations Per Second,每秒进行读写操作的次数)、磁盘带宽或网络为核心资源的场景,在本申请实施例中核心资源以CPU为例进行说明。
图1是根据本申请实施例一的一种负载均衡的方法的流程示意图,如图1所示,本申请实施例提供的负载均衡的方法包括如下步骤:
步骤S102,对每个设备进行分片数量均衡,并判断均衡后的分片的个数是否均衡。
其中,图2是根据本申请实施例一的另一种负载均衡的方法的流程示意图;如图2所示,本申请实施例提供的负载均衡的方法设计了两级均衡策略,第一级均衡策略:判断分片的个数是否均衡,在判断结果为是的情况下,执行第二级均衡策略,即,执行步骤S104至步骤S108(即,图2中的S2);在判断结果为否的情况下,执行通过预设负载平衡策略调整设备间的负载均衡的步骤(即图2中的S3)。
基于步骤S102的判断,图3是根据本申请实施例一的又一种负载均衡的方法的流程示意图;如图2和图3所示,在判断结果为否的情况下,通过预设负载平衡策略调整设备间的负载均衡,即,通过Simple Load Balancer完成,以保证设备上的region个数大致相同,从而实现一定程度的负载均衡效果。
由于本申请实施例应用于数据库场景,且从开源Hbase发展而来,因此继承了Hbase Simple Load Balancer的优点,即,简单易理解,以使得适用于超50%的实际数据处理使用场景。
步骤S104,在判断结果为是的情况下,计算分布式集群中每个设备中各分片的核心资源的使用总量。
本申请上述步骤S104中,计算分布式集群中每个设备中各分片的核心资源的使用总量包括:在范围分片的维度上,依据范围分片处理读请求、写请求和冲刷操作进行计算,得到各分片的核心资源的使用量;依据每个设备中各分片的核心资源的使用量进行计算,得到每个设备的核心资源的使用总量。
其中,图4是根据本申请实施例一的另一种负载均衡的方法中计算region的CPU使用量的示意图。如图4所示,分片记作region,当每个region的CPU使用量已知时,可以方便地统计出每个设备的CPU使用总量。例如,可以通过下列方式分别结算每个设备中各个region的CPU使用量:
region的CPU使用量=CPU(Read)+CPU(Write)+CPU(Flush)。
例如,设备1中有N个region,在得到N个region的CPU使用量后,通过对N个region的CPU使用量进行求和,得到设备1的CPU使用总量。
可选的,依据范围分片处理读请求、写请求和冲刷操作进行计算,得到各分片的核心资源的使用量包括:获取指定线程使用核心资源的时间;依据指定线程使用核心资源的时间,确定核心资源在读请求、写请求和冲刷操作的值;依据核心资源在读请求、写请求和冲刷操作的值进行计算,得到各分片的核心资源的使用量。
具体的,如图4所示,本申请实施例中数据库worker节点负载主要来源有:
1)实时读写请求处理;
2)Memstore(内存)写满后需要写入磁盘形成文件,即,flush过程;其中,flush是在内存的基础上进行的,首先写入文件的时候,会先将文件写到内存中,当内存写满的时候,一次性的将文件全部都写到硬盘中去保存,并清空缓存中的文件,其中,flush过程为本申请实施例中的冲刷操作;
3)文件因为各种原因(文件过多,major周期,冷热分离等)需要执行压缩Compaction。
以在线任务和离线任务的角度看待上述负载来源:读、写请求处理+flush可以看做在线任务,其优先级高,实时性要求高。而Compaction可以看做离线任务,优先级低,实时性要求低,当在线任务产生较大负载的期间可以延迟执行,甚至可以强行终止已经在执行的任务。
因为上述差异,在线任务产生的负载会更加难以预测,根据数据处理特性,容易产生突发流量和高峰低谷特性。而离线任务产生的负载则更加可控,可调。
因此,在讨论集群的负载均衡策略的时候,更多地是讨论如何均衡在线任务产生的负载。而且,Compaction产生的负载,和存储量大小息息相关,而存储量的多少又和写入请求关系紧密。通过均衡写负载,可以间接均衡Compaction产生的负载。
基于上述原因,根据region CPU进行balance时,region的CPU使用量计算如下:
region的CPU使用量=CPU(Read)+CPU(Write)+CPU(Flush)。
可选的,获取指定线程使用核心资源的时间包括:通过预设采样逻辑获取指定线程使用核心资源的时间,其中,获取指定线程使用核心资源的时间包括:记录指定线程的起始时间和结束时间;依据起始时间和结束时间得到指定线程使用核心资源的时间。
可选的,本申请实施例提供的负载均衡的方法还包括:当发生切换指定线程时,计算切换线程后核心资源的使用量;将切换线程后核心资源的使用量和切换线程前核心资源的使用量进行统计。
具体的,本申请实施例提供的负载均衡的方法中,JDK((Java Development Kit,Java语言的软件开发工具包)支持通Thread MXBean#get Current Thread CPU Tim 方法获取当前线程使用的CPU时间。其中,Thread MXBean,用于检测程序中出现死锁的线程,获取该线程的相关信息,做一些对应的操作;get Current Thread CPU Time为获取当前线程CPU时间,利用该方法,可以在处理流程的起始点记录该线程的CPU时间为C1,在处理流程的结束点记录该线程的CPU时间为C2,用C2-C1即可得到该处理流程的CPU使用量。此统计方法适用于读写请求处理流程,也适用于Flush处理流程。
本申请实施例提供的负载均衡的方法借助JDK提供的方法中获取当前线程CPU时间的get Current Thread CPU Time方法,在范围分片的维度上,可以以极低的性能开销实现CPU使用总量统计。
在本申请实施例中在统计CPU使用量时,由于Thread MXBean#get CurrentThread CPU Time方法调用并不是特别轻量,在本实施例中加入采样的逻辑,以降低统计本身对读写响应的影响。
并且,处理流程中如果切换了线程,需要统计切换线程的CPU使用量,并且最后汇总在本次统计当中(即,本申请实施例中的当发生切换指定线程时,计算切换线程后核心资源的使用量;将切换线程后核心资源的使用量和切换线程前核心资源的使用量进行统计)。
步骤S106,依据每个设备中各分片的核心资源的使用总量确定待负载均衡的设备。
本申请上述步骤S106中,基于S104中得到的每个设备中各分片region的核心资源的使用总量,依据每个设备中各分片的核心资源的使用总量,对各设备进行分类,得到第一类设备和第二类设备,其中,第一类设备的核心资源的使用总量大于第二类设备的核心资源的使用总量;将第一类设备确定为待负载均衡的设备。
具体的,在判断结果为是的情况下,执行第二级均衡策略,即,基于region的CPU使用量进行region的交换(swap),既不会破坏region个数的均衡状态,又能实现更加均衡的机器CPU利用率;其中,CPU利用率,往往是数据库场景中的主要资源瓶颈,能够很好地反映region的负载情况,也适合用于评估集群机器的均衡状况;同时,CPU使用量,以对硬件资源的消耗作为度量,可以很好的反映不同数据处理的使用方式,以及数据模型差异带来的负载差异。
其中,图5是根据本申请实施例一的一种负载均衡的方法中Region CPU UsageBalancer(分片CPU使用量均衡,即上述的第二级均衡策略)的示意图,如图5所示,当每个region的CPU使用量已知的情况下,可以方便地统计出每个设备的CPU使用总量,进而可以根据设备之间CPU使用总量的相对关系,采用分桶算法:
将CPU使用总量接近的设备归于一个桶当中,从而能够在集群范围内识别出CPU使用总量较高的设备,该设备即为热点设备。用这种方法,也可以识别出集群范围内CPU使用总量较低的设备,该设备即为冷设备。
如图5所示,3台设备(Server1、Server2、Server3)上的region个数大致相同(即,Server1的region个数为5,Server2的region个数为6,Server3的region个数为5),region的CPU使用量相对关系通过黑、白和阴影来表示,黑色和阴影代表CPU使用量高,具体规则为:黑色>阴影>白色。通过算法,可以识别出第一台设备为CPU热点设备,而剩余两台设备为冷设备。
步骤S108,将待负载均衡的设备中的分片与分布式集群中设备的分片进行交换,得到负载均衡的设备。
可选的,将待负载均衡的设备中的分片与分布式集群中设备的分片进行交换,得到负载均衡的设备包括:将第一类设备的分片与第二类设备的分片进行交换,以使得第一类设备负载均衡。
其中,如图5所示,在本申请实施例中核心资源的使用量可以记作CPU使用量,基于的region的个数均衡的前提下,使用分片CPU使用量平衡(Region CPU Usage Balancer)进行负载均衡,具体的,依据每个设备中各分片region的CPU使用量,获取各设备的设备类型,即,热点设备和冷设备(即,本申请实施例中的第一类设备和第二类设备),进而将第一类设备的region与第二类设备的region进行交换,从而实现负载均衡。
具体的,如图5所示,Server1为热点设备,Server2和Server3为冷设备,因此当识别存在CPU热点机器时,Region CPU Usage Balancer会尝试将热点设备上的region和其他设备(冷设备优先)上的region进行交换(swap)。仅通过计算,便可以知晓如何swap可以使两台设备的CPU使用量更加趋同,当存在合适的swap方案时,Region CPU Usage Balancer会执行该swap方案。因为swap是region的交换,所以Region CPU Usage Balancer基于CPU执行的任何动作都不会破坏region数目的均衡性。
可选的,将第一类设备的分片与第二类设备的分片进行交换包括:判断第一类设备和第二类设备的工作状态是否稳定持续;在判断结果为是的情况下,将第一类设备的分片与第二类设备的分片进行交换;其中,将第一类设备的分片与第二类设备的分片进行交换包括:判断每次交换的各分片的核心资源的使用量差值是否大于预设值,在判断结果为是的情况下,执行第一类设备的分片与第二类设备的分片的交换操作。
具体的,在将第一类设备的分片与第二类设备的分片进行交换的过程中,由于CPU使用量是持续变化的,因此在本实施例中Region CPU Usage Balancer在稳定持续的热点设备和冷设备之间进行swap(交换),避免过度编排。
并且,在计算swap方案时,其目的是使冷热机器的 CPU 使用量趋同,即将热机器CPU使用量高的region和冷机器CPU使用量低的region做swap,在本实施例中采用swap次数最小的方案,从而以最小的swap成本达到目的。
为了避免进行大量的swap达成机器CPU使用量的均衡,每次swap的region CPU使用量差值应该高于一个预先设定的阈值,低于该阈值的swap因为其效果太低,因此被拒绝(即,本申请实施例中的判断每次交换的各分片region的核心资源的使用量差值是否大于预设值,在判断结果为是的情况下,执行第一类设备的分片region与第二类设备的分片region的交换操作)。
本申请实施例提供的负载均衡的方法优先保证分片数目的大致相同,在此基础之上,提出了直接以分片为维度统计CPU使用量,进而依赖这一指标代表分片产生的负载进行二级均衡,二级均衡通过交换分片的方式,即实现机器负载的更加均衡,又不破坏region数的均衡状态,从而实现更好的负载均衡效果。
在本申请实施例中,通过对每个设备进行分片数量均衡,并判断均衡后的分片的个数是否均衡;在判断结果为是的情况下,计算分布式集群中每个设备中各分片的核心资源的使用总量;依据每个设备中各分片的核心资源的使用总量确定待负载均衡的设备;将待负载均衡的设备中的分片与分布式集群中设备的分片进行交换,得到负载均衡的设备。通过本申请解决现有技术中由于对不同分片的负载评估复杂,导致适用性差的问题,在保证分片数大致相同的前提下,基于CPU使用量进行二级均衡,实现更好的负载均衡效果。
实施例2
根据本申请的另一个方面,还提供了一种负载均衡的装置,图6是根据本申请实施例二的一种负载均衡的装置的示意图,如图6所示,本申请实施例提供的负载均衡的装置包括:判断模块62、计算模块64、确定模块66和均衡模块68。
判断模块62,用于对每个设备进行分片数量均衡,并判断均衡后的分片的个数是否均衡;计算模块64,用于在判断结果为是的情况下,计算分布式集群中每个设备中各分片的核心资源的使用总量;确定模块66,用于依据每个设备中各分片的核心资源的使用总量确定待负载均衡的设备;均衡模块68,用于将待负载均衡的设备中的分片与分布式集群中设备的分片进行交换,得到负载均衡的设备。
可选的,本申请实施例提供的负载均衡的装置还包括:负载均衡模块,用于在判断结果为否的情况下,通过预设负载平衡策略调整分布式集群中每个设备之间的负载均衡。
可选的,计算模块64包括:第一计算单元,用于在范围分片的维度上,依据范围分片处理读请求、写请求和冲刷操作进行计算,得到各分片的核心资源的使用量;第二计算单元,用于依据每个设备中各分片的核心资源的使用量进行计算,得到每个设备的核心资源的使用总量。
可选的,第一计算单元包括:获取子单元,用于获取指定线程使用核心资源的时间;第一计算子单元,用于依据指定线程使用核心资源的时间,确定核心资源在读请求、写请求和冲刷操作的值;第二计算子单元,用于依据核心资源在读请求、写请求和冲刷操作的值进行计算,得到各分片的核心资源的使用量。
可选的,获取子单元,还用于通过预设采样逻辑获取指定线程使用核心资源的时间,其中,获取指定线程使用核心资源的时间包括:记录指定线程的起始时间和结束时间;依据起始时间和结束时间得到指定线程使用核心资源的时间。
可选的,本申请实施例提供的负载均衡的装置还包括:第三计算单元,用于当发生切换指定线程时,计算切换线程后核心资源的使用量;统计单元,用于将切换线程后核心资源的使用量和切换线程前核心资源的使用量进行统计。
可选的,确定模块66包括:分类单元,用于依据每个设备中各分片的核心资源的使用总量,对各设备进行分类,得到第一类设备和第二类设备,其中,第一类设备的核心资源的使用总量大于第二类设备的核心资源的使用总量;确定单元,用于将第一类设备确定为待负载均衡的设备。
可选的,均衡模块68包括:均衡单元,用于将第一类设备的分片与第二类设备的分片进行交换,以使得第一类设备负载均衡。
可选的,均衡单元包括:判断子单元,用于判断第一类设备和第二类设备的工作状态是否稳定持续;均衡子单元,用于在判断结果为是的情况下,将第一类设备的分片与第二类设备的分片进行交换;其中,将第一类设备的分片与第二类设备的分片进行交换包括:判断每次交换的各分片的核心资源的使用量差值是否大于预设值,在判断结果为是的情况下,执行第一类设备的分片与第二类设备的分片的交换操作。
实施例3
根据本申请的另一个方面,还提供了一种电子设备,包括存储器和处理器;其中,存储器用于存储一条或多条计算机指令,一条或多条计算机指令被处理器执行以实现上述实施例1中的方法步骤。
其中,本申请的实施例可以提供一种电子设备,该电子设备可以是电子设备群中的任意一个电子设备设备。可选地,在本实施例中,上述电子设备也可以替换为移动终端等终端设备。
可选地,在本实施例中,上述电子设备可以位于计算机网络的多个网络设备中的至少一个网络设备。
可选地,该电子设备可以包括:一个或多个处理器以及存储器。
其中,存储器可用于存储软件程序以及模块,如本申请实施例中的负载均衡的方法和装置对应的程序指令/模块,处理器通过运行存储在存储器内的软件程序以及模块,从而执行各种功能应用以及数据处理,即实现上述负载均衡的方法。存储器可包括高速随机存储器,还可以包括非易失性存储器,如一个或者多个磁性存储装置、闪存、或者其他非易失性固态存储器。在一些实例中,存储器可进一步包括相对于处理器远程设置的存储器,这些远程存储器可以通过网络连接至电子设备。上述网络的实例包括但不限于互联网、企业内部网、局域网、移动通信网及其组合。
处理器可以通过传输模块调用存储器存储的信息及应用程序,以执行下述步骤:对每个设备进行分片数量均衡,并判断均衡后的分片的个数是否均衡;在判断结果为是的情况下,计算分布式集群中每个设备中各分片的核心资源的使用总量;依据每个设备中各分片的核心资源的使用总量确定待负载均衡的设备;将待负载均衡的设备中的分片与分布式集群中设备的分片进行交换,得到负载均衡的设备。
可选地,上述处理器还可以执行如下步骤的程序代码:在判断结果为否的情况下,通过预设负载平衡策略调整分布式集群中每个设备之间的负载均衡。
可选地,上述处理器还可以执行如下步骤的程序代码:计算分布式集群中每个设备中各分片的核心资源的使用总量包括:在范围分片的维度上,依据范围分片处理读请求、写请求和冲刷操作进行计算,得到各分片的核心资源的使用量;依据每个设备中各分片的核心资源的使用量进行计算,得到每个设备的核心资源的使用总量。
可选地,上述处理器还可以执行如下步骤的程序代码:依据范围分片处理读请求、写请求和冲刷操作进行计算,得到各分片的核心资源的使用量包括:获取指定线程使用核心资源的时间;依据指定线程使用核心资源的时间,确定核心资源在读请求、写请求和冲刷操作的值;依据核心资源在读请求、写请求和冲刷操作的值进行计算,得到各分片的核心资源的使用量。
可选地,上述处理器还可以执行如下步骤的程序代码:获取指定线程使用核心资源的时间包括:通过预设采样逻辑获取指定线程使用核心资源的时间,其中,获取指定线程使用核心资源的时间包括:记录指定线程的起始时间和结束时间;依据起始时间和结束时间得到指定线程使用核心资源的时间。
可选地,上述处理器还可以执行如下步骤的程序代码:当发生切换指定线程时,计算切换线程后核心资源的使用量;将切换线程后核心资源的使用量和切换线程前核心资源的使用量进行统计。
可选地,上述处理器还可以执行如下步骤的程序代码:依据每个设备中各分片的核心资源的使用总量确定待负载均衡的设备包括:依据每个设备中各分片的核心资源的使用总量获取各设备类型;依据每个设备中各分片的核心资源的使用总量,对各设备进行分类,得到第一类设备和第二类设备,其中,第一类设备的核心资源的使用总量大于第二类设备的核心资源的使用总量;将第一类设备确定为待负载均衡的设备。
可选地,上述处理器还可以执行如下步骤的程序代码:将待负载均衡的设备中的分片与分布式集群中设备的分片进行交换,得到负载均衡的设备:将第一类设备的分片与第二类设备的分片进行交换,以使得第一类设备负载均衡。
可选地,上述处理器还可以执行如下步骤的程序代码:将第一类设备的分片与第二类设备的分片进行交换包括:判断第一类设备和第二类设备的工作状态是否稳定持续;在判断结果为是的情况下,将第一类设备的分片与第二类设备的分片进行交换;其中,将第一类设备的分片与第二类设备的分片进行交换包括:判断每次交换的各分片的核心资源的使用量差值是否大于预设值,在判断结果为是的情况下,执行第一类设备的分片与第二类设备的分片的交换操作。
实施例4
根据本申请的另一个方面,还提供了一种可读存储介质,其上存储有计算机指令,其中,该计算机指令被处理器执行时实现上述实施例1中的方法步骤。
上述本发明实施例序号仅仅为了描述,不代表实施例的优劣。
在本发明的上述实施例中,对各个实施例的描述都各有侧重,某个实施例中没有详述的部分,可以参见其他实施例的相关描述。
在本申请所提供的几个实施例中,应该理解到,所揭露的技术内容,可通过其它的方式实现。其中,以上所描述的装置实施例仅仅是示意性的,例如所述单元的划分,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式,例如多个单元或组件可以结合或者可以集成到另一个***,或一些特征可以忽略,或不执行。另一点,所显示或讨论的相互之间的耦合或直接耦合或通信连接可以是通过一些接口,单元或模块的间接耦合或通信连接,可以是电性或其它的形式。
所述作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部单元来实现本实施例方案的目的。
另外,在本发明各个实施例中的各功能单元可以集成在一个处理单元中,也可以是各个单元单独物理存在,也可以两个或两个以上单元集成在一个单元中。上述集成的单元既可以采用硬件的形式实现,也可以采用软件功能单元的形式实现。
所述集成的单元如果以软件功能单元的形式实现并作为独立的产品销售或使用时,可以存储在一个计算机可读取存储介质中。基于这样的理解,本发明的技术方案本质上或者说对现有技术做出贡献的部分或者该技术方案的全部或部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质中,包括若干指令用以使得一台计算机设备(可为个人计算机、服务器或者网络设备等)执行本发明各个实施例所述方法的全部或部分步骤。而前述的存储介质包括:U盘、只读存储器(ROM,Read-Only Memory)、随机存取存储器(RAM,Random Access Memory)、移动硬盘、磁碟或者光盘等各种可以存储程序代码的介质。
以上所述仅是本发明的优选实施方式,应当指出,对于本技术领域的普通技术人员来说,在不脱离本发明原理的前提下,还可以做出若干改进和润饰,这些改进和润饰也应视为本发明的保护范围。
Claims (12)
1.一种负载均衡的方法,包括:
对每个设备进行分片数量均衡,并判断均衡后的分片的个数是否均衡;
在判断结果为是的情况下,计算分布式集群中每个设备中各分片的核心资源的使用总量;
依据所述每个设备中各分片的核心资源的使用总量确定待负载均衡的设备;
将所述待负载均衡的设备中的分片与所述分布式集群中设备的分片进行交换,得到负载均衡的设备。
2.根据权利要求1所述的方法,其中,所述方法还包括:
在判断结果为否的情况下,通过预设负载平衡策略调整分布式集群中每个设备之间的负载均衡。
3.根据权利要求2所述的方法,其中,所述计算分布式集群中每个设备中各分片的核心资源的使用总量包括:
在范围分片的维度上,依据所述范围分片处理读请求、写请求和冲刷操作进行计算,得到所述各分片的核心资源的使用量;
依据所述每个设备中各分片的核心资源的使用量进行计算,得到所述每个设备的核心资源的使用总量。
4.根据权利要求3所述的方法,其中,所述依据所述范围分片处理读请求、写请求和冲刷操作进行计算,得到所述各分片的核心资源的使用量包括:
获取指定线程使用核心资源的时间;
依据所述指定线程使用核心资源的时间,确定所述核心资源在读请求、写请求和冲刷操作的值;
依据所述核心资源在读请求、写请求和冲刷操作的值进行计算,得到所述各分片的核心资源的使用量。
5.根据权利要求4所述的方法,其中,所述获取指定线程使用核心资源的时间包括:
通过预设采样逻辑获取所述指定线程使用所述核心资源的时间,其中,所述获取指定线程使用核心资源的时间包括:记录所述指定线程的起始时间和结束时间;依据所述起始时间和所述结束时间得到所述指定线程使用所述核心资源的时间。
6.根据权利要求5所述的方法,其中,所述方法还包括:
当发生切换所述指定线程时,计算切换线程后所述核心资源的使用量;
将切换线程后所述核心资源的使用量和切换线程前所述核心资源的使用量进行统计。
7.根据权利要求1至5中任意一项所述的方法,其中,所述依据所述每个设备中各分片的核心资源的使用总量确定待负载均衡的设备包括:
依据所述每个设备中各分片的所述核心资源的使用总量,对各设备进行分类,得到第一类设备和第二类设备,其中,所述第一类设备的核心资源的使用总量大于所述第二类设备的核心资源的使用总量;
将所述第一类设备确定为所述待负载均衡的设备。
8.根据权利要求7所述的方法,其中,所述将所述待负载均衡的设备中的分片与所述分布式集群中设备的分片进行交换,得到负载均衡的设备包括:
将所述第一类设备的分片与所述第二类设备的分片进行交换,以使得所述第一类设备负载均衡。
9.根据权利要求8所述的方法,其中,所述将所述第一类设备的分片与所述第二类设备的分片进行交换包括:
判断所述第一类设备和所述第二类设备的工作状态是否稳定持续;
在判断结果为是的情况下,将所述第一类设备的分片与所述第二类设备的分片进行交换;其中,所述将所述第一类设备的分片与所述第二类设备的分片进行交换包括:
判断每次交换的所述各分片的核心资源的使用量差值是否大于预设值,在判断结果为是的情况下,执行所述第一类设备的分片与所述第二类设备的分片的交换操作。
10.一种负载均衡的装置,包括:
判断模块,用于对每个设备进行分片数量均衡,并判断均衡后的分片的个数是否均衡;
计算模块,用于在判断结果为是的情况下,计算分布式集群中每个设备中各分片的核心资源的使用总量;
确定模块,用于依据所述每个设备中各分片的核心资源的使用总量确定待负载均衡的设备;
均衡模块,用于将所述待负载均衡的设备中的分片与所述分布式集群中设备的分片进行交换,得到负载均衡的设备。
11.一种电子设备,包括存储器和处理器;其中,所述存储器用于存储一条或多条计算机指令,其中,所述一条或多条计算机指令被所述处理器执行以实现权利要求1至9任一项所述的方法步骤。
12.一种可读存储介质,其上存储有计算机指令,其中,该计算机指令被处理器执行时实现权利要求1至9任一项所述的方法步骤。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202210951560.XA CN115033390B (zh) | 2022-08-09 | 2022-08-09 | 一种负载均衡的方法及装置 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202210951560.XA CN115033390B (zh) | 2022-08-09 | 2022-08-09 | 一种负载均衡的方法及装置 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN115033390A CN115033390A (zh) | 2022-09-09 |
CN115033390B true CN115033390B (zh) | 2022-11-25 |
Family
ID=83131314
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202210951560.XA Active CN115033390B (zh) | 2022-08-09 | 2022-08-09 | 一种负载均衡的方法及装置 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN115033390B (zh) |
Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN106469018A (zh) * | 2015-08-17 | 2017-03-01 | 阿里巴巴集团控股有限公司 | 分布式存储***的负载监控方法及设备 |
CN109582758A (zh) * | 2018-12-06 | 2019-04-05 | 重庆邮电大学 | 一种Elasticsearch索引分片优化方法 |
CN111061557A (zh) * | 2018-10-16 | 2020-04-24 | 杭州海康威视数字技术股份有限公司 | 均衡分布式内存数据库负载的方法和装置 |
CN113553179A (zh) * | 2021-07-16 | 2021-10-26 | 北京东方国信科技股份有限公司 | 分布式键值存储负载均衡方法及*** |
CN113886089A (zh) * | 2021-10-21 | 2022-01-04 | 上海勃池信息技术有限公司 | 一种任务处理方法、装置、***、设备及介质 |
Family Cites Families (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101841691B (zh) * | 2010-03-04 | 2011-11-16 | 中国科学院计算技术研究所 | 一种流媒体数据交换方法与装置 |
US8972488B2 (en) * | 2010-09-28 | 2015-03-03 | Redis Labs Ltd. | System, methods, and media for providing in-memory non-relational databases |
CN104376087B (zh) * | 2014-11-19 | 2017-09-29 | 天津南大通用数据技术股份有限公司 | 一种采用交叉备份的分布式数据库负载均衡的计算方法 |
US11182352B2 (en) * | 2019-07-08 | 2021-11-23 | Vmware, Inc. | Exchanging runtime state information between datacenters using a controller bridge |
-
2022
- 2022-08-09 CN CN202210951560.XA patent/CN115033390B/zh active Active
Patent Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN106469018A (zh) * | 2015-08-17 | 2017-03-01 | 阿里巴巴集团控股有限公司 | 分布式存储***的负载监控方法及设备 |
CN111061557A (zh) * | 2018-10-16 | 2020-04-24 | 杭州海康威视数字技术股份有限公司 | 均衡分布式内存数据库负载的方法和装置 |
CN109582758A (zh) * | 2018-12-06 | 2019-04-05 | 重庆邮电大学 | 一种Elasticsearch索引分片优化方法 |
CN113553179A (zh) * | 2021-07-16 | 2021-10-26 | 北京东方国信科技股份有限公司 | 分布式键值存储负载均衡方法及*** |
CN113886089A (zh) * | 2021-10-21 | 2022-01-04 | 上海勃池信息技术有限公司 | 一种任务处理方法、装置、***、设备及介质 |
Non-Patent Citations (3)
Title |
---|
"A qualitative analysis of the performance of MongoDB vs MySQL database based on insertion and retriewal operations using a web/android application to explore load balancing — Sharding in MongoDB and its advantages";Mayur M Patil等;《2017 International Conference on I-SMAC (IoT in Social, Mobile, Analytics and Cloud) (I-SMAC)》;20171005;全文 * |
"Hadoop中的资源调度算法研究及应用";滕彩峰;《中国优秀硕士学位论文全文数据库 信息科技辑》;20220515(第05期);第I138-59页 * |
MongoDB负载均衡算法优化研究;陈敬静等;《计算机技术与发展》;20200310;第30卷(第03期);全文 * |
Also Published As
Publication number | Publication date |
---|---|
CN115033390A (zh) | 2022-09-09 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN109803004B (zh) | 区块链智能合约管理方法与装置、电子设备、存储介质 | |
US20220121384A1 (en) | Hot Data Management Method, Apparatus, and System | |
CN107592345B (zh) | 交易限流装置、方法及交易*** | |
CN111522636B (zh) | 应用容器的调整方法、调整***、计算机可读介质及终端设备 | |
CN107734052B (zh) | 面向组件依赖的负载均衡容器调度方法 | |
US20050154576A1 (en) | Policy simulator for analyzing autonomic system management policy of a computer system | |
CN108173698B (zh) | 网络服务管理方法、装置、服务器及存储介质 | |
CN107070709B (zh) | 一种基于底层numa感知的nfv实现方法 | |
CN110018799A (zh) | 一种存储池pg主确定方法、装置、设备及可读存储介质 | |
CN105573682B (zh) | 一种san存储***及其数据读写方法 | |
CN110018781B (zh) | 磁盘流控方法、装置以及电子设备 | |
CN108512768B (zh) | 一种访问量的控制方法及装置 | |
CN108471385B (zh) | 一种针对分布式***的流量控制方法及装置 | |
Wang et al. | Active data replica recovery for quality-assurance Big Data analysis in IC-IoT | |
CN115604269A (zh) | 一种服务器的负载均衡方法、装置、电子设备及存储介质 | |
CN114003377A (zh) | 一种基于es服务的内存熔断方法、装置、设备及可读介质 | |
CN115033390B (zh) | 一种负载均衡的方法及装置 | |
CN106775942B (zh) | 一种云应用导向的固态盘缓存管理***及方法 | |
Selvi et al. | Popularity (hit rate) based replica creation for enhancing the availability in cloud storage | |
CN116248699B (zh) | 多副本场景下的数据读取方法、装置、设备及存储介质 | |
CN107194712B (zh) | 共享账户变动信息记录方法及装置、内部账户补账方法及*** | |
CN111881165A (zh) | 一种数据聚合方法、装置和计算机可读存储介质 | |
CN106201711A (zh) | 一种任务处理方法及服务器 | |
CN115840649A (zh) | 划分容量块式虚拟资源分配方法及装置、存储介质和终端 | |
WO2020076394A1 (en) | Resource allocation using restore credits |
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 |