System.ArgumentOutOfRangeException: 索引和长度必须引用该字符串内的位置。 参数名: length 在 System.String.Substring(Int32 startIndex, Int32 length) 在 zhuanliShow.Bind()
【技术实现步骤摘要】
本专利技术涉及回滚机制,具体涉及一种基于有限状态机的回滚方法、装置、设备及存储介质。
技术介绍
1、当创建pvc(persistentvolume claim)时,k8s(kubernetes)首先会创建出api对象pvc,然后调用csi(container storage interface,容器存储接口)控制节点组件创建后存储,创建后端存储一般会调用openapi接口,即http请求与后端交互。当后端存储明确返回创建成功时,csi会创建pv(persistent volume,持久卷)与pvc绑定。当后端存储明确返回创建失败时,csi不会创建pv。此时如果删除pvc,则k8s允许这个pvc被删除。这种情况下,如果创建失败的原因是网络超时,即后端创建成功,但是因为网络延迟等原因导致csi没有收到正确的结果,pvc删除就会导致后端存储残留。因此,如何删除残留的后端存储资源成为一个亟待解决的问题。
技术实现思路
1、有鉴于此,本专利技术提供了一种基于有限状态机的回滚方法、装置、设备及存储介质,以解决如何删除残留的后端资源的问题。
2、第一方面,本专利技术提供了一种基于有限状态机的回滚方法,该方法包括:
3、获取队列中的rbjob,并判断rbjob的状态是否为cancel状态;
4、若rbjob为非cancel状态,则基于有限状态机依次获取rbjob的状态,进行回滚任务抽象,rbjob的状态包括任务新建状态、检查查询状态、确认状态、删除状态、结束状态
5、采用rbdict数据结构缓存rbjob,并遍历所有的rbjob,直至interval值大于或等于interval初始值为止。
6、本专利技术基于有限状态机机制设计回滚机制,设计出回滚任务的状态,以制定每个状态下的运行流程,简化了回滚任务的复杂度,引入运行间隔interval值,以防止误删,可适用于所有主流的k8s容器编排系统以及网络请求造成的资源残留回滚场景,完善了k8s创建pvc时因网络问题造成后端资源残留的问题,防止网络环境异常造成的大量资源残留。
7、在一种可选的实施方式中,依次获取rbjob的状态,包括:
8、当rbjob的状态为任务新建状态时,下发查询请求进入检查查询状态;
9、若检查查询的结果满足回滚条件,则进入确认状态;
10、执行删除存储资源,并在下发删除请求之后进入删除状态;
11、存储资源删除正在执行,执行成功后进入结束状态。
12、本专利技术通过基于有限状态机机制设计出回滚任务的状态,以便于制定每个状态下的运行流程,极大简化了回滚任务的复杂度。
13、在一种可选的实施方式中,该方法还包括:
14、当收到检查rbjob的异步请求结果时,判断请求结果是否成功;
15、若检查请求结果未成功,则判断创建请求是否发生超时错误;
16、若创建请求发生超时错误,则将rbjob加入缓存中。
17、本专利技术通过考虑到回滚流程的流畅性,设计回滚请求的异步处理机制,避免因网络原因超时阻塞,使用异步请求设计对应的请求应答处理机制。
18、在一种可选的实施方式中,在若检查请求结果未成功,则判断创建请求是否发生超时错误之后,该方法还包括:
19、若创建请求未发生超时错误,则删除rbjob。
20、本专利技术考虑到回滚任务的超时情况,删除rbjob,保证了回滚任务的稳定性。
21、在一种可选的实施方式中,删除rbjob,包括:
22、根据key获取对应的rbjob,并对rbjob加锁;
23、设置rbjob的cancel状态为true;
24、解锁rbjob;
25、若rbjob为删除状态,则阻塞直到删除操作收到结果为止。
26、本专利技术通过在删除回滚任务时,先对rbjob加锁,以避免任务删除时造成的影响,将rbjob的cancel状态设置为true,而不是直接删除,等回滚机制运行到该任务时进行删除,完善了rbjob的删除机制。
27、在一种可选的实施方式中,该方法还包括:
28、设置rbjob的interval初始值;
29、每执行一次任务新建,interval值减一;
30、若interval值小于初始值,则进行回滚。
31、本专利技术通过设置rbjob的interval初始值,以根据interval的值执行回滚流程,从而避免在重试间隔内执行回滚的情况。
32、第二方面,本专利技术提供了一种基于有限状态机的回滚装置,该装置包括:
33、判断模块,用于获取队列中的rbjob,并判断rbjob的状态是否为cancel状态;
34、获取模块,用于若rbjob为非cancel状态,则基于有限状态机依次获取rbjob的状态,进行回滚任务抽象,rbjob的状态包括任务新建状态、检查查询状态、确认状态、删除状态、结束状态;
35、缓存模块,用于采用rbdict数据结构缓存rbjob,并遍历所有的rbjob,直至interval值大于或等于interval初始值为止。
36、第三方面,本专利技术提供了一种计算机设备,包括:存储器和处理器,存储器和处理器之间互相通信连接,存储器中存储有计算机指令,处理器通过执行计算机指令,从而执行上述第一方面或其对应的任一实施方式的基于有限状态机的回滚方法。
37、第四方面,本专利技术提供了一种计算机可读存储介质,该计算机可读存储介质上存储有计算机指令,计算机指令用于使计算机执行上述第一方面或其对应的任一实施方式的基于有限状态机的回滚方法。
38、第五方面,本专利技术提供了一种计算机程序产品,包括计算机指令,计算机指令用于使计算机执行上述第一方面或其对应的任一实施方式的基于有限状态机的回滚方法。
本文档来自技高网...【技术保护点】
1.一种基于有限状态机的回滚方法,其特征在于,所述方法包括:
2.根据权利要求1所述的方法,其特征在于,所述依次获取RBJob的状态,包括:
3.根据权利要求1所述的方法,其特征在于,所述方法还包括:
4.根据权利要求3所述的方法,其特征在于,在若检查请求结果未成功,则判断创建请求是否发生超时错误之后,所述方法还包括:
5.根据权利要求4所述的方法,其特征在于,所述删除RBJob,包括:
6.根据权利要求1所述的方法,其特征在于,所述方法还包括:
7.一种基于有限状态机的回滚装置,其特征在于,所述装置包括:
8.一种计算机设备,其特征在于,包括:
9.一种计算机可读存储介质,其特征在于,所述计算机可读存储介质上存储有计算机指令,所述计算机指令用于使计算机执行权利要求1至6中任一项所述的基于有限状态机的回滚方法。
10.一种计算机程序产品,其特征在于,包括计算机指令,所述计算机指令用于使计算机执行权利要求1至6中任一项所述的基于有限状态机的回滚方法。
【技术特征摘要】
1.一种基于有限状态机的回滚方法,其特征在于,所述方法包括:
2.根据权利要求1所述的方法,其特征在于,所述依次获取rbjob的状态,包括:
3.根据权利要求1所述的方法,其特征在于,所述方法还包括:
4.根据权利要求3所述的方法,其特征在于,在若检查请求结果未成功,则判断创建请求是否发生超时错误之后,所述方法还包括:
5.根据权利要求4所述的方法,其特征在于,所述删除rbjob,包括:
6.根据权利要求1所述的方法,其...
还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。