一种存储任务管理方法、装置及其介质与流程
未命名
08-14
阅读:122
评论:0
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.若存储系统中出现异常的任务节点,则获取任务节点中的所有任务作为待管理任务,并分配为重分配型;
41.若存储系统中出现异常的主节点,则获取异常的主节点管理的所有待管理任务,并分配为初始化型。
42.另一方面,上述第一管理模块中所依据任务类型执行的状态转移流程具体包括:
43.对应于待添加型,包括:为待管理任务分配对应的任务节点;将待管理任务和任务节点的分配对应关系存储于主节点的内存、并持久化到后端存储中;通知对应的任务节点添加待管理任务;
44.对应于待删除型,包括:确定待管理任务所对应的任务节点;通知对应的任务节点释放待管理任务,并删除主节点内存和后端存储中待管理任务的分配对应关系;
45.对应于重分配型,包括:确定待管理任务所对应的任务节点;通知对应的任务节点释放待管理任务,并删除主节点内存和后端存储中待管理任务的分配对应关系;为待管理任务分配新的任务节点;将新的分配对应关系存储于主节点的内存、并持久化到后端存储中;通知新分配的任务节点添加待管理任务;
46.对应于初始化型,包括:于后端存储中获取待管理任务的分配对应关系,并将其存储与新的主节点的内存中;通知对应的任务节点添加待管理任务。
47.另一方面,当第一管理模块依据待删除型或重分配型执行相应状态转移流程中的通知对应的任务节点释放待管理任务,并删除主节点内存和后端存储中待管理任务的分配对应关系的步骤时,具体用于:
48.删除主节点内存中对应于待管理任务的分配对应关系;
49.通知对应的任务节点释放待管理任务;
50.删除后端存储中对应于待管理任务的分配对应关系。
51.另一方面,当第一管理模块执行状态转移流程中的为所述待管理任务分配所述任务节点的步骤时,具体用于:
52.根据存储系统中各任务节点的负载情况,为待管理任务分配任务节点。
53.另一方面,当第一管理模块执行重分配型所对应的状态转移流程时,还用于:
54.若在通知对应的任务节点释放待管理任务之后的预设时长内未得到任务节点的回复,则继续后续的为待管理任务分配新的任务节点的步骤。
55.另一方面,上述的第一管理模块具体用于:通过状态机执行与任务类型对应的状态转移流程以对待管理任务进行管理。
56.为解决上述技术问题,本技术还提供一种存储任务管理装置,包括:
57.存储器,用于存储计算机程序;
58.处理器,用于执行计算机程序时实现如上述的存储任务管理方法的步骤。
59.为解决上述技术问题,本技术还提供一种计算机可读存储介质,计算机可读存储介质上存储有计算机程序,计算机程序被处理器执行时实现如上述的存储任务管理方法的步骤。
60.本技术提供的一种存储任务管理方法,通过预先设置的任务类型定义不同场景下
的待管理任务,进而通过对应的状态转移流程实现相应的管理操作。对于一个待管理任务,当其被加入到任务队列中才会执行对应的管理操作,而当对该待管理任务的一整套状态转移流程被完成之后,除非此任务的任务类型改变,否则不会被再次添加至任务队列,也即保证任一待管理任务不会因为除外部事务导致任务类型改变之外的因素而被重复管理,从而最大程度上避免了任务管理过程中的逻辑冲突。本技术通过任务队列以及预先设置的任务类型及其对应的状态转移流程实现对存储系统中各任务的管理,以保证在对于存储系统中任务管理的种种情况都可以得到有效地管理的同时,使得各个基于不同场景而采取的针对性管理措施之间不会产生冲突;仅对在任务队列中的任务进行管理,且仅对其进行对应任务类型的管理流程;此外,当某一任务执行完毕完整的状态转移流程之后,仅当出现任务类型变更时才被允许再一次加入任务队列;从而简化任务管理流程,提高管理效率,尤其是在处理任务在异常场景中的管理问题有着更为突出的优势。
61.本技术提供的存储任务管理装置、及计算机可读存储介质,与上述方法对应,效果同上。
附图说明
62.为了更清楚地说明本技术实施例,下面将对实施例中所需要使用的附图做简单的介绍,显而易见地,下面描述中的附图仅仅是本技术的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
63.图1为本发明提供的一种存储任务管理方法的流程图;
64.图2为本发明提供的一种卷快照变化示意图;
65.图3为本发明提供的一种存储任务管理装置的结构图;
66.图4为本发明提供的另一种存储任务管理装置的结构图。
具体实施方式
67.下面将结合本技术实施例中的附图,对本技术实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本技术一部分实施例,而不是全部实施例。基于本技术中的实施例,本领域普通技术人员在没有做出创造性劳动前提下,所获得的所有其他实施例,都属于本技术保护范围。
68.本技术的核心是提供一种存储任务管理方法、装置及其介质。
69.为了使本技术领域的人员更好地理解本技术方案,下面结合附图和具体实施方式对本技术作进一步的详细说明。
70.在目前的分布式存储系统中,由于各个节点都可以执行任务,所以需要一个主体控制任务的分配,以将任务分配给合适的节点执行从而满足预期目的。目前用于进行任务管理的主体主要有:创建任务的程序、以及存储系统中各节点所推举出的一个主节点两种。使用主节点进行任务管理的优势在于便于对任务的统一分配,可以使存储系统的负载更加均衡,同时也更容易维护,所以在实际应用中一般选用主节点进行任务管理。
71.但是,为保证任务管理的有效性,目前的管理策略通常是针对各种不同的情况采取针对性的管理措施,在部分场景中,可能针对同一任务具有不同的管理措施,尤其是在处理异常问题这一情况中,对于同一任务的所采用的不同管理措施之间甚至还可能出现逻辑
问题,导致管理混乱甚至失效,不利于存储系统的稳定运行。
72.所以,为解决上述的问题,本技术提供一种存储任务管理方法,如图1所示,包括:
73.s10:获取待管理任务,为其分配对应的任务类型,并添加至任务队列中。
74.s20:对于任务队列中的待管理任务,根据预先定义的状态转移流程进行管理。
75.其中,状态转移流程与任务类型一一对应。
76.s30:当状态转移流程执行完毕时,将对应的待管理任务移出任务队列,且除非该待管理任务的任务类型发生变化,否则禁止该待管理任务再次添加至任务队列中。
77.需要说明的是,本技术并不限制上述方法的执行主体,但如目前相关的任务管理方法一致的是,为方便维护和统一管理,一般选用主节点作为上述步骤的执行主体。
78.而对于任务类型以及相应的状态转移流程,也是根据实际任务管理过程中对于常见的、绝大多数的管理情况以及对应的管理措施的一种归类汇总,可根据实际需要进行针对性的设置。针对不同的应用场景,为待管理任务赋予不同的任务类型,进而通过预先设置且对应的状态转移流程进行管理。
79.状态转移流程也即针对一种任务类型所采取的管理流程,其将任务分成不同状态,针对每一任务状态采取相应的措施或操作,在执行完一次措施或操作后该任务的状态将跳转至下一状态,进而触发下一状态对应的措施或操作,直至跳转至最终状态,完成一次完整的状态转移流程,也即完成针对一种任务类型的完整的管理流程。相应的,上述的状态转移流程可以通过设置在主节点中的状态机完成,状态机用于实现各个待管理任务的管理状态迁移,而对于状态机的控制和维护则是在主节点中进行管理。
80.此外,本实施例虽不限制上述任务类型和状态转移流程的具体实施方式,任务类型的定义和状态转移流程的设置应该配合实施,但提供一种可能的实施方案,如图2所示,定义的任务类型包括:待添加型、待删除型、重分配型和初始化型。
81.对应的,上述几种任务类型所针对的应用场景如下:
82.1、待添加型:待添加型的任务类型主要针对于在某一任务的创建之初,当其被主节点获取到相应的任务信息并被识别后纳入到待管理任务范畴内,根据一般的管理需要,主节点应为该待管理任务分配一个执行用的任务节点。所以针对如上这种应用场景,也即有:
83.当主节点获取待管理任务时,若待管理任务为新创建的任务,则将其任务类型分配为待添加型。
84.2、待删除型:与上述待添加型相同,待删除型同样针对某一具体任务。当某一任务执行完毕后或者因为某些异常原因导致需要从原任务节点中删除(或释放)时,即对应待删除型的任务类型,也即有:
85.当主节点获取到某一待管理任务之后,若感知到该待管理任务结束或被取消,则将其任务类型分配为待删除型。
86.具体的,关于如何确定某一任务是否需要被删除,在目前的存储系统应用中已有较为成熟的方案,例如主节点监控各任务节点是否有任务完成,或当因为某些异常问题导致任务不得不中断时,由于这种异常问题一般较为严重,实际应用中也通常有措施保证该异常问题会被主节点感知到,故也可由此确定某一任务是否需要被定义为待删除型的任务类型。
87.3、重分配型:与上述待分配型和待删除型所区别的是,虽然重分配型也是针对某一任务所定义的任务类型,但其对应的应用场景更多的是关注于节点的异常情况。当存储系统中的某一任务节点出现异常时(例如下电等情况),其负责的多个任务无法执行,此时按照一般的任务管理要求,应该需要将这部分任务重新分配至其他正常的任务节点中,也即有:
88.若存储系统中出现异常的任务节点,则获取任务节点中的所有任务作为待管理任务,并分配为重分配型。
89.4、初始化型:与重分配型相同的是,初始化型也是针对于节点所出现的异常情况,但与重分配型不同的是,初始化型是针对存储系统中主节点因为出现异常而导致其丧失对任务的管理能力这一场景。
90.当主节点发生异常时,存储系统中的各节点应重新选举出一个新的主节点,以承担任务管理的职责,而新的主节点没有相关的任务信息以及管理信息,故需要重新对各待管理任务进行分配,也即有:
91.若存储系统中出现异常的主节点,则获取异常的主节点管理的所有待管理任务,并分配为初始化型。
92.不过还需要说明的是,初始化型不仅仅针对主节点出现异常而导致重新选举主节点的情况,还可以针对其他导致有新主节点生成的情况,其目的是为了使新建立的主节点能恢复原有的任务管理状态。具体的,例如当存储系统集群初始化时,主节点重新选举,此时新的主节点需要恢复原有任务管理信息(前提是存在原有任务管理信息,且被存储于某一存储介质中)。
93.针对上述定义的任务类型,又如图2所示,有与之一一对应的状态转移流程,状态转移流程中包括各种任务状态,以及当任务处于当前任务状态下所应执行的管理操作、执行管理操作后跳转至的下一任务状态:
94.1、对应于待添加型;
95.由上述可知,此时的管理需求是为该待管理任务分配一个可用于执行任务的任务节点,故对应的状态转移流程应包括:
96.s211:为待管理任务分配对应的任务节点;
97.s212:将待管理任务和任务节点的分配对应关系存储于主节点的内存、并持久化到后端存储中;
98.s213:通知对应的任务节点添加待管理任务;
99.2、对应于待删除型;
100.由上述可知,此时的管理需求是将该待管理任务从原有任务节点中释放,故对应的状态转移流程应包括:
101.s221:确定待管理任务所对应的任务节点;
102.s222:通知对应的任务节点释放待管理任务,并删除主节点内存和后端存储中待管理任务的分配对应关系;
103.3、对应于重分配型;
104.由上述可知,此时的管理需求是将该待管理任务从原先分配且出现异常的任务节点中释放,并分配新的任务节点,故对应的状态转移流程相当于先进行上述的删除流程,再
进行添加流程,具体的,也即包括:
105.s231:确定待管理任务所对应的任务节点;
106.s232:通知对应的任务节点释放待管理任务,并删除主节点内存和后端存储中待管理任务的分配对应关系;
107.s233:为待管理任务分配新的任务节点;
108.s234:将新的分配对应关系存储于主节点的内存、并持久化到后端存储中;
109.s235:通知新分配的任务节点添加待管理任务;
110.4、对应于初始化型;
111.对于新选举出的主节点,需要重新获取各待管理任务的相关信息以恢复管理功能,所以对应的状态转移流程包括:
112.s241:于后端存储中获取待管理任务的分配对应关系,并将其存储与新的主节点的内存中;
113.s242:通知对应的任务节点添加待管理任务。
114.需要说明的是,在状态转移流程中,任务状态还包括初始化,但任务状态中的初始化不等同于任务类型的初始化型。任务状态的初始化指任务管理之初的初始化,例如当任务新被创建时,需要一些必要的初始化配置操作,这些必要的初始化操作同样包含在状态转移流程中,但由于这些部分为本领域技术人员所熟知的,本实施例也并未对此做出改进,故不在上述具体的状态转移流程中示出,但不限制于上述的状态转移流程不包括此类任务管理过程中的必须操作。
115.还需要说明的是,步骤s241中通过于后端存储中获取各待管理任务的分配对应关系这一特征,是建立在待添加型、待删除型和重分配型在每次为待管理任务分配任务节点、或从任务节点中释放该待管理任务时所对后端存储进行的更新操作的基础上的。后端存储用于持久化存储待管理任务和其分配的任务节点之间的对应关系,以便于当主节点出现故障时新选举出的主节点能够及时、快速且不遗漏地恢复对各个待管理任务的管理功能。
116.另外,对于后端存储的具体实施,容易理解的是,后端存储是存储系统中区别于主节点和任务节点的另一节点,其具体的硬件实施可以是硬盘等具备持久化存储数据的存储介质,用于保存存储系统中所有任务的管理信息(具体包括上述的分配对应关系),以方便其他节点查询相关任务管理信息,一方面便于在主节点出现异常时,新主节点得以实现管理功能快速、完整的恢复;另一方面也方便主节点判断某一待管理任务的任务类型(例如当主节点新感知到某一待管理任务时,可通过比对后端存储中是否有该任务对应的相关信息,可判断出此待管理任务是否为新增任务,也即是否为其分配待添加型的任务类型)。
117.同样的,上述每当对待管理任务与其分配的任务节点的分配对应关系出现变化时(新增、删除和重分配),还对主节点内存中进行分配对应关系的写入,其目的是方便主节点的管理,虽然于后端存储中已经持久化存储有上述的分配对应关系,但对于节点与节点之间的信息调取,无论从实施难度上还是效率上都相对于节点内部的信息交互要在效果上更差一些,故本实施例所提供的状态转移流程中的步骤还包括对主节点内存的信息更新。
118.进一步的,对于上述待管理任务及其分配的任务节点之间的分配对应关系,在主节点内存中可以存放在内存map中,其结构特征适合于存储待管理任务和任务节点之间这样的一一对应关系,从而在添加、删除、更新、读取等信息交互操作中得到更高的效率,也即
进一步提高任务管理进程的效率和及时性。
119.map:是一种数据结构,也是在主节点内存中存放各任务节点信息和每一任务节点所负责任务的容器。
120.对于任务被添加至任务队列的关系,由上述可知,当待管理任务被添加到任务队列中时,主节点会通过状态机根据预设且与任务类型对应的状态转移流程进行管理,不同的状态转移流程虽然包含的步骤不同,但都包括多个步骤。于实际应用中,待管理任务不是在任务队列中完成所有的状态转移流程才被移出任务队列,一般的,在主节点通过状态机判断待管理任务的当前状态并执行对应的步骤之后,该任务就会被自动移出任务队列。所以为保证状态转移流程的完整进行,除去最后一步,其他的每个步骤都应在进行完毕时包括将该待管理任务重新添加回任务队列以进行下一状态的状态转移流程的步骤,但容易知道的是,任一状态转移流程的最后一步都不包括重新添加待管理任务至任务队列的步骤,且禁止因为非自身任务类型改变而将待管理任务重新添加回任务队列的操作,以避免逻辑冲突问题的出现,保证任务管理的可靠性。
121.另一方面,在上述实施例所提供的一种状态转移流程的实施方式中,对于每一待管理任务被分配新的任务节点、从原有任务节点中释放等改变待管理任务和任务节点之间的分配对应关系时(尤其是待删除型和重分配型的流程,同时涉及到了分配对应关系的读取、任务的释放以及分配对应关系的更新),需要更新主节点内存map和后端存储中的相应信息。上述实施例并未限制于这些操作之间的执行顺序,但出于在实际实施中的效率提升以及操作习惯的角度,本实施例提供一种可能的实施方案,上述的步骤s222具体为:
122.s222-1:删除主节点内存中对应于待管理任务的分配对应关系;
123.s222-2:通知对应的任务节点释放待管理任务;
124.s222-3:删除后端存储中对应于待管理任务的分配对应关系。
125.同理,步骤s232也涉及到内存、后端存储的更新和通知节点释放任务的过程,所以步骤s232也具体可以为:
126.s232-1:删除主节点内存中对应于待管理任务的分配对应关系;
127.s232-2:通知对应的任务节点释放待管理任务;
128.s232-3:删除后端存储中对应于待管理任务的分配对应关系。
129.由于步骤s221和步骤s231中涉及到了从主节点内存中读取待管理任务和任务节点之间的分配对应关系,所以紧接着进行删除主节点内存中对应于待管理任务的分配对应关系的操作更符合操作习惯,同时效率也更高,避免了反复的内存访问。然后,考虑到通知任务节点释放待管理任务一般而言需要等待该任务节点返回释放成功的信息之后才可以确定任务和节点的解绑,此时再删除保存在后端存储中的分配对应关系更加准确也更加可靠,避免因为任务节点原因所导致的主节点和后端存储之间对于待管理任务当前状态的感知上存在偏差。
130.不过,由上述实施例可知,重分配型的任务类型对应的应用场景是在任务节点出现了异常的情况下,这些应用场景可能会导致该任务节点无法正常释放任务,或者无响应(例如该任务节点掉电),此时主节点若一直等待任务节点的回复则会导致管理进程卡死,并且严重影响效率以及其他任务管理进程,所以本实施例还提供一种较为优选的实施方案,上述的重分配型所对应的状态转移流程还包括:
131.若在通知对应的任务节点释放待管理任务之后的预设时长内未得到任务节点的回复,则继续后续的为待管理任务分配新的任务节点的步骤。
132.预设时长可根据实际需要自由设置,本实施例不对此做出限制。通过预设时长的设置,一方面避免任务节点因为短暂的未响应导致管理流程的跳步,进而为后续的任务管理带来不稳定因素;另一方面也避免了任务节点短期不可恢复的异常而导致管理进程的卡死,减少对其他待管理任务的影响,提高了任务管理流程的及时性和可靠性。
133.另一方面,上述的转移状态流程中还包括对待管理任务分配新的任务节点的步骤,对于如何为待管理任务分配对应的任务节点,上述实施例并未做出限制,可以随机分配也可根据预设的逻辑进行分配,但本实施例提供一种更为具体的分配方式:
134.根据存储系统中各任务节点的负载情况,为待管理任务分配任务节点。
135.更具体的,主节点在获取待管理任务的任务信息时,会获知其完成任务目标所需要的资源;进一步的,主节点可以通过和其他节点的通信、监控等方法感知到各个任务节点的负载情况;从而为待管理任务分配合适的任务节点。
136.对于上述所分配的“合适”的任务节点,其标准一方面至少保证所分配的任务节点的负载能力大于或等于待管理任务的需求;另一方面,作为可选项,主节点在分配任务节点时可以根据满足上述要求的各个任务节点的负载情况进行分配,以保证存储系统中各个节点的负载均衡,从而提高存储系统的性能,提高用户的使用体验;又或者,当待管理任务之间还具有优先级之分时,主节点还可以根据优先级的不同为待管理任务分配相适应的任务节点。例如,当任务的优先级更高时,为其所分配的任务节点对应的负载能力越强,或组成该任务节点的硬件设备性能更好等。
137.本技术所提供的一种存储任务管理方法,通过定义任务类型并根据预先设置且与任务类型一一对应的状态转移流程实现对任务的管理;任务类型覆盖任务管理过程中的绝大部分情况,将任务管理过程中可能出现的各种应用场景汇总成待添加型、待删除型、重分配型和初始化型,满足实际任务管理需要,并简化管理流程的复杂度;进而,通过任务队列实现是否对任务进行管理的控制;当与任务类型的状态转移流程被完整实现后,该待管理任务除非任务类型发生改变,否则不允许被再次添加至任务队列,也就不会被执行管理操作,进一步避免在不同应用场景下所产生的管理逻辑问题,进一步提高任务管理流程的稳定性和可靠性。在另一种优选实施例中,上述每一任务类型所对应的状态转移流程由状态机实现,状态机可根据待管理任务当前任务状态执行对应于状态转移流程的具体管理操作,以保证任务管理效果,实施简单且具有较高的效率。
138.在上述实施例中,对于一种存储任务管理方法进行了详细描述,本技术还提供一种存储任务管理装置对应的实施例。需要说明的是,本技术从两个角度对装置部分的实施例进行描述,一种是基于功能模块的角度,另一种是基于硬件的角度。
139.基于功能模块的角度,如图3所示,本实施例提供一种存储任务管理装置,包括:
140.类型分配模块41,用于获取待管理任务,为其分配对应的任务类型,并添加至任务队列中;
141.第一管理模块42,用于对于任务队列中的待管理任务,根据预先定义的状态转移流程进行管理;其中,状态转移流程与任务类型一一对应;
142.第二管理模块43,用于当状态转移流程执行完毕时,将对应的待管理任务移出任
务队列,且除非该待管理任务的任务类型发生变化,否则禁止该待管理任务再次添加至任务队列中。
143.另一方面,上述的任务类型具体包括:待添加型、待删除型、重分配型和初始化型;
144.对应的,上述的类型分配模块具体用于:
145.获取待管理任务,若待管理任务为新创建的任务,分配为待添加型;
146.获取待管理任务,若待管理任务结束或被取消,分配为待删除型;
147.若存储系统中出现异常的任务节点,则获取任务节点中的所有任务作为待管理任务,并分配为重分配型;
148.若存储系统中出现异常的主节点,则获取异常的主节点管理的所有待管理任务,并分配为初始化型。
149.另一方面,上述第一管理模块中所依据任务类型执行的状态转移流程具体包括:
150.对应于待添加型,包括:为待管理任务分配对应的任务节点;将待管理任务和任务节点的分配对应关系存储于主节点的内存、并持久化到后端存储中;通知对应的任务节点添加待管理任务;
151.对应于待删除型,包括:确定待管理任务所对应的任务节点;通知对应的任务节点释放待管理任务,并删除主节点内存和后端存储中待管理任务的分配对应关系;
152.对应于重分配型,包括:确定待管理任务所对应的任务节点;通知对应的任务节点释放待管理任务,并删除主节点内存和后端存储中待管理任务的分配对应关系;为待管理任务分配新的任务节点;将新的分配对应关系存储于主节点的内存、并持久化到后端存储中;通知新分配的任务节点添加待管理任务;
153.对应于初始化型,包括:于后端存储中获取待管理任务的分配对应关系,并将其存储与新的主节点的内存中;通知对应的任务节点添加待管理任务。
154.另一方面,当第一管理模块依据待删除型或重分配型执行相应状态转移流程中的通知对应的任务节点释放待管理任务,并删除主节点内存和后端存储中待管理任务的分配对应关系的步骤时,具体用于:
155.删除主节点内存中对应于待管理任务的分配对应关系;
156.通知对应的任务节点释放待管理任务;
157.删除后端存储中对应于待管理任务的分配对应关系。
158.另一方面,当第一管理模块执行状态转移流程中的为所述待管理任务分配所述任务节点的步骤时,具体用于:
159.根据存储系统中各任务节点的负载情况,为待管理任务分配任务节点。
160.另一方面,当第一管理模块执行重分配型所对应的状态转移流程时,还用于:
161.若在通知对应的任务节点释放待管理任务之后的预设时长内未得到任务节点的回复,则继续后续的为待管理任务分配新的任务节点的步骤。
162.另一方面,上述的第一管理模块具体用于:通过状态机执行与任务类型对应的状态转移流程以对待管理任务进行管理。
163.由于装置部分的实施例与方法部分的实施例相互对应,因此装置部分的实施例请参见方法部分的实施例的描述,这里暂不赘述。
164.本实施例所提供的一种存储任务管理装置,通过定义任务类型并根据预先设置且
与任务类型一一对应的状态转移流程实现对任务的管理;任务类型覆盖任务管理过程中的绝大部分情况,由类型分配模块为各待管理任务进行任务类型的分配;进而,由第一管理模块通过任务队列实现是否对任务进行管理的控制,对于在任务队列中的待管理任务,由与任务类型一一对应的状态转移流程执行相应的管理流程;而当与任务类型的状态转移流程被完整实现后,则由第二管理模块控制除非该待管理任务的任务类型发生改变,否则不允许被再次添加至任务队列,也就不会被执行管理操作,进一步避免在不同应用场景下所产生的管理逻辑问题,进一步提高任务管理流程的稳定性和可靠性。
165.图4为本技术另一实施例提供的一种存储任务管理装置的结构图,如图4所示,一种存储任务管理装置包括:存储器50,用于存储计算机程序;
166.处理器51,用于执行计算机程序时实现如上述实施例一种存储任务管理方法的步骤。
167.本实施例提供的一种存储任务管理装置可以包括但不限于智能手机、平板电脑、笔记本电脑或台式电脑等。
168.其中,处理器51可以包括一个或多个处理核心,比如4核心处理器、8核心处理器等。处理器51可以采用数字信号处理器(digital signal processor,dsp)、现场可编程门阵列(field-programmable gate array,fpga)、可编程逻辑阵列(programmable logic array,pla)中的至少一种硬件形式来实现。处理器51也可以包括主处理器和协处理器,主处理器是用于对在唤醒状态下的数据进行处理的处理器,也称中央处理器(central processing unit,cpu);协处理器是用于对在待机状态下的数据进行处理的低功耗处理器。在一些实施例中,处理器51可以集成有图像处理器(graphics processing unit,gpu),gpu用于负责显示屏所需要显示的内容的渲染和绘制。一些实施例中,处理器51还可以包括人工智能(artificial intelligence,ai)处理器,该ai处理器用于处理有关机器学习的计算操作。
169.存储器50可以包括一个或多个计算机可读存储介质,该计算机可读存储介质可以是非暂态的。存储器50还可包括高速随机存取存储器,以及非易失性存储器,比如一个或多个磁盘存储设备、闪存存储设备。本实施例中,存储器50至少用于存储以下计算机程序501,其中,该计算机程序被处理器51加载并执行之后,能够实现前述任一实施例公开的一种存储任务管理方法的相关步骤。另外,存储器50所存储的资源还可以包括操作系统502和数据503等,存储方式可以是短暂存储或者永久存储。其中,操作系统502可以包括windows、unix、linux等。数据503可以包括但不限于一种存储任务管理方法等。
170.在一些实施例中,一种存储任务管理装置还可包括有显示屏52、输入输出接口53、通信接口54、电源55以及通信总线56。
171.本领域技术人员可以理解,图4中示出的结构并不构成对一种存储任务管理装置的限定,可以包括比图示更多或更少的组件。
172.本技术实施例提供的一种存储任务管理装置,包括存储器和处理器,处理器在执行存储器存储的程序时,能够实现如下方法:一种存储任务管理方法。
173.本实施例所提供的一种存储任务管理装置,通过处理器执行保存在存储器中的计算机程序,以通过定义任务类型并根据预先设置且与任务类型一一对应的状态转移流程实现对任务的管理;任务类型覆盖任务管理过程中的绝大部分情况,将任务管理过程中可能
出现的各种应用场景汇总成待添加型、待删除型、重分配型和初始化型,满足实际任务管理需要,并简化管理流程的复杂度;进而,通过任务队列实现是否对任务进行管理的控制;当与任务类型的状态转移流程被完整实现后,该待管理任务除非任务类型发生改变,否则不允许被再次添加至任务队列,也就不会被执行管理操作,进一步避免在不同应用场景下所产生的管理逻辑问题,进一步提高任务管理流程的稳定性和可靠性。
174.最后,本技术还提供一种计算机可读存储介质对应的实施例。计算机可读存储介质上存储有计算机程序,计算机程序被处理器执行时实现如上述方法实施例中记载的步骤。
175.可以理解的是,如果上述实施例中的方法以软件功能单元的形式实现并作为独立的产品销售或使用时,可以存储在一个计算机可读取存储介质中。基于这样的理解,本技术的技术方案本质上或者说对现有技术做出贡献的部分或者该技术方案的全部或部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质中,执行本技术各个实施例所述方法的全部或部分步骤。而前述的存储介质包括:u盘、移动硬盘、只读存储器(read-only memory,rom)、随机存取存储器(random access memory,ram)、磁碟或者光盘等各种可以存储程序代码的介质。
176.本实施例所提供的一种计算机可读取存储介质,当其中存储的计算机程序被执行时,可以通过定义任务类型并根据预先设置且与任务类型一一对应的状态转移流程实现对任务的管理;任务类型覆盖任务管理过程中的绝大部分情况,将任务管理过程中可能出现的各种应用场景汇总成待添加型、待删除型、重分配型和初始化型,满足实际任务管理需要,并简化管理流程的复杂度;进而,通过任务队列实现是否对任务进行管理的控制;当与任务类型的状态转移流程被完整实现后,该待管理任务除非任务类型发生改变,否则不允许被再次添加至任务队列,也就不会被执行管理操作,进一步避免在不同应用场景下所产生的管理逻辑问题,进一步提高任务管理流程的稳定性和可靠性
177.以上对本技术所提供的一种存储任务管理方法、装置及其介质进行了详细介绍。说明书中各个实施例采用递进的方式描述,每个实施例重点说明的都是与其他实施例的不同之处,各个实施例之间相同相似部分互相参见即可。对于实施例公开的装置而言,由于其与实施例公开的方法相对应,所以描述的比较简单,相关之处参见方法部分说明即可。应当指出,对于本技术领域的普通技术人员来说,在不脱离本技术原理的前提下,还可以对本技术进行若干改进和修饰,这些改进和修饰也落入本技术权利要求的保护范围内。
178.还需要说明的是,在本说明书中,诸如第一和第二等之类的关系术语仅仅用来将一个实体或者操作与另一个实体或操作区分开来,而不一定要求或者暗示这些实体或操作之间存在任何这种实际的关系或者顺序。而且,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、物品或者设备不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、物品或者设备所固有的要素。在没有更多限制的情况下,由语句“包括一个
……”
限定的要素,并不排除在包括所述要素的过程、方法、物品或者设备中还存在另外的相同要素。
技术特征:
1.一种存储任务管理方法,其特征在于,包括:获取待管理任务,为其分配对应的任务类型,并添加至任务队列中;对于所述任务队列中的所述待管理任务,根据预先定义的状态转移流程进行管理;其中,所述状态转移流程与所述任务类型一一对应;当所述状态转移流程执行完毕时,将对应的所述待管理任务移出所述任务队列,且除非该所述待管理任务的所述任务类型发生变化,否则禁止该所述待管理任务再次添加至所述任务队列中。2.根据权利要求1所述的存储任务管理方法,其特征在于,所述任务类型包括:待添加型、待删除型、重分配型和初始化型;对应的,所述获取待管理任务,为其分配对应的任务类型包括:获取所述待管理任务,若所述待管理任务为新创建的任务,分配为所述待添加型;获取所述待管理任务,若所述待管理任务结束或被取消,分配为所述待删除型;若存储系统中出现异常的任务节点,则获取所述任务节点中的所有任务作为待管理任务,并分配为所述重分配型;若所述存储系统中出现异常的主节点,则获取异常的所述主节点管理的所有所述待管理任务,并分配为所述初始化型。3.根据权利要求2所述的存储任务管理方法,其特征在于,所述状态转移流程包括:对应于所述待添加型,包括:为所述待管理任务分配对应的所述任务节点;将所述待管理任务和所述任务节点的分配对应关系存储于所述主节点的内存、并持久化到后端存储中;通知对应的所述任务节点添加所述待管理任务;对应于所述待删除型,包括:确定所述待管理任务所对应的所述任务节点;通知对应的所述任务节点释放所述待管理任务,并删除所述主节点内存和所述后端存储中所述待管理任务的所述分配对应关系;对应于所述重分配型,包括:确定所述待管理任务所对应的所述任务节点;通知对应的所述任务节点释放所述待管理任务,并删除所述主节点内存和所述后端存储中所述待管理任务的所述分配对应关系;为所述待管理任务分配新的所述任务节点;将新的所述分配对应关系存储于所述主节点的内存、并持久化到后端存储中;通知新分配的所述任务节点添加所述待管理任务;对应于所述初始化型,包括:于后端存储中获取所述待管理任务的所述分配对应关系,并将其存储与新的所述主节点的内存中;通知对应的所述任务节点添加所述待管理任务。4.根据权利要求3所述的存储任务管理方法,其特征在于,所述通知对应的所述任务节点释放所述待管理任务,并删除所述主节点内存和所述后端存储中所述待管理任务的所述分配对应关系包括:删除所述主节点内存中对应于所述待管理任务的所述分配对应关系;通知对应的所述任务节点释放所述待管理任务;删除所述后端存储中对应于所述待管理任务的所述分配对应关系。5.根据权利要求3所述的存储任务管理方法,其特征在于,为所述待管理任务分配所述任务节点包括:根据所述存储系统中各所述任务节点的负载情况,为所述待管理任务分配所述任务节
点。6.根据权利要求3所述的存储任务管理方法,其特征在于,对于所述重分配型对应的所述状态转移流程,还包括:若在通知对应的所述任务节点释放所述待管理任务之后的预设时长内未得到所述任务节点的回复,则继续后续的所述为所述待管理任务分配新的所述任务节点的步骤。7.根据权利要求1至6任意一项所述的存储任务管理方法,其特征在于,所述对于所述任务队列中的所述待管理任务,根据预先定义的状态转移流程进行管理包括:通过状态机执行与所述任务类型对应的所述状态转移流程以对所述待管理任务进行管理。8.一种存储任务管理装置,其特征在于,包括:类型分配模块,用于获取待管理任务,为其分配对应的任务类型,并添加至任务队列中;第一管理模块,用于对于所述任务队列中的所述待管理任务,根据预先定义的状态转移流程进行管理;其中,所述状态转移流程与所述任务类型一一对应;第二管理模块,用于当所述状态转移流程执行完毕时,将对应的所述待管理任务移出所述任务队列,且除非该所述待管理任务的所述任务类型发生变化,否则禁止该所述待管理任务再次添加至所述任务队列中。9.一种存储任务管理装置,其特征在于,包括:存储器,用于存储计算机程序;处理器,用于执行所述计算机程序时实现如权利要求1至7任意一项所述的存储任务管理方法的步骤。10.一种计算机可读存储介质,其特征在于,所述计算机可读存储介质上存储有计算机程序,所述计算机程序被处理器执行时实现如权利要求1至7任意一项所述的存储任务管理方法的步骤。
技术总结
本申请公开一种存储任务管理方法、装置及其介质,涉及分布式存储技术领域,用于对存储系统中的任务进行管理,针对目前的任务管理方法流程复杂且容易出现逻辑问题的不足,提供一种存储任务管理方法,通过预先设置的任务类型定义不同场景下的待管理任务,进而通过对应的状态转移流程实现相应的管理操作。对于一个待管理任务,当其被加入到任务队列中才会执行对应的管理操作,而当对该待管理任务的一整套状态转移流程被完成之后,除非此任务的任务类型改变,否则不会被再次添加至任务队列,也即保证任一待管理任务不会因为除外部事务导致任务类型改变之外的因素而被重复管理,从而最大程度上避免了任务管理过程中的逻辑冲突。程度上避免了任务管理过程中的逻辑冲突。程度上避免了任务管理过程中的逻辑冲突。
技术研发人员:郎占坡 白战豪
受保护的技术使用者:济南浪潮数据技术有限公司
技术研发日:2023.05.19
技术公布日:2023/8/9
版权声明
本文仅代表作者观点,不代表航空之家立场。
本文系作者授权航家号发表,未经原创作者书面授权,任何单位或个人不得引用、复制、转载、摘编、链接或以其他任何方式复制发表。任何单位或个人在获得书面授权使用航空之家内容时,须注明作者及来源 “航空之家”。如非法使用航空之家的部分或全部内容的,航空之家将依法追究其法律责任。(航空之家官方QQ:2926969996)
飞行汽车 https://www.autovtol.com/
