1.本技术涉及资源管理领域,特别是涉及一种资源管理方法、装置、电子设备以及存储介质。
背景技术:2.现今,在互联网的高速发展下,各类终端的应用也在不断的上新,迭代中,而在这些众多的应用中,为了实现应用系统之间的通信或是,不可避免的会使用到kafka这个分布式消息传递的消息队列中间件,从而实现我们应用间的异步消息传递。在这个背景下,尤其是在当下的大数据时代,我们对kafka的依赖更甚,而在应用系统流量不断的提升中,对我们消息中间件的稳定性也在不断的提高。
3.分布式消息系统中,通常包括多个服务节点比如在kafka中可以包括多个broker,一个broker可以看做是一个服务节点,每个服务节点中均可存储目标数据的副本数据。为了提高kafka的稳定性,现有的做法是通过人为来调配kafka中broker(可以认为是分布式消息系统中的一个服务节点)的使用资源,即人为地根据broker的资源用量判断是否需要将各个broker中存储的副本数据执行副本迁移。但是,人为的判断调配导致分配资源的效率比较低。
技术实现要素:4.本技术提供一种资源管理方法、装置、电子设备以及存储介质,能够快速平衡分布式消息系统中的服务节点的资源使用率。
5.一方面,本技术提供一种资源管理方法,包括:获取分布式消息系统的资源分配情况,以及获取多个服务节点之间的资源浮动参数;根据资源分配情况以及资源浮动参数确定分布式消息系统允许的资源使用率范围;基于资源使用率范围确定分布式消息系统中需进行副本数据迁移的待迁移服务节点,以及基于资源使用率范围确定待迁移服务节点对应的目标服务节点;根据待迁移服务节点和目标服务节点,生成副本迁移策略,并基于副本迁移策略在待迁移服务节点和目标服务节点之间进行副本数据迁移。
6.一方面,本技术采用的另一个技术方案是:提供一种资源管理装置,该装置包括:
7.获取模块,用于获取分布式消息系统的资源分配情况,以及获取多个服务节点之间的资源浮动参数;
8.第一确定模块,用于根据资源分配情况以及资源浮动参数确定分布式消息系统允许的资源使用率范围;
9.第二确定模块,用于基于资源使用率范围确定分布式消息系统中需进行副本数据迁移的待迁移服务节点,以及基于资源使用率范围确定待迁移服务节点对应的目标服务节点;
10.处理模块,用于根据待迁移服务节点和目标服务节点,生成副本迁移策略,并基于副本迁移策略在待迁移服务节点和目标服务节点之间进行副本数据迁移。
11.一方面,本技术采用的另一个技术方案是:提供一种电子设备,该电子设备包括存储器和处理器,存储器用于存储程序数据,处理器用于执行程序数据以实现如上述的资源管理方法。
12.一方面,本技术采用的另一个技术方案是:提供一种计算机可读存储介质,该计算机可读存储介质存储有程序数据,程序数据在被处理器执行时,用于实现如上述的资源管理方法。
13.本技术的有益效果是:区别于现有技术的情况,本技术无需人为进行副本数据的调配,而是自动化执行的。具体地,本技术是先通过获取分布式消息系统的资源分配情况和资源浮动参数;根据资源分配情况以及资源浮动参数确定分布式消息系统允许的资源使用率范围;基于资源使用率范围确定分布式消息系统中需进行副本数据迁移的待迁移服务节点,以及基于资源使用率范围确定待迁移服务节点对应的目标服务节点;根据待迁移服务节点和目标服务节点,生成副本迁移策略,并基于副本迁移策略在待迁移服务节点和目标服务节点之间进行副本数据迁移。
14.也就是说,本技术通过资源使用率范围,快速发现、检测出分布式消息系统中存在资源使用率倾斜的服务节点,并根据该服务节点的资源使用率与资源使用率范围之间的关系,快速进行副本的迁移,使得分布式消息系统中的所有服务节点的资源使用率实现平衡的状态,不仅提高了分布式消息系统的稳定性,也使得资源分配的效率有所提高,避免了现有技术通过人为介入来调配服务节点的资源使用率而导致的高成本和低效率的问题。
附图说明
15.为了更清楚地说明本技术实施例中的技术方案,下面将对实施例描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本技术的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。其中:
16.图1是本技术提供的资源管理系统的结构示意图;
17.图2是本技术提供的资源管理方法一实施例的流程示意图;
18.图3是一可选实施例中资源使用率范围确定方法的流程示意图;
19.图4是本技术提供的资源管理方法中迁移策略的一流程示意图;
20.图5是本技术提供的资源管理方法中迁移策略的另一流程示意图;
21.图6是本技术提供的资源管理装置的结构示意图;
22.图7是本技术提供的电子设备一实施例的结构示意图。
具体实施方式
23.下面将结合本技术实施例中的附图,对本技术实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅是本技术的一部分实施例,而不是全部的实施例。基于本技术中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本技术保护的范围。
24.下面针对本技术涉及的专业术语和技术缩略语进行解释。
25.kafka:是一种分布式发布订阅消息系统,它可以处理消费者在网站中的所有动作
流数据。broker:本质是一个只能追加写消息的提交日志,一般来说,kafka集群包含一个或多个broker。一个broker可以看成是一个服务节点。
26.本技术提供的资源管理方法应用于分布式消息系统,参见图1,为本技术实施例提供的一种分布式消息系统的结构示意图。在图1所示的分布式消息系统中,包括多个服务节点101以及一个管理节点102,该管理节点102可以是与服务节点101完全不同的节点,管理节点102也可以是服务节点101中的任意一个服务节点。
27.服务节点101之间可以相互连接,每个服务节点101和管理节点102之间存在连接。每个服务节点101中可以存储目标数据的副本数据,副本数据可以表示为copy,目标数据的数量为至少一个。管理节点102用于对服务节点101进行管理,比如管理各个服务节点101中的副本数据进行迁移。
28.可选的,服务节点101和管理节点102可以是相同类型的设备,比如均为终端设备,或者均为服务器;或者,服务节点101和管理节点102分别是终端设备和服务器中的不同设备。上述提到的终端设备可以包括笔记本电脑、智能交互设备、车载设备等等;服务器可以包括独立的物理服务器、服务器集群或者能够进行云计算的云服务器。
29.基于上述的分布式系统,本技术提供了一种资源管理方法,该资源管理方法可以应用于上述分布式消息系统,分布式消息系统包括多个服务节点和管理节点,每个服务节点用于存储目标数据的副本数据,资源管理方法由管理节点执行。
30.具体请参阅图2,图2是本技术提供的资源管理方法第一实施例的流程示意图,该方法可以包括以下步骤:
31.步骤s110:获取分布式消息系统的资源分配情况和资源浮动参数。
32.其中,分布式消息系统可以是kafka集群,分布式消息系统中的服务节点可以是broker,为了便于理解,本技术实施例都以分布式消息系统是kafka集群,服务节点是broker为例来进行说明。
33.比如说,资源分配情况可以是kafka集群中各个broker所分配到的副本数据(以下描述中也可以简称为副本)的数量。示例性地,假设一个kafka集群中包含3个broker,该kafka集群的资源分配情况可以是broker1分到10个副本,broker2分到12个副本,broker3分到8个副本。
34.而资源浮动参数是预先设置的,该资源浮动参数的设置是比较灵活的,比如可以是每个kafka集群对应设置不同的资源浮动参数,也可以是多个kafka集群共用一个资源浮动参数。
35.当获取分布式消息系统的资源分配情况和资源浮动参数之后,会进一步获取资源使用率范围,即通过下述步骤s120根据资源分配情况以及资源浮动参数确定分布式消息系统允许的资源使用率范围。
36.步骤s120:根据资源分配情况以及资源浮动参数确定分布式消息系统允许的资源使用率范围。
37.其中,分布式消息系统允许的资源使用率范围可以说是为分布式消息系统中的各个服务节点或者服务器设置的一个较为平衡的使用范围,在该范围下,分布式消息系统的综合资源使用率可以达到一个较为合理的水平,比如说当发现kafka集群中的某一个broker的资源使用率不在该范围时,就可以及时地对该broker进行资源管理。
38.示例性地,可以根据资源分配情况计算broker的平均资源使用率,结合资源浮动参数,计算资源使用率范围;也可以是根据资源分配情况计算broker的平均资源使用率,根据资源浮动参数推算出允许浮动率,计算资源使用率范围,对于资源使用率范围的计算方式可以有多种,本技术在这里不做限定。
39.当根据上述步骤确定出资源使用率范围之后,需要进一步确定待迁移服务节点和目标服务节点,即通过下述步骤s130基于资源使用率范围确定分布式消息系统中需进行副本数据迁移的待迁移服务节点,以及基于资源使用率范围确定待迁移服务节点对应的目标服务节点。
40.步骤s130:基于资源使用率范围确定分布式消息系统中需进行副本数据迁移的待迁移服务节点,以及基于资源使用率范围确定待迁移服务节点对应的目标服务节点。
41.具体实现中,可以将kafka集群中的broker的资源使用率与该资源使用率范围作比较,确定分布式消息系统中需进行副本数据迁移的待迁移服务节点。
42.具体地,若broker的资源使用率在该资源使用率范围内,则不需迁移;若broker的资源使用率在该资源使用率范围外,则确定为需进行副本数据迁移的待迁移服务节点;而目标服务节点则是与待迁移服务节点进行副本间的迁移(可以是迁入或者迁出)后,资源使用率可以保持在资源使用率范围的服务节点即为目标服务节点。
43.其中,目标服务节点的个数可以是一个也可以是多个,但正常情况下,当计算机计算出当前的待迁移服务节点所对应的一个目标服务节点之后,为了不影响其他待迁移服务节点的副本迁移,一般会停止计算符合当前的待迁移服务节点副本迁移的其他目标服务节点,并继续为其他待迁移服务节点筛选可进行副本迁移的目标服务节点。
44.步骤s140:根据待迁移服务节点和目标服务节点,生成副本迁移策略,并基于副本迁移策略在待迁移服务节点和目标服务节点之间进行副本数据迁移。
45.在筛选出合适的目标服务节点后,进一步的在待迁移服务节点和目标服务节点之间进行副本数据迁移。比如说,若待迁移服务节点的资源使用率比该资源使用率范围的最小值还小,则根据待迁移服务节点的资源使用率范围之间的差值,在资源使用率偏大的服务节点中选择能够进行副本迁移的目标服务节点,并生成副本迁移策略,比如说适当地将目标服务节点中一些符合条件的副本迁入到待迁移服务节点,即根据副本迁移策略完成在待迁移服务节点和目标服务节点之间进行副本数据迁移;反之,若该broker的资源使用率比该资源使用率范围的最大值还大,则可以根据待迁移服务节点的资源使用率资源使用率范围之间的差值,在资源使用率偏小的服务节点中选择能够进行副本迁移的目标服务节点,并生成副本迁移策略,比如说适当地将待迁移服务节点中一些符合条件的副本迁入到目标服务节点中,即根据副本迁移策略完成在待迁移服务节点和目标服务节点之间进行副本数据迁移。
46.本实施例一的有益效果是:区别于现有技术的情况,本技术是先通过获取分布式消息系统的资源分配情况和资源浮动参数;根据资源分配情况以及资源浮动参数确定分布式消息系统允许的资源使用率范围;基于资源使用率范围确定分布式消息系统中需进行副本数据迁移的待迁移服务节点,以及基于资源使用率范围确定待迁移服务节点对应的目标服务节点;根据待迁移服务节点和目标服务节点,生成副本迁移策略,并基于副本迁移策略在待迁移服务节点和目标服务节点之间进行副本数据迁移,使得分布式消息系统中的各个
服务节点的资源使用率保持在所设定的允许的资源使用率范围,这样可以避免由于部分服务节点的资源使用率过大(或者是某些服务器中的负载过大),而导致分布式消息系统不可用的情况,提高了分布式消息系统的稳定性。
47.并且,本技术通过监控可以自动获取分布式消息系统中的各个服务节点的资源使用情况,快速发现、检测出分布式消息系统中存在资源使用率倾斜的服务节点,并根据该服务节点的资源使用率与资源使用率范围之间的关系,及时地进行副本迁移,避免现有技术为了实现分布式消息系统中的所有服务节点的资源使用率处于平衡的状态,通过人为介入来调配服务节点的资源使用率而导致的高成本和低效率的问题。
48.在一些实施方式中,确定资源使用率范围的方法可以包括以下步骤,具体可参阅图3,图3是一可选实施例中资源使用率范围确定方法的流程示意图,具体包括:
49.步骤s210:获取分布式消息系统的预设平衡阈值,以及获取分布式消息系统中的多个服务节点中每个服务节点的资源使用率。
50.步骤s220:根据预设平衡阈值和资源使用率,确定资源使用率范围。
51.在步骤s210和步骤s220中,预设平衡阈值可以是系统默认的一个参考值,也可以接收用户指令修改为一个任意值,包括但不局限于1.1,1.05,1.15等。而分布式消息系统中的所有服务节点的资源使用率即kafka集群中的每一个broker的资源使用率,是通过监控获取的。
52.示例性地,可以通过一个rest api接口获取对应的指标数据,即获取kafka集群中每一个broker当前的资源使用情况,而broker的资源使用率就是当前的资源使用情况与每个broker所分配到的占比。
53.比如说,一个kafka集群中包含3个broker,该kafka集群的资源分配情况可以是broker1分到10个副本,broker2分到12个副本,broker3分到8个副本,通过监控可以获取到当前broker1已使用了5个副本,broker2已使用了8个副本,broker3已使用了6个副本,则broker1对应的资源使用率为50%,broker2对应的资源使用率为66%,broker3对应的资源使用率为75%。
54.另外,需要说明的是,当获取到每一个broker的资源使用率后,可以计算该kafka集群中broker的平均资源使用率,结合获取到的预设平衡阈值,就可以计算资源使用率范围。
55.其中,资源使用率范围包括最小资源使用率b1和最大资源使用率b2,也可以说是资源使用率范围的最小值b1和资源使用率范围的最大值b2。
56.示例性地,可以采用以下公式计算资源使用率范围{b1,b2};
[0057][0058]
其中,m为平均资源使用率,x为预设平衡阈值。
[0059]
比如说预设平衡阈值x为1.1,通过监控检测计算得到当前kafka集群中的broker1=60%,broker2=81%,broker3=60%,则得出这三个broker的平均资源使用率m为67%,根据公式计算出:
[0060]
lowthresholds:即b1=67%-(1.1-1)*67%=60.3%;
[0061]
upperthresholds:即b2=67%+(1.1-1)*67%=73.3%;
[0062]
其中,1为固定值。
[0063]
最终通过计算确定出的资源使用率范围为{60.3%,73.3%}。
[0064]
或者,假设预设平衡阈值x为1.05,通过监控检测计算得到kafka集群中的broker1=60%,broker2=81%,broker3=60%,则得出这三个broker的平均资源使用率m为67%,根据公式计算出:
[0065]
lowthresholds:即b1=67%-(1.05-1)*67%=63.65%;
[0066]
upperthresholds:即b2=67%+(1.05-1)*67%=70.35%;
[0067]
其中,1为固定值。
[0068]
最终通过计算确定出的资源使用率范围为{63.65%,70.35%}。
[0069]
或者,在一些实施例中,也可以根据平均资源使用率和允许浮动率,来确定资源使用率范围。具体的计算过程可以包括以下两个步骤:
[0070]
1)将浮动率阈值与允许浮动率进行求差运算,并将平均资源使用率与求差运算结果进行相乘运算,得到最小资源使用率。
[0071]
将浮动率阈值与允许浮动率进行求和运算,并将平均资源使用率与求和运算结果进行相乘运算,得到最大资源利用率。
[0072]
其中,允许浮动率可以先通过预设平衡阈值来获取,浮动率阈值可以是系统设置的固定值1。
[0073]
为了方便理解,上述两个步骤可以直接转换为以下公式,
[0074][0075]
其中,m为所述平均资源使用率,f为所述允许浮动率,资源使用用率范围为{b1,b2}。
[0076]
示例性地,假设预设平衡阈值x为1.1,此时说明平衡后broker的资源使用率能上下浮动0.1,即允许浮动率f为0.1。
[0077]
若监控检测到kafka集群中的broker1=60%,broker2=81%,broker3=60%,则得出这三个broker的平均资源使用率m为67%,根据公式计算出:
[0078]
lowthresholds:即b1=67%*(1-0.1)=60.3%;
[0079]
upperthresholds:即b2=67%*(1+0.1)=73.3%;
[0080]
即计算得出的资源使用率范围为{60.3%,73.3%}。
[0081]
或者,假设预设平衡阈值x为1.05,此时说明平衡后broker的资源使用率能上下浮动0.05,即允许浮动率f为0.05。
[0082]
若监控检测到kafka集群中的broker1=60%,broker2=81%,broker3=60%,则得出这三个broker的平均资源使用率m为67%,根据公式计算出:
[0083]
lowthresholds:即b1=67%*(1-0.05)=63.65%;
[0084]
upperthresholds:即b2=67%*(1+0.05)=70.35%;
[0085]
也就是说,最终计算得到的资源使用率范围为{63.65%,70.35%}。
[0086]
需要注意的是,由于一个kafka集群中的broker是不限定的,既可以包含多个broker,也可以只包含一个broker,所以平均资源使用率的计算有两种情况。
[0087]
比如说,一个kafka集群包含3个broker,监控检测计算得到broker1=60%,broker2=81%,broker3=60%,则得出这三个broker的平均资源使用率m为67%;
[0088]
而当一个kafka集群只含有一个broker时,假设该broker的资源使用率=80%,那么平均资源使用率就是等于80%。
[0089]
上述实施例通过监控来获取kafka集群中各个broker(例如cpu,disk,memory)的资源分配情况以及使用情况,并根据确定出的资源使用率范围,从而快速的检测broker是否需要进行副本迁移,以使kafka集群达到副本重平衡,保证kafka集群不会出现因broker的分配量不均而不可用的情况。
[0090]
另外,需要注意的是,在一些实施例中,为了使进行副本迁移的双方(即待迁移服务节点和目标服务节点)在迁移后,能够满足在资源使用率范围之内,可以在确定当前broker的资源使用率不在上述步骤中计算出来的资源使用率范围内之后,进行下一步的操作简称预检查,根据预检查的结果,确定最终的目标服务节点。
[0091]
其中,预检查的做法可以包括以下具体步骤,请参阅图4,图4是预检查的一种流程示意图,具体可以包括:
[0092]
步骤s310:基于所述资源使用率范围、剩余服务节点的资源使用率以及所述待迁移服务节点的资源使用率与所述资源使用率范围之间的关系,从所述剩余服务节点中确定至少一个候选服务节点,所述剩余服务节点是指所述多个服务节点中除所述待迁移服务节点外的其他服务节点。
[0093]
步骤s320:根据每个候选服务节点的资源使用率和待迁移的副本数据的资源占用率从所述至少一个候选服务节点中确定目标服务节点。
[0094]
步骤s330:若所述待迁移服务节点的资源使用率与所述资源使用率范围之间的关系为:所述待迁移服务节点的资源使用率范围小于所述最小资源使用率,则将所述剩余服务节点中,资源使用率大于所述最小资源使用率的服务节点作为至少一个候选服务节点。
[0095]
步骤s340:确定所述待迁移服务节点的资源使用率,与各个候选服务节点中需迁移的副本数据的资源占用率之间的相加运算结果;
[0096]
步骤s350:将位于所述资源使用率范围内的相加运算结果对应的候选服务节点确定为目标服务节点。
[0097]
步骤s360:生成迁入策略;基于所述迁入策略将所述目标服务节点中的副本数据嵌入到所述待迁移服务节点中。
[0098]
为了便于理解,可以将资源使用率大于所述最小资源使用率的服务节点作为第一候选服务节点,而资源使用率小于所述最大资源使用率的服务节点作为第二候选服务节点,这样,候选服务节点就包括第一候选服务节点和第二候选服务节点。
[0099]
在步骤s310-步骤s360中,示例性地,如果当前的待迁移服务节点(即当前的待迁移broker)的资源使用率小于该资源使用率范围的最小值时,则需要遍历第一候选broker,选择合适的副本迁入到当前的待迁移broker,若其中一个第一候选broker在迁出该副本之后,该第一候选broker的资源使用率属于资源使用率范围内,则该第一候选broker为该副本迁移的目标broker。需要注意的是,如果该第一候选broker在迁出该副本之后,该第一候选broker的资源使用率不属于资源使用率范围内,则需要重复选择合适的副本(这里的副本可以是同个第一候选broker中的另一副本或者是另一个第一候选broker中的副本)迁入
到当前的待迁移broker,直到第一候选broker资源使用率属于资源使用率范围内。
[0100]
比如说,假设预设平衡阈值x为1.05,此时说明平衡后的使用率能上下浮动0.05,即允许浮动率f为0.05。
[0101]
若监控检测到kafka集群中的broker1=60%,broker2=81%,broker3=60%,则得出这三个broker的平均资源使用率m为67%,根据公式计算出:
[0102]
lowthresholds:即b1=67%*(1-0.05)=63.65%;
[0103]
upperthresholds:即b2=67%*(1+0.05)=70.35%;
[0104]
也就是说,资源使用率范围为{63.65%,70.35%}。
[0105]
则此时,kafka集群中的三个broker:broker1=60%,broker2=81%,broker3=60%都不在该资源使用率范围为{63.65%,70.35%}内,因此,都需要进行副本的迁移。
[0106]
假设当前待迁移broker为broker1=60%小于资源使用率范围的最小值(lowthresholds)b1=63.65%,则需要在所有服务节点中,筛选出资源使用率大于所述资源使用率范围最小值的服务节点为第一候选服务节点,即资源使用率大于63.65%的所有broker为第一候选broker,通过计算broker1=60%与b1=63.65%的差值为3.65%,然后遍历第一候选broker的所有副本集,筛选出资源使用率占当前待迁移broker总资源的3.65%以上,10.35%以下的副本,确定该副本为目标副本,如果当前遍历的第一候选broker在迁移出满足上述条件的副本之后,该第一候选broker自身的资源使用率满足所述资源使用率范围,则确定所述当前遍历的第一候选broker为目标broker。
[0107]
也就是说,在候选broker将资源使用率占当前待迁移broker总资源的3.65%以上,10.35%以下的副本迁入到当前待迁移broker之后,该候选broker满足资源使用率范围并且不会导致集群整体的副本分布违反其他算法的限制(因为一般来说,不止一个算法进行平衡),则该候选broker为目标broker,迁入的那个副本则为目标副本。
[0108]
或者,预检查的做法还可以包括以下具体步骤,请参阅图5,图5是预检查的另一种流程示意图,具体可以包括以下步骤:
[0109]
步骤s410:基于所述资源使用率范围、剩余服务节点的资源使用率以及所述待迁移服务节点的资源使用率与所述资源使用率范围之间的关系,从所述剩余服务节点中确定至少一个候选服务节点,所述剩余服务节点是指所述多个服务节点中除所述待迁移服务节点外的其他服务节点。
[0110]
步骤s420:根据每个候选服务节点的资源使用率和待迁移的副本数据的资源占用率从所述至少一个候选服务节点中确定目标服务节点。
[0111]
步骤s430:若所述待迁移服务节点的资源使用率与所述资源使用率范围之间的关系为:所述待迁移服务节点的资源使用率范围大于所述最大资源使用率,则将所述剩余服务节点中,资源使用率小于所述最大资源使用率的服务节点作为至少一个候选服务节点。
[0112]
步骤s440:确定每个候选服务节点的资源使用率和所述待迁移的副本数据的资源占用率之间的相加运算结果。
[0113]
步骤s450:将位于资源使用率范围内的相加运算结果对应的候选服务节点,确定为目标服务节点。
[0114]
步骤s460:生成迁出策略,基于所述迁出策略将所述待迁移服务节点中的副本数据迁移到所述目标服务节点中。
[0115]
在步骤s410-步骤s460中,示例性地,如果当前的待迁移服务节点(即当前的待迁移broker)的资源使用率大于该资源使用率范围的最大值时,则需要遍历当前的待迁移broker的副本,选择其中合适的副本迁入到第二候选broker,若某一个第二候选broker在迁入该副本之后,该第二候选broker的资源使用率属于资源使用率范围内,则该第二候选broker为该副本迁移的目标broker。需要注意的是,如果该第二候选broker在迁入该副本之后,该第二候选broker的资源使用率不属于资源使用率范围内,则需要重复选择合适的副本迁入到第二候选broker(这里可以是保持第二候选broker不变,选择当前的待迁移broker中的另一个副本或者是保持副本不变,选择另一个第二候选broker来进行尝试),直到第二候选broker资源使用率属于资源使用率范围内。
[0116]
比如说,假设预设平衡阈值x为1.05,此时说明平衡后的使用率能上下浮动0.05,即允许浮动率f为0.05。
[0117]
若监控检测到kafka集群中的broker1=60%,broker2=81%,broker3=60%,则得出这三个broker的平均资源使用率m为67%,根据公式计算出:
[0118]
lowthresholds:即b1=67%*(1-0.05)=63.65%;
[0119]
upperthresholds:即b2=67%*(1+0.05)=70.35%;
[0120]
也就是说,资源使用率范围为{63.65%,70.35%}。
[0121]
则此时,kafka集群中的三个broker:broker1=60%,broker2=81%,broker3=60%都不在该资源使用率范围为{63.65%,70.35%}内,因此,都需要进行副本的迁移。
[0122]
假设当前待迁移broker为broker2=81%大于资源使用率范围的最大值(lowthresholds)b2=70.35%,则需要在所有服务节点中,筛选出资源使用率小于所述资源使用率范围最大值的服务节点为第一候选服务节点,即资源使用率小于70.35%的所有broker为第二候选broker,通过计算broker2=81%与b2=70.35%的差值为10.65%,然后遍历第二候选broker的所有副本集,筛选出资源使用率占当前待迁移broker总资源的10.65%以上,17.35%以下的副本,确定该副本为目标副本,如果当前遍历的第二候选broker在迁入满足上述条件的副本之后,该第二候选broker自身的资源使用率满足所述资源使用率范围,则确定所述当前遍历的第二候选broker为目标broker。
[0123]
也就是说,在当前待迁移broker将占自身总资源的10.65%以上,17.35%以下的副本迁入到候选broker之后,该候选broker满足资源使用率范围并且不会导致集群整体的副本分布违反其他算法的限制(因为一般来说,系统不止通过一个算法来进行平衡),则该候选broker为目标broker,迁出的那个副本则为目标副本。
[0124]
需要说明的是,生成的副本迁移策略的核心是由“副本分布现状”“期望的副本分布”两部分组成,也就是迁移前后两个状态下的副本分布情况,详细的一个构成模型如下:
[0125]
示例性地,
[0126][0127]
其中就包括当前的副本分布情况,也就是oldreplicaassignment下的replicas里面的内容;同时也包含期望的分布,也就是newreplicaassignment下面的replicas内容。而replicas下面的数据就是kafka集群中的broker的唯一编号。
[0128]
而具体的迁移,则是直接依赖kafka集群官方的软件开发工具包中提供出来的adminclient.alterpartitionreassignments方法去执行。
[0129]
请参阅图6,图6是本技术提供的资源管理装置的结构示意图,该装置50包括获取模块51、第一确定模块52、第二确定模块53和处理模块54。
[0130]
其中,获取模块51,用于获取分布式消息系统的资源分配情况,以及获取多个服务节点之间的资源浮动参数;
[0131]
第一确定模块52,用于根据资源分配情况以及资源浮动参数确定分布式消息系统允许的资源使用率范围;
[0132]
第二确定模块53,用于基于资源使用率范围确定分布式消息系统中需进行副本数
programmable gate array,fpga)、单片机等,其中的芯片可以是处理芯片,如cpu、gpu、mcu等,也可以是存储芯片,如dram、sram等。
[0141]
本技术提供的计算机可读存储介质一实施例的结构示意图,该计算机可读存储介质存储有程序数据,程序数据在被处理器执行时,用于实现如下的方法:
[0142]
获取分布式消息系统的资源分配情况,以及获取多个服务节点之间的资源浮动参数;根据资源分配情况以及资源浮动参数确定分布式消息系统允许的资源使用率范围;基于资源使用率范围确定分布式消息系统中需进行副本数据迁移的待迁移服务节点,以及基于资源使用率范围确定待迁移服务节点对应的目标服务节点;根据待迁移服务节点和目标服务节点,生成副本迁移策略,并基于副本迁移策略在待迁移服务节点和目标服务节点之间进行副本数据迁移。
[0143]
本技术的实施例以软件功能单元的形式实现并作为独立的产品销售或使用时,可以存储在一个计算机可读取存储介质中。基于这样的理解,本技术的技术方案本质上或者说对现有技术做出贡献的部分或者该技术方案的全部或部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质中,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)或处理器(processor)执行本技术各个实施方式所述方法的全部或部分步骤。而前述的存储介质包括:u盘、移动硬盘、只读存储器(rom,read-only memory)、随机存取存储器(ram,random access memory)、磁碟或者光盘等各种可以存储程序代码的介质。
[0144]
以上所述仅为本技术的实施方式,并非因此限制本技术的专利范围,凡是利用本技术说明书及附图内容所作的等效结构或等效流程变换,或直接或间接运用在其他相关的技术领域,均同理包括在本技术的专利保护范围内。
技术特征:1.一种资源管理方法,其特征在于,应用于分布式消息系统,所述分布式消息系统包括多个服务节点和管理节点,每个服务节点用于存储目标数据的副本数据,所述资源管理方法由所述管理节点执行,包括:获取所述分布式消息系统的资源分配情况和资源浮动参数;根据所述资源分配情况以及资源浮动参数确定所述分布式消息系统允许的资源使用率范围;基于所述资源使用率范围确定所述分布式消息系统中需进行副本数据迁移的待迁移服务节点,以及基于所述资源使用率范围确定所述待迁移服务节点对应的目标服务节点;根据所述待迁移服务节点和所述目标服务节点,生成副本迁移策略,并基于所述副本迁移策略在所述待迁移服务节点和所述目标服务节点之间进行副本数据迁移。2.根据权利要求1所述的方法,其特征在于,所述方法还包括:获取所述分布式消息系统的预设平衡阈值;以及获取所述分布式消息系统中的多个服务节点中每个服务节点的资源使用率;根据所述预设平衡阈值和所述资源使用率,确定所述资源使用率范围。3.根据权利要求2所述的方法,其特征在于,所述根据所述预设平衡阈值和所述资源使用率,确定所述资源使用率范围,包括:根据所述分布式消息系统中的多个服务节点中每个服务节点的资源使用率,确定平均资源使用率;以及根据所述预设平衡阈值,确定允许浮动率;根据所述平均资源使用率和所述允许浮动率,确定所述资源使用率范围。4.根据权利要求3所述的方法,其特征在于,所述资源使用率范围包括最小资源使用率和最大资源使用率,所述根据所述平均资源使用率和所述允许浮动率,确定所述资源使用率范围,包括:将浮动率阈值与允许浮动率进行求差运算,并将所述平均资源使用率与求差运算结果进行相乘运算,得到最小资源使用率;将浮动率阈值与允许浮动率进行求和运算,并将所述平均资源使用率与求和运算结果进行相乘运算,得到最大资源利用率。5.根据权利要求1所述的方法,其特征在于,所述基于所述资源使用率范围确定所述待迁移服务节点对应的目标服务节点,包括:基于所述资源使用率范围、剩余服务节点的资源使用率以及所述待迁移服务节点的资源使用率与所述资源使用率范围之间的关系,从所述剩余服务节点中确定至少一个候选服务节点,所述剩余服务节点是指所述多个服务节点中除所述待迁移服务节点外的其他服务节点;根据每个候选服务节点的资源使用率和待迁移的副本数据的资源占用率从所述至少一个候选服务节点中确定目标服务节点。6.根据权利要求1-4任一项所述的方法,其特征在于,所述根据资源使用率范围,确定所述分布式消息系统中的待迁移服务节点,包括:确定所述分布式消息系统的多个服务节点中,资源使用率在所述资源使用率范围外的服务节点,为待迁移服务节点。
7.根据权利要求6所述的方法,其特征在于,所述基于所述资源使用率范围、剩余服务节点的资源使用率以及所述待迁移服务节点的资源使用率与所述资源使用率范围之间的关系,从所述剩余服务节点中确定至少一个候选服务节点,包括:若所述待迁移服务节点的资源使用率与所述资源使用率范围之间的关系为:所述待迁移服务节点的资源使用率范围小于所述最小资源使用率,则将所述剩余服务节点中,资源使用率大于所述最小资源使用率的服务节点作为至少一个候选服务节点。8.根据权利要求6所述的方法,其特征在于,所述基于所述资源使用率范围、剩余服务节点的资源使用率以及所述待迁移服务节点的资源使用率与所述资源使用率范围之间的关系,从所述剩余服务节点中确定至少一个候选服务节点,包括:若所述待迁移服务节点的资源使用率与所述资源使用率范围之间的关系为:所述待迁移服务节点的资源使用率范围大于所述最大资源使用率,则将所述剩余服务节点中,资源使用率小于所述最大资源使用率的服务节点作为至少一个候选服务节点。9.根据权利要求7所述的方法,其特征在于,所述待迁移的副本数据是指各个候选服务节点中需迁移的副本数据,所述根据每个候选服务节点的资源使用率和所述迁移服务节点中副本数据的资源占用率从所述至少一个候选服务节点中确定目标服务节点,包括:确定所述待迁移服务节点的资源使用率,与各个候选服务节点中需迁移的副本数据的资源占用率之间的相加运算结果;将位于所述资源使用率范围内的相加运算结果对应的候选服务节点确定为目标服务节点。10.根据权利要求8所述的方法,其特征在于,所述待迁移的副本数据包括所述待迁移服务节点中的副本数据,所述根据每个候选服务节点的资源使用率和所述点迁移服务节点中副本数据的资源占用率从所述至少一个候选服务节点中确定目标服务节点,包括:确定每个候选服务节点的资源使用率和所述待迁移的副本数据的资源占用率之间的相加运算结果;将位于资源使用率范围内的相加运算结果对应的候选服务节点,确定为目标服务节点。11.根据权利要求9所述的方法,其特征在于,副本迁移策略包括迁入策略,根据所述待迁移服务节点和所述目标服务节点,生成副本迁移策略,包括:生成迁入策略;基于所述迁入策略将所述目标服务节点中的副本数据嵌入到所述待迁移服务节点中。12.根据权利要求10所述的方法,其特征在于,副本迁移策略包括迁出策略,根据所述待迁移服务节点和所述目标服务节点,生成副本迁移策略,包括:生成迁出策略;基于所述迁出策略将所述待迁移服务节点中的副本数据迁移到所述目标服务节点中。13.一种资源管理装置,其特征在于,该装置包括:获取模块,用于获取分布式消息系统的资源分配情况,以及获取多个服务节点之间的资源浮动参数;第一确定模块,用于根据资源分配情况以及资源浮动参数确定分布式消息系统允许的资源使用率范围;
第二确定模块,用于基于资源使用率范围确定分布式消息系统中需进行副本数据迁移的待迁移服务节点,以及基于资源使用率范围确定待迁移服务节点对应的目标服务节点;处理模块,用于根据待迁移服务节点和目标服务节点,生成副本迁移策略,并基于副本迁移策略在待迁移服务节点和目标服务节点之间进行副本数据迁移。14.一种电子设备,其特征在于,所述电子设备包括存储器和处理器,所述存储器用于存储程序数据,所述处理器用于执行所述程序数据以实现如权利要求1-12任一项所述的资源管理方法。15.一种计算机可读存储介质,其特征在于,所述计算机可读存储介质存储有程序数据,所述程序数据在被处理器执行时,用于实现如权利要求1-12任一项所述的资源管理方法。
技术总结本申请公开了一种资源管理方法、装置、电子设备和存储介质,该方法包括:获取分布式消息系统的资源分配情况,以及获取多个服务节点之间的资源浮动参数;根据资源分配情况以及资源浮动参数确定分布式消息系统允许的资源使用率范围;基于资源使用率范围确定分布式消息系统中需进行副本数据迁移的待迁移服务节点,以及基于资源使用率范围确定待迁移服务节点对应的目标服务节点;根据待迁移服务节点和目标服务节点,生成副本迁移策略,并基于副本迁移策略在待迁移服务节点和目标服务节点之间进行副本数据迁移。通过上述方式,本申请能够快速平衡分布式消息系统中的服务节点的资源使用率。使用率。使用率。
技术研发人员:邓林凡 苏超 曾琳铖曦 孙磊 蒋宁
受保护的技术使用者:马上消费金融股份有限公司
技术研发日:2022.05.31
技术公布日:2022/11/1