本公开涉及分布式存储领域,特别涉及用于分布式集群的资源管理方法、装置、存储介质、电子设备。
背景技术:
1、在图2所示的分布式集群20中,为解决有状态服务发版以及宕机场景下的负载均衡问题,引入了虚拟层的槽(slot)的方式来管理资源(task)。如图2所示,这些资源经过哈希计算(hash&mod),被分别存储到对应的槽中。这些槽中的一部分被分配给分布式集群中的每个节点,从而使资源映射到对应的节点进行管理,实现集群的水平扩展。当集群内的节点发生变更,就需要触发槽的重分配,使集群中剩余的每个节点负责的槽数量尽量平均。
2、现有的重分配方案主要是采用以下步骤:
3、全部停服:向所有节点发送停止调度指令,等待所有节点返回确认(ack);
4、通知分配:收到所有节点的ack之后,向所有节点发送其所负责(分配)的槽信息,所有节点从数据库(db)加载所分配的槽的资源,并等待所有节点返回ack;
5、全部启动,收到上述ack之后,向所有节点发送开始调度指令。
6、上述过程主要存在以下问题:停服时间长:主要时间消耗在资源加载,导致整体停服时间长;影响范围大:一个节点变更,导致所有节点停止调度,进行全部资源的重置;水平扩展弱:集群节点个数越多,分配越慢;回滚操作重:如果一个节点出现问题,需重新分配,影响所有节点。
技术实现思路
1、本技术实施例提供了用于分布式集群的资源管理方法、装置、存储介质、电子设备以及计算机程序产品。
2、第一方面,本技术实施例提供了一种用于分布式集群的资源管理方法,用于电子设备,所述分布式集群包括多个节点,每个节点被分配有一个或多个槽,所述方法包括:
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、进一步,节点将耗时的资源加载和轻量的资源使用分离在两层缓存中,分别进行控制,从而在迁移过程中,提前执行资源加载,因此可以减少停服时间。而且,多个迁移过程并行执行,使得多个迁移过程中的资源加载并行执行,因此,可以大大缩短所有迁移过程中的加载耗时,进一步减少了停服时间。