一种处理分布式系统中重叠节点事件的方法与装置与流程

文档序号:12176705阅读:369来源:国知局
一种处理分布式系统中重叠节点事件的方法与装置与流程

本发明涉及电子技术领域,尤其涉及一种处理分布式系统中重叠节点事件的方法与装置



背景技术:

分布式锁(Distributed Lock)是控制分布式系统之间同步访问共享资源的一种方式;分布式锁管理(Distributed Lock Manager,简称DLM)运行在分布式系统中各个节点上,控制各资源在节点上的分布,提供资源访问权限(即锁权限)的授予策略以及管理共享资源的访问权限。

因为分布式系统中有多个节点,因此可能会发生多个节点事件,并且节点事件相互重叠,现有处理重叠节点事件的方案为,分布式锁管理(Distributed Lock Manager,简称DLM)采用先进先出队列(FIFO)接收节点事件,然后根据节点事件发生的时间先后顺序从FIFO取出节点事件,逐一串行处理。例如,T1时刻,节点2故障,FIFO接收节点2故障事件,当前没有节点事件处理,于是启动事件处理线程,处理节点2故障事件;T2时刻,节点6上线,FIFO接收节点6上线事件,此时,还正在处理节点2故障事件,节点6上线事件处于排队状态;当节点2故障事件处理完毕后,发现FIFO非空,从FIFO中取出节点6上线事件进行处理。

现有技术的方案虽然保证了重叠节点事件的有序处理,当分布式节点系统发生较多的重叠节点事件时,串行处理所有的节点事件需要耗费较长的时间,导致DLM恢复正常工作的时间也较长,显著影响分布式系统的运行效率。



技术实现要素:

本发明实施例提供了一种处理分布式系统中重叠节点事件的方法与装置,当分布式系统中发生的重叠节点事件时,能够同时处理多个节点事件,从而节省了处理重叠节点事件的时间,使DLM能较快地恢复正常工作,减少了对分布式系统运行效率的影响。

重叠节点事件之间的关系有两种情况,一种情况是一个节点事件不影响另一个节点事件的处理,即不存在冲突;另一种情况是一个节点事件影响另一个节点事件的处理,即存在冲突。现有技术中处理重叠节点事件的方案不对上述情况进行区分,只是简单地将所有的节点事件串行处理,从而导致重叠节点事件的处理时间较长,影响分布式系统运行的效率。而本发明实施例提供的处理重叠节点事件的方法对重叠的节点事件分情况处理,不冲突的节点事件任务同时处理,冲突的节点事件才串行处理,从而节省了重叠节点事件的处理时间,减少了分布式系统运行效率的影响。

第一方法,提供了一种处理重叠节点事件的方法,该方法应用在分布式系统中,该方法包括:首先目标节点接收第一节点事件,生成第一节点事件任务;其次确定第一节点事件任务与该目标节点的分布式锁管理DLM中的运行队列中的节点事件任务不冲突,并且第一节点事件任务与该分布式锁管理DLM中的冲突队列中的节点事件任务也不冲突,再将第一节点事件任务放入到运行队列中,其中,上述运行队列用于存放正在执行的一个或多个节点事件任务,上述冲突队列用于存放等待执行的节点事件任务;然后执行所述运行队列中的所述第一节点事件任务。

结合第一方面,在第一方面的第一种可能的实现方式中,运行队列中存放有第二节点事件任务,该方法还包括:确定第一节点事件任务与第二节点事件任务冲突,并且第一节点事件任务阻塞第二节点事件任务执行,则停止执行第二节点事件任务;并将第二节点事件任务放入到冲突队列中。该实现方式实现了DLM停止执行先发生的节点事件任务,从而保证了当后发生的节点事件任务阻塞先发生的节点事件任务执行时,节点事件任务的有序执行。并且该实现方式采用了运行队列管理正在执行的节点事件任务,当需要改变某个正在执行的节点事件任务状态时,DLM可快速找到该节点事件任务,并对其进行相应处理,从而提高了DLM处理节点事件的效率。

结合第一方面的第一种可能的实现方式,在第一方面的第二种可能的实现方式中,上述方法还包括:当第一节点事件任务执行完毕时,将所述第二节点事件任务放入到运行队列;执行第二节点事件任务。该实现方式实现了当阻塞先发生的节点事件任务执行的后发生节点事件任务执行完毕时,DLM执行被阻塞的节点事件任务,从而使得先发生的节点事件得到快速处理。

结合第一方面,在第一方面的第三种可能的实现方式中,上述方法还包括:当第一节点事件任务执行完毕时,确定冲突队列中是否存在与第一事件任务冲突的第三节点事件任务;如果存在所述第三节点事件任务,则确定运行队列和冲突队列中是否存在与所述第三节点事件任务冲突的第四节点事件任务;如果不存在所述第四节点事件任务,将所述第三节点事件任务放入到运行队列;执行所述第三节点事件任务。该实现方式实现了DLM有序处理冲突的重叠节点事件任务。

结合第一方面,在第一方面的第四种可能的实现方式中,上述确定第一节点事件任务与该目标节点的分布式锁管理DLM中的运行队列中的节点事件任务不冲突,并且第一节点事件任务与该分布式锁管理DLM中的冲突队列中的节点事件任务也不冲突包括:判断所述第一节点事件任务与所述运行队列中的节点事件任务不存在执行顺序,并且所述第一节点事件任务与所述冲突队列中的节点事件任务也不存在执行顺序。在该实现方法中,重叠节点事件任务间不存在冲突,包括重叠节点事件任务之间不存在执行顺序,从而使得不存在执行顺序的重叠节点事件任务能够同时执行,节省了DLM处理重叠节点事件的所耗事件,提高了分布式系统的运行效率。

第二方面,提供了一种处理重叠节点事件的装置,该装置包括:接收单元,用于目标节点接收第一事件和生成第一事件任务;放入单元,确定第一节点事件任务与该目标节点的分布式锁管理DLM中的运行队列中的节点事件任务不冲突,并且第一节点事件任务与分布式锁管理DLM中的冲突队列中的节点事件任务也不冲突,该放入单元用于将第一节点事件任务放入到上述运行队列中,其中,上述运行队列用于存放正在执行的一个或多个节点事件任务,上述冲突队列用于存放等待执行的节点事件任务;执行单元,用于执行上述运行队列中的第一事件任务。

结合第二方面,在第二方面的第一种可能的实现方式中,运行队列中存放有第二节点事件任务,上述装置还包括:停止单元,确定第一节点事件任务与第二节点事件任务冲突,并且第一节点事件任务阻塞第二节点事件任务执行,该停止单元用于停止执行所述第二节点事件。该实现方式实现了DLM停止执行先发生的节点事件任务,从而保证了当后发生的节点事件任务阻塞先发生的节点事件任务执行时,节点事件任务的有序执行。并且该实现方式采用了运行队列管理正在执行的节点事件任务,当需要改变某个正在执行的节点事件任务状态时,DLM可快速找到该节点事件任务,并对其进行相应处理,从而提高了DLM处理节点事件的效率。

结合第二方面的第一种可能的实现方式,在第二方面的第二种可能的实现方式中,所述装置还包括:判断单元,用于判断第一节点事件任务与运行队列中的节点事件任务不存在执行顺序,并且第一节点事件任务与冲突队列中的节点事件任务也不存在执行顺序。在该实现方法中,判断单元能够判断重叠节点事件任务是否存在执行顺序,当重叠节点事件任务间不存在执行顺序时,则重叠节点事件间不存在冲突,从而保证了使得不存在执行顺序的重叠节点事件任务能够同时执行,节省了DLM处理重叠节点事件的所耗时间,提高了分布式系统的运行效率。

实施例提供的处理重叠节点事件的方法和装置采用运行队列和冲突队列两个队列来管理节点事件任务,不冲突的节点事件任务放入运行队列中执行,而无须等待处理,实现了多个节点事件同时处理,冲突的节点事件任务放入到冲突队列中,实现了冲突的节点事件有序处理,从而节省了处理重叠节点事件的时间,使DLM能较快地恢复正常工作,减少了对分布式系统运行效率的影响。

附图说明

图1为本发明实施例提供的处理重叠节点事件方法的应用场景图;

图2为本发明实施例中DLM管理分布式系统中共享资源的示意图;

图3为本发明实施例中分布式系统中节点事件的示意图;

图4为本发明实施例一提供的处理重叠节点事件方法的流程图;

图5为本发明实施例三提供的恢复任务和迁移任务冲突的示意图;

图6为本发明实施例四提供的恢复任务和迁移任务冲突的示意图;

图7为本发明实施例五提供的恢复任务和迁移任务冲突的示意图;

图8为本发明实施例六提供的迁移任务之间冲突的示意图;

图9为本发明实施例七提供的迁移任务之间冲突的示意图。

具体实施方式

为使本发明实施例的目的、技术方案和优点更加清楚,下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行描述,显然,所描述的实施例是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。

分布式系统由多个节点组成。例如,如果多台计算机组成一个分布式系统,那么每台计算机就是一个节点;如果多台服务器组成一个分布式系统,那么每台服务器就是一个节点;如果多个计算机、智能终端、服务器等具有相应数据处理能力和储存功能的设备组成一个分布式系统,那么其中的每个设备为一个节点。本发明实施例提供的处理分布式系统中重叠节点事件的方法和装置的应用场景如图1所示,假设分布式系统中有N个节点(node,简称N):节点1、节点2、……、节点N,每个节点上运行了一定数量的应用程序(application,简称App)。假设分布式系统有M个共享资源(resource,简称res):res1、res2、……、resM(这些资源可能是LUN,文件系统,或其他资源)。

DLM把各res分布到分布式系统的各个节点上,即每个节点都会管理一定数量的res,管理res的对象称为Mas(master,简称Mas),M个res对应M个Mas,Mas分布在各节点上;同时,每个res在每个节点上都有代理(proxy)。例如,res3由节点3管理,则其Mas也分布在节点3上面,但是res3在N个节点上都有自己的代理。

各节点的App都可以访问这些res,但必须向该res的Mas申请权限,权限申请成功后才能访问。例如,节点3上的App 3-4,需要访问节点1管理的res2,则申请访问权限的过程是:App 3-4向位于本节点3上的代理2发起权限申请,节点3上的代理2再向分布在节点1上的Mas 2发起权限申请,之后Mas2向节点3的代理2授权,最后代理2向App3-4授权。

DLM采用一致性哈希(hash)算法管理分布式系统中的res,具体为采用哈希算法,计算分布式系统中各个节点的通用唯一识别码(uuid)值,根据uuid值的大小,把各节点顺时针排布到哈希环上,每个节点管理哈希环上的一段区间。如图2所示,圆圈代表节点,小方块代表res。在本发明实施例中,分布式系统中有6个节点,uuid值升序排列依次为节点1、节点2、节点3、节点4、节点5、节点6。进一步约定,每个节点管理目标节点逆时针方向的一段区间,则节点1管理区间(N5,N1],节点2管理区间(N1,N2],以此类推。然后采用相同的hash算法,把res分布到哈希环上,res落在哪个区间,就由管理该区间的节点管理,例如,节点2管理(N1,N2]间的2个res。

为了保证res分布的均匀性,每个物理节点会对应一定数量的虚拟节点,如果每个物理节点虚拟出10个虚拟节点,则6个物理节点可以虚拟出60个虚拟节点分布到哈希环,从而使各物理节点管理的res数相当,实现各物理节点的负载均衡。

每个res会在其归属节点创建一个Mas,作为资源访问权限授予的决策者;并在分布式系统中每个在线节点创建一个代理,作为Mas在各节点上的代理。以res1为例进行说明,res1归属节点2,那么res1的Mas部署在节点2,节点1至节点6各节点都会部署res1的代理,各节点上的APP需要访问res1时,先向本节点上的代理1申请权限,所述代理1再向位于节点2上的res1的Mas申请权限,res1的Mas向所述代理1授予权限后,所述代理1持有res1的访问权限,然后再授权给所述各节点上的APP。

DLM处理的节点事件包括节点上线、节点故障等。节点上线会引发锁迁移任务,在分布式系统中,新的节点N上线时,DLM需要把归属于新节点N的res从其他节点迁移到新节点N上,即把该res的Mas从其他节点迁移到新节点N上。节点故障会引发锁恢复任务,在分布式系统中,当在线节点M发生故障时,DLM需要恢复原来归属于节点M的res的Mas。

在本发明实施例中,分布式系统中的节点事件如图3所示。分布式系统有N1~N5五个节点在线,现N6上线,根据新节点上线的处理规则,DLM需要把归属于N3的res3迁移到新节点N6上面,即把res3的Mas从节点N3迁移到新节点N6上。节点N1~N6正常工作,某时刻节点N2发生故障,则部署在N2上的res的Mas1和res2的Mas2丢失,此时,DLM根据其他节点(N1、N3、N4、N5和N6)上的代理信息把Mas1和Mas2恢复到节点N6上,即由节点N6管理res1和res2。

在本发明实施例中,分布式系统中的重叠节点事件如图3所示,分布式系统有N1~N5五个节点在线,在T1时刻,节点N2发生故障,DLM需要把res的Mas1和res2的Mas2从节点N2恢复到节点N3上;T2时刻,节点N2故障的节点事件任务还没有执行完毕,新的节点6上线,节点N2故障事件的事件任务和节点N6上线事件的事件任务重叠;根据新节点上线的处理规则,res1、res2和res3的Mas需要迁移到新节点6上,但此时,分布式系统中N2发生故障,res的Mas1和res2的Mas2在节点N3上面还没有恢复出来,所以节点N6上线事件需要等待节点N2事件处理完毕后才能处理,即节点N6上线事件的事件任务和节点N2故障事件的事件任务存在执行顺序,两事件任务冲突。

如果在T1时刻,节点N5发生故障,DLM将res8的Mas8从节点N5恢复到节点N1上;T2时刻,节点N5故障事件的事件任务还没有执行完毕,新的节点N6上线,节点N5故障事件的事件任务和节点N6上线事件的事件任务重叠;根据新节点上线的处理规则,res3的Mas需要从节点N3迁移到新节点6上;节点N5故障事件的不影响节点N6上线事件的事件任务执行,即节点N5故障事件的事件任务和节点N6上线事件的事件任务不存在执行顺序,两事件任务不冲突。

重叠节点事件,不止上述的一种场景。从实施例三的分析来看,重叠节点事件可能不那么频繁。但是由于引入了虚拟节点的概念,1个物理节点对应1组虚拟节点,同一个物理节点的各虚拟节点在哈希环上离散分布,那么这种重叠节点事件就会变得十分寻常。现有技术处理重叠节点事件的方案采用先进先出队列串行处理所有节点事件,导致DLM恢复正常工作的时间较长,显著影响分布式系统的运行效率。

本发明实施例处理分布式系统中发生的重叠节点事件的思路为,将重叠的节点事件分类,分为不冲突的节点事件和冲突的节点事件,并采用运行队列和冲突队列管理两类节点事件任务;不冲突的节点事件放入到运行队列中,立即处理;而冲突的节点事件放入到冲突队列中,等待处理;从而避免了串行处理所有的节点事件,可以同时处理多个节点事件,减少了DLM处理节点事件的时间,提高了分布式系统的运行效率。

图4为本发明实施例四提供的应用在分布式系统中,处理重叠节点事件方法的流程图,该方法的执行主体为分布式系统中的DLM,DLM运行在每个节点上。在本实施例中,当一个节点事件发生时,分布式系统中的每个节点都接收到该节点事件,并进行相应的处理,本实施例以其中一个节点如何处理分布式系统中重叠节点事件为例,对本实施例提供的处理分布式系统中重叠节点事件方法进行说明,并将该节点称为目标节点。

步骤401,目标节点接收第一节点事件,生成第一节点事件任务。

在本实施例中,DLM对1个节点事件的处理称为1个任务,节点上线事件和节点离线事件对应Mas迁移任务,节点故障事件对应Mas恢复任务。根据目标节点接收节点上线事件或者节点故障事件,运行在目标节点上的DLM生成迁移任务或恢复任务。

步骤402,确定所述第一节点事件任务与所述目标节点的分布式锁管理DLM中的运行队列中的节点事件任务不冲突,并且所述第一节点事件任务与所述分布式锁管理DLM中的冲突队列中的节点事件任务也不冲突,将所述第一节点事件任务放入到所述运行队列中,其中,所述运行队列用于存放正在执行的一个或多个节点事件任务,所述冲突队列用于存放等待执行的节点事件任务。

在本实施例中,DLM采用运行队列和冲突队列管理节点事件任务。运行队列里存放着正在执行的节点事件任务;冲突队列里存放着与运行队列中正在执行的节点事件任务冲突,或者与冲突队列中先生成的节点事件任务冲突的节点事件任务,冲突队列中的节点事件任务的位置按照所属节点事件发生的先后顺序排列。

如果运行队列和冲突队列中没有事件任务,DLM将第一节点事件任务放入到运行队列中;如果第一节点事件任务与运行队列中正在执行的节点事件任务不冲突,并且与冲突队列中的事件任务也不冲突,DLM将第一节点事件任务放入到运行队列中。

如果第一节点事件任务与运行队列中正在执行的节点事件任务冲突,或者与冲突队列中的事件任务冲突,DLM将第一节点事件任务放入到冲突队列中。

步骤404,执行所述运行队列中的所述第一节点事件任务。

DLM将第一节点事件放入到运行队列后,立即执行第一节点事件任务。

可选的,所述运行队列中存放有第二节点事件任务,在步骤401之后,上述方法还包括:

确定所述第一节点事件任务与所述第二节点事件任务冲突,并且所述第一节点事件任务阻塞所述第二节点事件任务执行,停止执行所述第二节点事件任务;将所述第二节点事件任务放入到所述冲突队列中。

具体为,新发生的第一节点事件,导致运行队列中的第二节点事件任务无法继续被执行,或者打乱了第二节点事件任务的执行,则DLM在运行队列中查找第二节点事件,并停止执行所述第二节点事件任务。第二节点事件停止执行后,恢复到执行前的状态,并被放入到冲突队列中等待再次执行。

该可选步骤实现了DLM停止执行先发生的节点事件任务,从而保证了当后发生的节点事件任务阻塞先发生的节点事件任务执行时,节点事件任务的有序执行。并且本发明实施例采用了运行队列管理正在执行的节点事件任务,当需要改变某个正在执行的节点事件任务状态时,DLM可快速找到该节点事件任务,并对其进行相应处理,从而提高了DLM处理节点事件的效率。

可选的,所述第二节点事件任务放入到运行队列之后,当所述第一节点事件任务执行完毕时,上述方法还包括:将所述第二节点事件任务放入到所述运行队列;执行所述第二节点事件任务。

具体为,在前述步骤中,所述第一节点事件阻塞了所述第二节点事件任务的执行。当所述第一节点事件任务执行完毕时,即阻塞第二节点事件任务执行的节点事件已消除,DLM将所述第二节点事件放入到运行队列中,并立即执行所述第二节点事件任务。

该可选步骤实现了当阻塞先发生的节点事件任务执行的后发生节点事件任务执行完毕时,DLM执行被阻塞的节点事件任务,从而使得先发生的节点事件得到快速处理。

可选的,在步骤404之后,上述方法还包括:

当所述第一节点事件任务执行完毕时,确定所述冲突队列中是否存在与所述第一事件任务冲突的第三节点事件任务;

具体为,所述第一节点事件任务执行完毕之前,可能会发生第三节点事件,根据所述第三节点事件生成的第三节点事件任务与所述第一节点事件任务冲突,被DLM放入到冲突队列;与所述第三节点事件冲突的所述第一节点事件任务执行完毕,DLM考虑执行所述第三节点事件任务。

如果存在所述第三节点事件任务,则确定所述运行队列和所述冲突队列中是否存在与所述第三节点事件任务冲突的第四节点事件任务;

具体为,虽然与所述第三节点事件冲突的所述第一节点事件已消除,DLM在执行所述第三节点事件前,仍需确定运行队列和冲突队列中是否还存在与第三节点事件冲突的第四节点事件任务。

如果不存在所述第四节点事件任务,将所述第三节点事件任务放入到所述运行队列;

执行所述第三节点事件任务。

该可选步骤实现了DLM有序处理冲突的重叠节点事件任务。

可选的,上述确定第一节点事件任务与该目标节点的分布式锁管理DLM中的运行队列中的节点事件任务不冲突,并且第一节点事件任务与该分布式锁管理DLM中的冲突队列中的节点事件任务也不冲突包括:判断所述第一节点事件任务与所述运行队列中的节点事件任务不存在执行顺序,并且所述第一节点事件任务与所述冲突队列中的节点事件任务也不存在执行顺序。

判断所述第一节点事件任务与运行队列中的节点事件任务不冲突,并且与冲突队列中的节点事件任务也不冲突,则需要判断所述第一节点事件任务的执行不以运行队列中的正在执行的节点事件任务执行完毕为前体,并且冲突队列中等待的节点事件任务不影响所述第一节点事件任务的执行。

在该可选步骤中,重叠节点事件任务间不存在冲突,包括重叠节点事件任务之间不存在执行顺序,从而使得不存在执行顺序的重叠节点事件任务能够同时执行,节省了DLM处理重叠节点事件的所耗事件,提高了分布式系统的运行效率。

实施例一提供的处理重叠节点事件的方法采用运行队列和冲突队列两个队列来管理节点事件任务,不冲突的节点事件任务放入运行队列中执行,而无须等待处理,实现了多个节点事件同时处理,冲突的节点事件任务放入到冲突队列中,实现了冲突的节点事件有序处理,从而节省了处理重叠节点事件的时间,使DLM能较快地恢复正常工作,减少了对分布式系统运行效率的影响。

另外,需要说明的是冲突队列中的节点事件任务总有机会执行,下面在本发明实施例二中分情况对此进行说明:

情况一:冲突队列中的节点事件任务A与运行队列中正在执行的节点事件任务B冲突,而不与冲突队列中的其他事件任务冲突,则当节点事件任务B执行完毕时,节点事件任务A可以被执行。

情况二:节点事件任务A与冲突队列中的节点事件任务C冲突,节点事件任务C在冲突队列中等待执行,说明节点事件任务C与队列或运行队列中存在节点事件任务D冲突,如此追根溯源,总能找到与冲突队列中节点事件任务冲突并正在运行的节点事件任务X,当节点事件任务X执行完毕后,与节点事件任务X冲突的节点事件任务可逐步获得执行机会。

在本发明实施例中,分布式系统中的节点事件包括节点上线、节点离线、节点故障等,其中,节点上线、节点离线生成的事件任务对应Mas迁移任务,简称迁移任务,节点故障生成的事件任务对应着Mas恢复任务。节点事件任务冲突包括恢复任务和迁移任务的冲突、迁移任务之间的冲突。

此外,虽然恢复任务之间的可能也会有冲突,但是此类冲突可以优化,以图3所示的节点为例,如果节点N1故障了,Mas需要从节点N1恢复到节点N2,在恢复的过程中节点N2又故障了,那么Mas需要从节点N2恢复到节点N3,原位于节点N1和节点N2的Mas同时恢复到N3即可。

本发明实施例三提供了一种恢复任务和迁移任务冲突的情况,如图5所示。某个节点正在作为Mas恢复的目的地,但又需要作为Mas的迁移源,就产生冲突,T1时刻发生节点N2故障事件,运行在节点N3的DLM接收节点N2故障事件,并生成将节点N2管理的res的Mas恢复到节点N3上的恢复任务,将该恢复任务放入到运行队列,并执行该恢复任务。在该恢复任务执行完毕前的T2时刻,发生节点N6上线事件,运行在节点N3的DLM接收该事件,生成将在节点N3上的原节点2管理的res的Mas以及节点N3管理的部分res的Mas迁移到节点N6上的迁移任务;但此时,节点N3上的恢复任务还正在被执行,即节点N3正在作为Mas恢复的目的地,又需要作为Mas的迁移源。节点N3的DLM在该恢复任务执行完毕时,才能执行该迁移任务,该迁移任务和该恢复任务冲突,将该迁移任务放入到冲突队列中。

本发明实施例四提供了另一种恢复任务和迁移任务冲突的情况,如图6所示。某个节点作为Mas迁移目的地,又需要作为Mas恢复目的地的,T1时刻发生节点N6上线事件,运行在节点N3的DLM接收该事件,生成将节点N3管理的部分res的Mas迁移到节点N6上的迁移任务。在该迁移任务执行完毕前的T2时刻,发生节点N2故障事件,运行在节点N3的DLM接收节点N2故障事件,生成在节点N6上恢复节点N2管理的res的Mas的恢复任务,即节点N6既要作为Mas迁移目的地,又需要作为Mas恢复目的地。节点N3的DLM在该迁移任务执行完毕时,才能执行该恢复任务,该恢复任务和该迁移任务冲突,将该恢复任务放入冲突队列。

本发明实施例五提供了又一种恢复任务和迁移任务冲突的情况,如图7所示。某个节点作为Mas迁移目的地,又需要作为Mas恢复目的地从而导致恢复任务和迁移任务之间冲突的另一可能情况是,T1时刻发生节点N6离线事件,运行在节点N3的DLM接收该事件,生成将节点N6管理的res的Mas迁移到节点N3上的迁移任务。在该迁移任务执行完毕前的T2时刻,发生节点N2故障事件,运行在节点N3的DLM接收节点N2故障事件,生成在节点N3上恢复节点N2管理的res的Mas的恢复任务,即节点N3既要作为Mas迁移目的地,又需要作为Mas恢复目的地。节点N3的DLM在该迁移任务执行完毕时,才能执行该恢复任务,该恢复任务和该迁移任务冲突,将该恢复任务放入冲突队列。

本发明实施例六提供了一种迁移任务之间冲突的情况,如图8所示。某个节点正在作为一个节点上Mas的迁移目的地,又需要作为Mas迁移到另一节点的迁移源,T1时刻发生节点N6上线事件,运行在节点N3的DLM接收该事件,生成将节点N3管理的部分res的Mas从节点N3迁移到节点N6上的迁移任务A,将迁移任务A放入运行队列,并执行迁移任务A。在迁移任务A执行完毕前的T2时刻,发生节点N7上线事件,节点N3接收该事件,生成将节点N6管理的部分res的Mas从节点N6迁移到节点N7的迁移任务B,即节点N6正作为节点N3上的Mas的迁移目的地,又需要作为Mas迁移到节点N7上的迁移源。节点N3的DLM在迁移任务A执行完毕时,才能执行迁移任务B,迁移任务A和迁移任务B冲突,将迁移任务B放入到冲突队列。

本发明实施例七提供了另一种迁移任务之间冲突的情况,如图9所示。某个节点正作为Mas迁移一个节点的迁移源,又需要作为Mas迁移另一节点的迁移源,T1时刻发生节点N7上线事件,运行在节点N3的DLM接收该事件,生成将节点N3管理的部分res的Mas从节点N3迁移到节点N7的迁移任务A,将迁移任务A放入运行队列,并执行迁移任务A。在迁移任务A执行完毕前的T2时刻,发生节点N6上线事件,节点N3接收该事件,生成将节点N3管理的部分res的Mas从节点N3迁移到节点N6的迁移任务B,即节点N3正作为将Mas迁移到节点N7的迁移源,又需要作为Mas迁移到节点N6的迁移源。节点N3的DLM在迁移任务A执行完毕时,才能执行迁移任务B,迁移任务A和迁移任务B冲突,将迁移任务B放入到冲突队列。

实施例3-7列举了几种重叠节点事件具有冲突的情况,但本发明实施例提供的处理重叠节点事件的方法的应用范围不局限上述几种情况。凡是在重叠的节点事件中存在节点事件任务的执行顺序,或者某一节点事件阻塞另一节点事件任务的执行,即可认为节点事件任务冲突,属于本发明实施例提供的处理重叠节点事件的方法的应用范围。

本发明实施例八提供了一种处理重叠节点事件的装置,该装置设置在节点中,本发明实施例中的节点包括服务器、计算机、智能终端等。该装置用于执行上述发明实施例提供的处理重叠节点事件的方法。

该装置包括通信接口、处理器等。其中,处理器用于实现目标节点从通信接口处接收第一事件和生成第一事件任务;并且用于确定所述第一节点事件任务与所述目标节点的分布式锁管理DLM中的运行队列中的节点事件任务不冲突,并且所述第一节点事件任务与所述分布式锁管理DLM中的冲突队列中的节点事件任务也不冲突,所述放入单元用于将所述第一节点事件任务放入到所述运行队列中,其中,所述运行队列用于存放正在执行的一个或多个节点事件任务,所述冲突队列用于存放等待执行的节点事件任务;以及用于执行运行队列中的第一事件任务。

当然,如果所述第一节点事件任务与所述目标节点的分布式锁管理DLM中的运行队列中的节点事件任务冲突,和/或,所述第一节点事件任务与所述分布式锁管理DLM中的冲突队列中的节点事件任务冲突,该处理器还用于将所述第一节点事件任务放入到所述冲突队列中。

可选的,所述运行队列中存放有第二节点事件任务,该处理器还用于确定所述第一节点事件任务与所述第二节点事件任务冲突,并且所述第一节点事件任务阻塞所述第二节点事件任务执行,该处理器停止执行所述第二节点事件。

可选的,该处理器还用于判断所述第一节点事件任务与所述运行队列中的节点事件任务不存在执行顺序,并且所述第一节点事件任务与所述冲突队列中的节点事件任务也不存在执行顺序。

由于该装置的有益效果可以参见上述方法的有益效果,重复之处不再赘述。

本发明实施例九提供了另一种处理重叠节点事件的装置,该装置用于执行上述发明实施例提供的处理重叠节点事件的方法。

该装置包括:接收单元,用于目标节点接收第一事件和生成第一事件任务;放入单元,确定所述第一节点事件任务与所述目标节点的分布式锁管理DLM中的运行队列中的节点事件任务不冲突,并且所述第一节点事件任务与所述分布式锁管理DLM中的冲突队列中的节点事件任务也不冲突,所述放入单元用于将所述第一节点事件任务放入到所述运行队列中,其中,所述运行队列用于存放正在执行的一个或多个节点事件任务,所述冲突队列用于存放等待执行的节点事件任务;执行单元,用于执行运行队列中的第一事件任务。

当然,如果所述第一节点事件任务与所述目标节点的分布式锁管理DLM中的运行队列中的节点事件任务冲突,和/或,所述第一节点事件任务与所述分布式锁管理DLM中的冲突队列中的节点事件任务冲突,所述放入单元还用于将所述第一节点事件任务放入到所述冲突队列中。

可选的,所述运行队列中存放有第二节点事件任务,该装置还包括:停止单元,确定所述第一节点事件任务与所述第二节点事件任务冲突,并且所述第一节点事件任务阻塞所述第二节点事件任务执行,所述停止单元用于停止执行所述第二节点事件。

可选的,该装置还包括:判断单元,用于判断所述第一节点事件任务与所述运行队列中的节点事件任务不存在执行顺序,并且所述第一节点事件任务与所述冲突队列中的节点事件任务也不存在执行顺序。

由于该装置的有益效果可以参见上述方法的有益效果,重复之处不再赘述。

专业人员应该还可以进一步意识到,结合本文中所公开的实施例描述的各示例的单元及算法步骤,能够以电子硬件、计算机软件或者二者的结合来实现,为了清楚地说明硬件和软件的可互换性,在上述说明中已经按照功能一般性地描述了各示例的组成及步骤。这些功能究竟以硬件还是软件方式来执行,取决于技术方案的特定应用和设计约束条件。专业技术人员可以对每个特定的应用来使用不同方法来实现所描述的功能,但是这种实现不应认为超出本发明的范围。

本领域普通技术人员可以理解实现上述实施例方法中的全部或部分步骤是可以通过程序来指令处理器完成,所述的程序可以存储于计算机可读存储介质中,所述存储介质是非短暂性(英文:non-transitory)介质,例如随机存取存储器,只读存储器,快闪存储器,硬盘,固态硬盘,磁带(英文:magnetic tape),软盘(英文:floppy disk),光盘(英文:optical disc)及其任意组合。

以上所述,仅为本发明较佳的具体实施方式,但本发明的保护范围并不局限于此,任何熟悉本技术领域的技术人员在本发明揭露的技术范围内,可轻易想到的变化或替换,都应涵盖在本发明的保护范围之内。因此,本发明的保护范围应该以权利要求的保护范围为准。

当前第1页1 2 3 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1