一种负载均衡方法、系统、设备及计算机可读存储介质与流程

文档序号:31622758发布日期:2022-09-23 23:45阅读:43来源:国知局
一种负载均衡方法、系统、设备及计算机可读存储介质与流程

1.本技术涉及负载均衡技术领域,更具体地说,涉及一种负载均衡方法、系统、设备及计算机可读存储介质。


背景技术:

2.随着计算机技术的发展,多内核设备的应用越来越广,多内核(multicore)是指在一枚处理器(processor)中集成两个或多个完整的计算引擎(内核),借助多内核技术,设备可以并行对数据进行处理,从而提升处理效率。
3.然而,在多内核设备的运行过程中,存在为多个计算引擎分发任务的需求,如果多个计算引擎的任务分发不均匀,会导致多计算引擎间的负载不均衡,严重时会引起网络卡慢等情况,影响多内核设备的性能。
4.综上所述,如何实现多内核设备中计算引擎间的负载均衡是目前本领域技术人员亟待解决的问题。


技术实现要素:

5.本技术的目的是提供一种负载均衡方法,其能在一定程度上解决如何实现多内核设备中计算引擎间的负载均衡的技术问题。本技术还提供了一种负载均衡系统、电子设备及计算机可读存储介质。
6.为了实现上述目的,本技术提供如下技术方案:
7.一种负载均衡方法,包括:
8.获取待分配的目标数据;
9.确定当前时刻下、多内核设备中的过载计算引擎及未过载计算引擎;
10.在所述未过载计算引擎中选取未被分配数据的计算引擎作为当前时刻的目标计算引擎;
11.将所述目标数据分配给当前时刻的所述目标计算引擎;
12.将所述未过载计算引擎中已过载的所述计算引擎标记为所述过载计算引擎;
13.将所述过载计算引擎中未过载的所述计算引擎标记为所述未过载计算引擎。
14.优选的,所述确定当前时刻下、多内核设备中的过载计算引擎及未过载计算引擎,包括:
15.确定当前时刻下、所述多内核设备中的过载队列及调度队列,所述过载队列用于记录所述过载计算引擎,所述调度队列用于记录所述未过载计算引擎。
16.优选的,所述在所述未过载计算引擎中选取未被分配数据的计算引擎作为当前时刻的目标计算引擎,包括:
17.在所述调度队列中,将当前时刻的调度游标所指向的所述计算引擎作为当前时刻的所述目标计算引擎;
18.所述在所述未过载计算引擎中选取未被分配数据的计算引擎作为当前时刻的目
标计算引擎之后,还包括:
19.控制下一时刻的所述调度游标指向所述调度队列中、当前时刻的所述目标计算引擎的下一所述计算引擎;
20.其中,若当前时刻的所述目标计算引擎为所述调度队列中的最后一个所述计算引擎,则当前时刻的所述目标计算引擎的下一所述计算引擎为所述调度队列中的第一个所述计算引擎。
21.优选的,所述将所述未过载计算引擎中已过载的所述计算引擎标记为所述过载计算引擎,包括:
22.判断上一时刻的所述目标计算引擎是否过载;
23.若上一时刻的所述目标计算引擎过载,则将所述调度队列中上一时刻的所述目标计算引擎转移至所述过载队列的队尾。
24.优选的,所述将所述过载计算引擎中未过载的所述计算引擎标记为所述未过载计算引擎,包括:
25.在所述过载队列中,判断当前时刻的过载游标所对应的所述计算引擎是否未过载;
26.若当前时刻的所述过载游标所对应的所述计算引擎未过载,则将所述过载队列中当前时刻的所述过载游标所对应的所述计算引擎转移至所述调度队列的队尾;
27.所述将所述过载计算引擎中未过载的所述计算引擎标记为所述未过载计算引擎之后,还包括:
28.控制下一时刻的所述过载游标指向所述过载队列中、当前时刻的所述过载游标所对应的所述计算引擎的下一所述计算引擎。
29.优选的,所述控制下一时刻的所述调度游标指向所述调度队列中、当前时刻的所述目标计算引擎的下一所述计算引擎之后,还包括:
30.若下一时刻的所述调度游标指向所述调度队列中的第一个所述计算引擎,则控制下一时刻的所述过载游标指向所述过载队列中的第一个所述计算引擎。
31.优选的,所述在所述调度队列中,将当前时刻的调度游标所指向的所述计算引擎作为当前时刻的所述目标计算引擎,包括:
32.判断当前时刻的所述调度游标是否有锁;
33.若当前时刻的所述调度游标无锁,则对当前时刻的所述调度游标进行加锁,并在所述调度队列中,将当前时刻的所述调度游标所指向的所述计算引擎作为当前时刻的所述目标计算引擎;
34.所述将所述过载计算引擎中未过载的所述计算引擎标记为所述未过载计算引擎之后,还包括:
35.解除当前时刻的所述调度游标的锁。
36.一种负载均衡系统,包括:
37.数据获取模块,用于获取待分配的目标数据;
38.计算引擎确定模块,用于确定当前时刻下、多内核设备中的过载计算引擎及未过载计算引擎;
39.目标计算引擎确定模块,用于在所述未过载计算引擎中选取未被分配数据的计算
引擎作为当前时刻的目标计算引擎;
40.分配模块,用于将所述目标数据分配给当前时刻的所述目标计算引擎;
41.已过载计算引擎转移模块,用于将所述未过载计算引擎中已过载的所述计算引擎标记为所述过载计算引擎;
42.未过载计算引擎转移模块,用于将所述过载计算引擎中未过载的所述计算引擎标记为所述未过载计算引擎。
43.一种电子设备,包括:
44.存储器,用于存储计算机程序;
45.处理器,用于执行所述计算机程序时实现如上任一所述负载均衡方法的步骤。
46.一种计算机可读存储介质,所述计算机可读存储介质中存储有计算机程序,所述计算机程序被处理器执行时实现如上任一所述负载均衡方法的步骤。
47.本技术提供的一种负载均衡方法,获取待分配的目标数据;确定当前时刻下、多内核设备中的过载计算引擎及未过载计算引擎;在未过载计算引擎中选取未被分配数据的计算引擎作为当前时刻的目标计算引擎;将目标数据分配给当前时刻的目标计算引擎;将未过载计算引擎中已过载的计算引擎标记为过载计算引擎;将过载计算引擎中未过载的计算引擎标记为未过载计算引擎。本技术中,在未过载计算引擎中选取未被分配数据的计算引擎作为当前时刻的目标计算引擎,并将目标数据分配给当前时刻的目标计算引擎,实现了将目标数据分配给未被分配数据的未过载计算引擎中,避免了将目标数据再次分配给过载计算引擎而导致的多计算引擎间的负载不均衡现象,此外,通过将未过载计算引擎中已过载的计算引擎标记为过载计算引擎,将过载计算引擎中未过载的计算引擎标记为未过载计算引擎,可以及时更新计算引擎的过载与未过载状态,便于下一时刻准确基于计算引擎的过载与未过载状态进行数据分配,便于实现多内核设备中计算引擎间的负载均衡。本技术提供的一种负载均衡系统、电子设备及计算机可读存储介质也解决了相应技术问题。
附图说明
48.为了更清楚地说明本技术实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本技术的实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据提供的附图获得其他的附图。
49.图1为本技术实施例提供的负载均衡方案的系统框架图;
50.图2为本技术实施例提供的一种负载均衡方法的第一流程图;
51.图3为本技术实施例提供的一种负载均衡方法的第二流程图;
52.图4为本技术实施例提供的一种负载均衡方法的第三流程图;
53.图5为现有负载均衡方案的具体流程图;
54.图6为本技术负载均衡方案的具体流程图;
55.图7为本技术实施例提供的一种负载均衡系统的结构示意图;
56.图8为本发明实施例电子设备的硬件组成结构示意图。
具体实施方式
57.下面将结合本技术实施例中的附图,对本技术实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本技术一部分实施例,而不是全部的实施例。基于本技术中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本技术保护的范围。
58.随着计算机技术的发展,多内核设备的应用越来越广,多内核(multicore)是指在一枚处理器(processor)中集成两个或多个完整的计算引擎(内核),借助多内核技术,设备可以并行对数据进行处理,从而提升处理效率。
59.然而,在多内核设备的运行过程中,存在为多个计算引擎分发任务的需求,比如基于hash算法来计算任务的源ip的hash值,然后对总核数取余后,将该任务调度到余值对应的计算引擎上,在此过程中,当任务比较单一,也即源ip的数量较少时,所有的任务可能调度到一个计算引擎上,导致多个计算引擎的任务分发不均匀,继而会导致多计算引擎间的负载不均衡,严重时会引起网络卡慢等情况,影响多内核设备的性能。而本技术提供的负载均衡方案可以实现多内核设备中计算引擎间的负载均衡。
60.本技术的负载均衡方案中,采用的系统框架具体可以参见图1所示,具体可以包括:多内核的后台服务器01和与后台服务器01建立通信连接的若干数量的用户端02。
61.本技术中,后台服务器01用于执行负载均衡步骤,包括:获取待分配的目标数据;确定当前时刻下、多内核设备中的过载计算引擎及未过载计算引擎;在未过载计算引擎中选取未被分配数据的计算引擎作为当前时刻的目标计算引擎;将目标数据分配给当前时刻的目标计算引擎;将未过载计算引擎中已过载的计算引擎标记为过载计算引擎;将过载计算引擎中未过载的计算引擎标记为未过载计算引擎。
62.进一步的,后台服务器01中还可以设有目标数据数据库、过载计算引擎数据库、未过载计算引擎数据库及目标计算引擎数据库等。其中,目标数据数据库用于保存获取的目标数据,过载计算引擎数据库用户保存过载计算引擎,未过载计算引擎数据库用于保存未过载计算引擎,目标计算引擎数据库用于保存目标计算引擎等。本技术中,后台服务器01可以对一个或多个用户端02的数据处理请求进行响应,可以理解的是,本技术不同的用户端02所发起的数据处理请求,可以是针对同一类数据的处理请求,也可以是针对不同类数据发起的处理请求。
63.请参阅图2,图2为本技术实施例提供的一种负载均衡方法的第一流程图。
64.本技术实施例提供的一种负载均衡方法,可以包括以下步骤:
65.步骤s101:获取待分配的目标数据。
66.实际应用中,可以先获取待分配的目标数据,目标数据的获取方式、类型及内容等可以根据实际需要确定,比如可以将与用户端建立连接后,该连接所发送的所有数据均作为一类目标数据等,这样,有多少个连接,便有多少类目标数据,且目标数据可以为需要按照应用层的处理方式进行处理的数据等,本技术在此不再赘述。
67.步骤s102:确定当前时刻下、多内核设备中的过载计算引擎及未过载计算引擎。
68.实际应用中,在获取待分配的目标数据之后,便可以确定当前时刻下、多内核设备中的过载计算引擎及未过载计算引擎,以便后续基于过载计算引擎及未过载计算引擎来确定目标数据的分配情况。
69.需要说明的是,多内核设备中过载计算引擎及未过载计算引擎的过载判定方式可以根据实际需要确定,比如可以将性能占用比超过预设值的计算引擎划分为过载计算引擎,将性能占用比未超过预设值的计算引擎划分为未过载计算引擎等;此外,过载计算引擎及未过载计算引擎的标记方式也可以根据实际需要确定,比如可以用1表征计算引擎为过载计算引擎,用0表征计算引擎为未过载计算引擎等,当然也可以以队列的形式来标记过载计算引擎及未过载计算引擎,此时,在确定当前时刻下、多内核设备中的过载计算引擎及未过载计算引擎的过程中,可以确定当前时刻下、多内核设备中的过载队列及调度队列,过载队列用于记录过载计算引擎,调度队列用于记录未过载计算引擎,也即,位于过载队列中的计算引擎均为过载计算引擎,位于调度队列中的计算引擎均为未过载计算引擎。
70.步骤s103:在未过载计算引擎中选取未被分配数据的计算引擎作为当前时刻的目标计算引擎。
71.步骤s104:将目标数据分配给当前时刻的目标计算引擎。
72.实际应用,在确定当前时刻下、多内核设备中的过载计算引擎及未过载计算引擎之后,便可以在未过载计算引擎中选取未被分配数据的计算引擎作为当前时刻的目标计算引擎,并将目标数据分配给当前时刻的目标计算引擎,如此进行数据分配的话,因为目标计算引擎为未过载计算引擎,且目标计算引擎未被分配数据,则将目标数据分配给当前时刻的目标计算引擎的话,可以保证目标计算引擎的负载不会突然变大而导致出现负载不均衡的情况。
73.需要说明的是,在未过载计算引擎中选取未被分配数据的计算引擎作为当前时刻的目标计算引擎的过程中,未被分配数据的判定时长可以根据实际需要灵活确定,比如在一轮数据分配过程中,例如在对目标数量的目标数据进行分配的过程中,目标数量可以为计算引擎的总数量,可以将该轮数据分配过程中未被分配数据的未过载计算引擎作为当前时刻的目标计算引擎等,当然,也可以将预设时长内均未被分配数据的未过载计算引擎作为目标计算引擎等,本技术在此不做具体限定。
74.步骤s105:将未过载计算引擎中已过载的计算引擎标记为过载计算引擎。
75.步骤s106:将过载计算引擎中未过载的计算引擎标记为未过载计算引擎。
76.实际应用中,在将目标数据分配给当前时刻的目标计算引擎之后,还需将未过载计算引擎中已过载的计算引擎标记为过载计算引擎,将过载计算引擎中未过载的计算引擎标记为未过载计算引擎,以便及时调整计算引擎的过载状态及未过载状态,继而保证下一时刻计算引擎的过载状态及未过载状态的准确性,便于下一时刻准确基于计算引擎的过载与未过载状态进行数据分配。
77.本技术提供的一种负载均衡方法,获取待分配的目标数据;确定当前时刻下、多内核设备中的过载计算引擎及未过载计算引擎;在未过载计算引擎中选取未被分配数据的计算引擎作为当前时刻的目标计算引擎;将目标数据分配给当前时刻的目标计算引擎;将未过载计算引擎中已过载的计算引擎标记为过载计算引擎;将过载计算引擎中未过载的计算引擎标记为未过载计算引擎。本技术中,在未过载计算引擎中选取未被分配数据的计算引擎作为当前时刻的目标计算引擎,并将目标数据分配给当前时刻的目标计算引擎,实现了将目标数据分配给未被分配数据的未过载计算引擎中,避免了将目标数据再次分配给过载计算引擎而导致的多计算引擎间的负载不均衡现象,此外,通过将未过载计算引擎中已过
载的计算引擎标记为过载计算引擎,将过载计算引擎中未过载的计算引擎标记为未过载计算引擎,可以及时更新计算引擎的过载与未过载状态,便于下一时刻准确基于计算引擎的过载与未过载状态进行数据分配,便于实现多内核设备中计算引擎间的负载均衡。
78.请参阅图3,图3为本技术实施例提供的一种负载均衡方法的第二流程图。
79.本技术实施例提供的一种负载均衡方法,可以包括以下步骤:
80.步骤s201:获取待分配的目标数据。
81.步骤s202:确定当前时刻下、多内核设备中的过载队列及调度队列,过载队列用于记录过载计算引擎,调度队列用于记录未过载计算引擎。
82.步骤s203:在调度队列中,将当前时刻的调度游标所指向的计算引擎作为当前时刻的目标计算引擎。
83.步骤s204:控制下一时刻的调度游标指向调度队列中、当前时刻的目标计算引擎的下一计算引擎;其中,若当前时刻的目标计算引擎为调度队列中的最后一个计算引擎,则当前时刻的目标计算引擎的下一计算引擎为调度队列中的第一个计算引擎。
84.实际应用中,在以队列形式表征计算引擎过载及未过载的情况下,在未过载计算引擎中选取未被分配数据的计算引擎作为当前时刻的目标计算引擎的过程中,可以在调度队列中,将当前时刻的调度游标所指向的计算引擎作为当前时刻的目标计算引擎,以借助调度游标来快速确定目标计算引擎;相应的,在未过载计算引擎中选取未被分配数据的计算引擎作为当前时刻的目标计算引擎之后,还可以控制下一时刻的调度游标指向调度队列中、当前时刻的目标计算引擎的下一计算引擎,以便即使更新下一时刻的调度游标,进而便于下一时刻时目标计算引擎的快速确定;且需要说明的是,若当前时刻的目标计算引擎为调度队列中的最后一个计算引擎,则当前时刻的目标计算引擎的下一计算引擎可以为调度队列中的第一个计算引擎,当然也可以有其他设置方式,本技术在此不做具体限定。
85.步骤s205:将目标数据分配给当前时刻的目标计算引擎。
86.步骤s206:将未过载计算引擎中已过载的计算引擎标记为过载计算引擎。
87.步骤s207:将过载计算引擎中未过载的计算引擎标记为未过载计算引擎。
88.请参阅图4,图4为本技术实施例提供的一种负载均衡方法的第三流程图。
89.本技术实施例提供的一种负载均衡方法,可以包括以下步骤:
90.步骤s301:获取待分配的目标数据。
91.步骤s302:确定当前时刻下、多内核设备中的过载队列及调度队列,过载队列用于记录过载计算引擎,调度队列用于记录未过载计算引擎。
92.步骤s303:在未过载计算引擎中选取未被分配数据的计算引擎作为当前时刻的目标计算引擎。
93.步骤s304:将目标数据分配给当前时刻的目标计算引擎。
94.步骤s305:判断上一时刻的目标计算引擎是否过载;若上一时刻的目标计算引擎过载,则执行步骤s306。
95.步骤s306:将调度队列中上一时刻的目标计算引擎转移至过载队列的队尾。
96.实际应用中,在将未过载计算引擎中已过载的计算引擎标记为过载计算引擎的过程中,因为上一时刻的目标计算引擎被分配了数据,所以上一时刻的目标计算引擎最有可能过载,所以可以判断上一时刻的目标计算引擎是否过载;若上一时刻的目标计算引擎过
载,则可以将调度队列中上一时刻的目标计算引擎转移至过载队列的队尾,以快速判断调度队列中可能过载的计算引擎是否真正过载,并快速将调度队列已过载的计算引擎转移至过载队列。
97.步骤s307:在过载队列中,判断当前时刻的过载游标所对应的计算引擎是否未过载;若当前时刻的过载游标所对应的计算引擎未过载,则执行步骤s308。
98.步骤s308:将过载队列中当前时刻的过载游标所对应的计算引擎转移至调度队列的队尾。
99.实际应用中,在将过载计算引擎中未过载的计算引擎标记为未过载计算引擎的过程中,在过载队列中,可以判断当前时刻的过载游标所对应的计算引擎是否未过载;若当前时刻的过载游标所对应的计算引擎未过载,则可以将过载队列中当前时刻的过载游标所对应的计算引擎转移至调度队列的队尾,以快速判断过载队列中的过载计算引擎是否已更新为未过载,并快速将过载队列未过载的计算引擎转移至调度队列。
100.步骤s309:控制下一时刻的过载游标指向过载队列中、当前时刻的过载游标所对应的计算引擎的下一计算引擎。
101.步骤s310:若下一时刻的调度游标指向调度队列中的第一个计算引擎,则控制下一时刻的过载游标指向过载队列中的第一个计算引擎。
102.实际应用中,在将过载计算引擎中未过载的计算引擎标记为未过载计算引擎之后,还可以控制下一时刻的过载游标指向过载队列中、当前时刻的过载游标所对应的计算引擎的下一计算引擎,且在此过程中,若下一时刻的调度游标指向调度队列中的第一个计算引擎,则控制下一时刻的过载游标指向过载队列中的第一个计算引擎。
103.具体应用场景中,存在同时对多个目标数据进行分配的需求,此时可能发生多个目标数据分配给同一个计算引擎而导致计算引擎冲突的问题,为了避免此问题,可以借助锁技术来进行相应处理,比如在调度队列中,将当前时刻的调度游标所指向的计算引擎作为当前时刻的目标计算引擎的过程中,可以判断当前时刻的调度游标是否有锁;若当前时刻的调度游标无锁,则对当前时刻的调度游标进行加锁,并在调度队列中,将当前时刻的调度游标所指向的计算引擎作为当前时刻的目标计算引擎;相应的,将过载计算引擎中未过载的计算引擎标记为未过载计算引擎之后,还可以解除当前时刻的调度游标的锁。
104.为便于理解本技术提供的负载均衡方案,现结合网卡收包及防火墙的数据包处理过程来对现有负载均衡方案和本技术的负载均衡方案进行对照说明,且防火墙为多核设备,也即多计算引擎设备。
105.现有的负载均衡方案如图5所示,网卡收包后,判断该数据包的对应连接是否已被调度,若已被调度过,改包所在连接的后续包就不需要做调度了,则可以将该数据包发送至应用层中的对应内核进行安全检测等,若未被调度过,则判断是否需要对该数据包进行调度,若对该数据包进行调度,则基于源ip的hash算法来对该数据包进行调度,并在调度完成后,将该数据包发送至应用层中的对应内核,若不对该数据包进行调度,则网卡直接将该数据包发送给应用层。且在此过程中,内核往队列里放入一个包,会把写指针w前移一位;smp(security monitoring process,应用层安全检测进程)从队列里开始处理一个包,会把读指针r往前移一位,以表示smp正在处理这个包;smp处理完一个包,会把发指针s往前移一位,以表明这个包已经处理完可以从网卡发送出去。
106.假设理想情况下网络收发包的速度完全均匀,则会有两种状态:
107.a.设备性能足够,则队列里的待处理包个数(w-r)==0恒成立;
108.b.设备性能不够,则队列里的待处理包个数(w-r)会持续增加,并且增长率可测;
109.也即通过(w-r)的值可以判断出内核是否过载。但实际应用场景中,网络收发包是波动的,瞬间的待处理包个数比较多,只要不超出环形队列的容量,则是正常的。(w-r)超过阈值,并且增长率也超过阈值时,则可以认为当前内核过载了,同时,当一个包出队列的时间与入队列的时间相差较大时,可以认为是某个包的检测逻辑较复杂,单内核的性能消耗同样较大,则可以认为当前内核也是过载状态。但现有的源ip的hash算法并不能保证新数据一定被分配给了未过载的内核。
110.而本技术提供的负载均衡方案可以保证新数据被分配给未过载的内核。请参阅图6,假设有8个内核,内核上的字母表示该内核当前是否过载,其中,y表示不过载,n表示过载,不难理解,初始状态下所有内核均为y,如果某个内核出现过载则其字母会变为n;队列中存放的是内核的核号,过载队列中的节点表示未来一个周期内,比如在遍历队列一轮的时间内,当前内核是过载的;调度队列中的节点表示未来一个周期内当前内核是不过载的。则整个调度过程如下:
111.第一条连接到来后,将第一条连接调度到调度队列中调度游标当前指示的一号内核,同时检查上一条连接调度的内核以及最先过载的内核当前是否过载,此时没有上一条连接,则可以不用检测上一条连接的过载情况,假设检测完成后过载队列中的三号内核不过载了,则可以把三号内核插到调度队列尾部,将调度队列和过载队列的游标均向下移动一位;
112.第二条连接到来后,将第二条连接调度到调度队列中调度游标当前指示的二号内核,同时检查一号内核和四号内核是否过载,并将调度队列和过载队列的游标均向下移动一位;
113.第三条连接到来后,将第三条连接调度到调度队列中调度游标当前指示的五号内核,同时检查二号内核是否过载,并将调度队列和过载队列的游标均向下移动一位,需要说明的是因为过载队列中过载游标不再指示内内核,所以这里不再对过载队列进行未过载检查,此时,可以在整条调度队列遍历完后再重新开始检查过载队列,当然也可以直接重新开始检查过载队列等,本技术在此不做具体限定;
114.第四条连接到来后,将第四条连接调度到调度队列中调度游标当前指示的六号内核,同时检查五号内核是否过载,并将调度队列和过载队列的游标均向下移动一位;
115.第五条连接到来后,将第五条连接调度到调度队列中调度游标当前指示的七号内核,同时检查六号内核是否过载,并将调度队列和过载队列的游标均向下移动一位,假设此时六号内核过载,则将六号内核移到过载队列,这时候过载队列的游标就又有值了;
116.第六条连接到来后,将第六条连接调度到调度队列中调度游标当前指示的八号内核,同时检查七号内核和六号内核是否过载,并将调度队列和过载队列的游标均向下移动一位;
117.第七条连接到来后,将第七条连接调度到调度队列中调度游标当前指示的三号内核,同时检查八号内核是否过载,并将调度队列和过载队列的游标均向下移动一位;
118.第八条连接到来后,将第八条连接调度到调度队列中调度游标当前指示的一号内
核,同时检查三号内核和四号内核是否过载,并将调度队列和过载队列的游标均向下移动一位。需要说明的是,这里调度队列已经遍历一轮了,过载队列的游标需要清零,从第一个节点开始检查,同时三号内核已经移到调度队列了,所以过载队列中的第一个节点成为四号内核;
119.循环上述流程,直至结束。
120.请参阅图7,图7为本技术实施例提供的一种负载均衡系统的结构示意图。
121.本技术实施例提供的一种负载均衡系统,包括:
122.数据获取模块101,用于获取待分配的目标数据;
123.计算引擎确定模块102,用于确定当前时刻下、多内核设备中的过载计算引擎及未过载计算引擎;
124.目标计算引擎确定模块103,用于在未过载计算引擎中选取未被分配数据的计算引擎作为当前时刻的目标计算引擎;
125.分配模块104,用于将目标数据分配给当前时刻的目标计算引擎;
126.已过载计算引擎转移模块105,用于将未过载计算引擎中已过载的计算引擎标记为过载计算引擎;
127.未过载计算引擎转移模块106,用于将过载计算引擎中未过载的计算引擎标记为未过载计算引擎。
128.本技术实施例提供的一种负载均衡系统,计算引擎确定模块包括:
129.计算引擎确定单元,用于确定当前时刻下、多内核设备中的过载队列及调度队列,过载队列用于记录过载计算引擎,调度队列用于记录未过载计算引擎。
130.本技术实施例提供的一种负载均衡系统,目标计算引擎确定模块可以包括:
131.目标计算引擎确定单元,用于在调度队列中,将当前时刻的调度游标所指向的计算引擎作为当前时刻的目标计算引擎;
132.还包括:
133.第一控制单元,用于目标计算引擎确定模块在未过载计算引擎中选取未被分配数据的计算引擎作为当前时刻的目标计算引擎之后,控制下一时刻的调度游标指向调度队列中、当前时刻的目标计算引擎的下一计算引擎;其中,若当前时刻的目标计算引擎为调度队列中的最后一个计算引擎,则当前时刻的目标计算引擎的下一计算引擎为调度队列中的第一个计算引擎。
134.本技术实施例提供的一种负载均衡系统,已过载计算引擎转移模块可以包括:
135.第一判断单元,用于判断上一时刻的目标计算引擎是否过载;若上一时刻的目标计算引擎过载,则将调度队列中上一时刻的目标计算引擎转移至过载队列的队尾。
136.本技术实施例提供的一种负载均衡系统,未过载计算引擎转移模块可以包括:
137.第二判断单元,用于在过载队列中,判断当前时刻的过载游标所对应的计算引擎是否未过载;若当前时刻的过载游标所对应的计算引擎未过载,则将过载队列中当前时刻的过载游标所对应的计算引擎转移至调度队列的队尾;
138.还包括:
139.第二控制单元,用于未过载计算引擎转移模块将过载计算引擎中未过载的计算引擎标记为未过载计算引擎之后,控制下一时刻的过载游标指向过载队列中、当前时刻的过
载游标所对应的计算引擎的下一计算引擎。
140.本技术实施例提供的一种负载均衡系统,还可以包括:
141.第三控制单元,用于第二控制单元控制下一时刻的调度游标指向调度队列中、当前时刻的目标计算引擎的下一计算引擎之后,若下一时刻的调度游标指向调度队列中的第一个计算引擎,则控制下一时刻的过载游标指向过载队列中的第一个计算引擎。
142.本技术实施例提供的一种负载均衡系统,目标计算引擎确定模块可以包括:
143.第三判断单元,用于判断当前时刻的调度游标是否有锁;若当前时刻的调度游标无锁,则对当前时刻的调度游标进行加锁,并在调度队列中,将当前时刻的调度游标所指向的计算引擎作为当前时刻的目标计算引擎;
144.还包括:
145.第一解除单元,用于未过载计算引擎转移模块将过载计算引擎中未过载的计算引擎标记为未过载计算引擎之后,解除当前时刻的调度游标的锁。
146.基于上述程序模块的硬件实现,且为了实现本发明实施例的方法,本发明实施例还提供了一种电子设备,图8为本发明实施例电子设备的硬件组成结构示意图,如图8所示,电子设备包括:
147.通信接口1,能够与其它设备比如网络设备等进行信息交互;
148.处理器2,与通信接口1连接,以实现与其它设备进行信息交互,用于运行计算机程序时,执行上述一个或多个技术方案提供的负载均衡方法。而所述计算机程序存储在存储器3上。
149.当然,实际应用时,电子设备中的各个组件通过总线系统4耦合在一起。可理解,总线系统4用于实现这些组件之间的连接通信。总线系统4除包括数据总线之外,还包括电源总线、控制总线和状态信号总线。但是为了清楚说明起见,在图8中将各种总线都标为总线系统4。
150.本发明实施例中的存储器3用于存储各种类型的数据以支持电子设备的操作。这些数据的示例包括:用于在电子设备上操作的任何计算机程序。
151.可以理解,存储器3可以是易失性存储器或非易失性存储器,也可包括易失性和非易失性存储器两者。其中,非易失性存储器可以是只读存储器(rom,read only memory)、可编程只读存储器(prom,programmable read-only memory)、可擦除可编程只读存储器(eprom,erasable programmable read-only memory)、电可擦除可编程只读存储器(eeprom,electrically erasable programmable read-only memory)、磁性随机存取存储器(fram,ferromagnetic random access memory)、快闪存储器(flash memory)、磁表面存储器、光盘、或只读光盘(cd-rom,compact disc read-only memory);磁表面存储器可以是磁盘存储器或磁带存储器。易失性存储器可以是随机存取存储器(ram,random access memory),其用作外部高速缓存。通过示例性但不是限制性说明,许多形式的ram可用,例如静态随机存取存储器(sram,static random access memory)、同步静态随机存取存储器(ssram,synchronous static random access memory)、动态随机存取存储器(dram,dynamic random access memory)、同步动态随机存取存储器(sdram,synchronous dynamic random access memory)、双倍数据速率同步动态随机存取存储器(ddrsdram,double data rate synchronous dynamic random access memory)、增强型同步动态随机
存取存储器(esdram,enhanced synchronous dynamic random access memory)、同步连接动态随机存取存储器(sldram,synclink dynamic random access memory)、直接内存总线随机存取存储器(drram,direct rambus random access memory)。本发明实施例描述的存储器2旨在包括但不限于这些和任意其它适合类型的存储器。
152.上述本发明实施例揭示的方法可以应用于处理器2中,或者由处理器2实现。处理器2可能是一种集成电路芯片,具有信号的处理能力。在实现过程中,上述方法的各步骤可以通过处理器2中的硬件的集成逻辑电路或者软件形式的指令完成。上述的处理器2可以是通用处理器、dsp,或者其他可编程逻辑器件、分立门或者晶体管逻辑器件、分立硬件组件等。处理器2可以实现或者执行本发明实施例中的公开的各方法、步骤及逻辑框图。通用处理器可以是微处理器或者任何常规的处理器等。结合本发明实施例所公开的方法的步骤,可以直接体现为硬件译码处理器执行完成,或者用译码处理器中的硬件及软件模块组合执行完成。软件模块可以位于存储介质中,该存储介质位于存储器3,处理器2读取存储器3中的程序,结合其硬件完成前述方法的步骤。
153.处理器2执行所述程序时实现本发明实施例的各个方法中的相应流程,为了简洁,在此不再赘述。
154.在示例性实施例中,本发明实施例还提供了一种存储介质,即计算机存储介质,具体为计算机可读存储介质,例如包括存储计算机程序的存储器3,上述计算机程序可由处理器2执行,以完成前述方法所述步骤。计算机可读存储介质可以是fram、rom、prom、eprom、eeprom、flash memory、磁表面存储器、光盘、或cd-rom等存储器。
155.在本技术所提供的几个实施例中,应该理解到,所揭露的装置、终端和方法,可以通过其它的方式实现。以上所描述的设备实施例仅是示意性的,例如,所述单元的划分,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式,如:多个单元或组件可以结合,或可以集成到另一个系统,或一些特征可以忽略,或不执行。另外,所显示或讨论的各组成部分相互之间的耦合、或直接耦合、或通信连接可以是通过一些接口,设备或单元的间接耦合或通信连接,可以是电性的、机械的或其它形式的。
156.上述作为分离部件说明的单元可以是、或也可以不是物理上分开的,作为单元显示的部件可以是、或也可以不是物理单元,即可以位于一个地方,也可以分布到多个网络单元上;可以根据实际的需要选择其中的部分或全部单元来实现本实施例方案的目的。
157.另外,在本发明各实施例中的各功能单元可以全部集成在一个处理单元中,也可以是各单元分别单独作为一个单元,也可以两个或两个以上单元集成在一个单元中;上述集成的单元既可以采用硬件的形式实现,也可以采用硬件加软件功能单元的形式实现。
158.本领域普通技术人员可以理解:实现上述方法实施例的全部或部分步骤可以通过程序指令相关的硬件来完成,前述的程序可以存储于一计算机可读取存储介质中,该程序在执行时,执行包括上述方法实施例的步骤;而前述的存储介质包括:移动存储设备、rom、ram、磁碟或者光盘等各种可以存储程序代码的介质。
159.或者,本发明上述集成的单元如果以软件功能模块的形式实现并作为独立的产品销售或使用时,也可以存储在一个计算机可读取存储介质中。基于这样的理解,本发明实施例的技术方案本质上或者说对现有技术做出贡献的部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质中,包括若干指令用以使得一台电子设备(可以是
个人计算机、服务器、或者网络设备等)执行本发明各个实施例所述方法的全部或部分。而前述的存储介质包括:移动存储设备、rom、ram、磁碟或者光盘等各种可以存储程序代码的介质。
160.本技术实施例提供的负载均衡系统、电子设备及计算机可读存储介质中相关部分的说明请参见本技术实施例提供的负载均衡方法中对应部分的详细说明,在此不再赘述。另外,本技术实施例提供的上述技术方案中与现有技术中对应技术方案实现原理一致的部分并未详细说明,以免过多赘述。
161.还需要说明的是,在本文中,诸如第一和第二等之类的关系术语仅仅用来将一个实体或者操作与另一个实体或操作区分开来,而不一定要求或者暗示这些实体或操作之间存在任何这种实际的关系或者顺序。而且,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、物品或者设备不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、物品或者设备所固有的要素。在没有更多限制的情况下,由语句“包括一个
……”
限定的要素,并不排除在包括所述要素的过程、方法、物品或者设备中还存在另外的相同要素。
162.对所公开的实施例的上述说明,使本领域技术人员能够实现或使用本技术。对这些实施例的多种修改对本领域技术人员来说将是显而易见的,本文中所定义的一般原理可以在不脱离本技术的精神或范围的情况下,在其它实施例中实现。因此,本技术将不会被限制于本文所示的这些实施例,而是要符合与本文所公开的原理和新颖特点相一致的最宽的范围。
当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1