一种分布式系统多节点锁定方法与流程

文档序号:23151979发布日期:2020-12-04 13:47阅读:141来源:国知局
一种分布式系统多节点锁定方法与流程

本发明属于分布式系统技术领域,具体涉及一种分布式系统多节点锁定方法。



背景技术:

分布式系统使用过程中,一些操作需要对资源进行锁定,以确保不被其他操作干扰,从而影响运行结果。不同于单机系统中,每个操作可以系统时间判定自己是否更早提出资源锁定请求,从而决定该操作可以优先对资源进行锁定。分布式系统中,对资源的锁定操作是以锁定请求报文的形式在网络中传播,分布式节点之间没有标准时间可以参考,因此也不易判定哪个操作优先发送了资源锁定请求。分布式系统中一种通用的锁机制是由一个权威节点对所有资源的锁进行管理,操作只需要向该权威节点请求锁,而不需要向该操作涉及的每个分布式节点请求锁,避免了资源锁定请求到达每个节点时间不一致带来的死锁问题。然而这种集中管理的方式存在单点瓶颈,即使通过zookeeper之类的分布式锁机制在一定程度上解决了单点瓶颈问题,但是在该机制选主期间,没有权威节点,也就不能实现对资源的锁定,不仅增加了权威节点的维护开销,而且在权威节点切换过程中,不能使用分布式锁服务。



技术实现要素:

本发明所要解决的技术问题在于针对上述现有技术中的不足,提供一种分布式系统多节点锁定方法,其方法步骤简单,设计新颖合理,实现方便,不受权威节点的约束,不存在单点失效问题,不存在死锁问题,能够实现对多个节点进行锁定时多个节点锁状态的同步,是一种全分布式的多节点锁定解决方案,实用性强,便于推广使用。

为解决上述技术问题,本发明采用的技术方案是:一种分布式系统多节点锁定方法,该方法包括以下步骤:

步骤一、为分布式系统中所有待锁定节点分配身份信息;

步骤二、对所有待锁定节点发送预锁定请求;

步骤三、判断所有待锁定节点是否都预锁定成功,当有待锁定节点预锁定失败时,向各个预锁定成功的待锁定节点发送解除预锁定报文,预锁定失败,等待时间t1,返回执行步骤二;当所有待锁定节点都预锁定成功时,对所有待锁定节点发送锁定请求,预锁定成功,执行步骤四;

步骤四、判断所有待锁定节点是否都锁定成功,当有待锁定节点锁定失败时,向各个锁定成功的待锁定节点发送解除锁定报文,锁定失败,等待时间t2,返回执行步骤二;当所有待锁定节点都锁定成功时,锁定成功。

上述的一种分布式系统多节点锁定方法,步骤三中所述判断所有待锁定节点是否都预锁定成功时采用的方法为:

当发送预锁定请求后,在设定的预锁定报文返回时间段阈值t1内没有收到某个待锁定节点发送回的预锁定成功报文或预锁定失败报文时,或者当发送预锁定请求后,在设定的预锁定报文返回时间段阈值t1内收到某个待锁定节点发送回的预锁定失败报文时,判断为该待锁定节点锁定失败;

当发送预锁定请求后,在设定的预锁定报文返回时间段阈值t1内收到某个待锁定节点发送回的预锁定成功报文时,判断为该待锁定节点锁定成功。

上述的一种分布式系统多节点锁定方法,步骤四中所述判断所有待锁定节点是否都锁定成功时采用的方法为:

当发送锁定请求后,在设定的锁定报文返回时间段阈值t2内没有收到某个待锁定节点发送回的锁定成功报文或锁定失败报文时,或者当发送锁定请求后,在设定的锁定报文返回时间段阈值t2内收到某个待锁定节点发送回的锁定失败报文时,判断为该待锁定节点锁定失败;

当发送锁定请求后,在设定的锁定报文返回时间段阈值t2内收到某个待锁定节点发送回的锁定成功报文时,判断为该待锁定节点锁定成功。

上述的一种分布式系统多节点锁定方法,步骤三中所述当有待锁定节点预锁定失败时,向各个预锁定成功的待锁定节点发送解除预锁定报文时,还对解除预锁定是否成功进行判断,具体的判断方法为:

当发送解除预锁定报文后,在设定的解除预锁定成功报文返回时间段阈值t3内没有收到某个待锁定节点发送回的解除预锁定成功报文时,判断为该待锁定节点解除预锁定失败;

当发送解除预锁定报文后,在设定的解除预锁定成功报文返回时间段阈值t3没有收到某个待锁定节点发送回的解除预锁定成功报文时,判断为该待锁定节点解除预锁定成功;

当待锁定节点解除预锁定失败时,重新向该待锁定节点发送解除预锁定报文,直至该待锁定节点解除预锁定成功。

上述的一种分布式系统多节点锁定方法,步骤四中所述当有待锁定节点锁定失败时,向各个锁定成功的待锁定节点发送解除锁定报文时,还对解除锁定是否成功进行判断,具体的判断方法为:

当发送解除锁定报文后,在设定的解除锁定成功报文返回时间段阈值t4内没有收到某个待锁定节点发送回的解除锁定成功报文时,判断为该待锁定节点解除锁定失败;

当发送解除锁定报文后,在设定的解除锁定成功报文返回时间段阈值t4没有收到某个待锁定节点发送回的解除锁定成功报文时,判断为该待锁定节点解除锁定成功;

当待锁定节点解除锁定失败时,重新向该待锁定节点发送解除锁定报文,直至该待锁定节点解除锁定成功。

上述的一种分布式系统多节点锁定方法,步骤一中还为分布式系统中所有待锁定节点分配优先级,或使用已有特征表征优先级;所述待锁定节点的状态包括空闲、预锁定和锁定三种。

上述的一种分布式系统多节点锁定方法,步骤二中所述对所有待锁定节点发送预锁定请求时,预锁定请求中携带待锁定节点的身份信息和优先级信息;

步骤三中所述判断所有待锁定节点是否都预锁定成功时,所述待锁定节点发送回预锁定成功报文或预锁定失败报文,具体情况为:

当待锁定节点当前状态为空闲,切换状态为预锁定时,记录预锁定所有者身份和优先级,发送回预锁定成功报文;

当待锁定节点当前状态为预锁定时,比较预锁定所有者优先级与预锁定报文发送者优先级,当预锁定所有者优先级高于预锁定报文发送者优先级时,发送回预锁定失败报文,否则,当预锁定所有者优先级低于预锁定报文发送者优先级时,更新预锁定所有者身份和优先级,发送回预锁定成功报文;

当待锁定节点当前状态为锁定时,发送回预锁定失败报文。

上述的一种分布式系统多节点锁定方法,步骤三中所述对所有待锁定节点发送锁定请求时,锁定请求中携带待锁定节点的身份信息和优先级信息;

步骤四中所述判断所有待锁定节点是否都锁定成功时,所述待锁定节点发送回锁定成功报文或锁定失败报文,具体情况为:

当待锁定节点当前状态为空闲时,发送回锁定失败报文;

当待锁定节点当前状态为预锁定时,比较预锁定所有者身份与锁定报文发送者身份,当预锁定所有者身份与锁定报文发送者身份相同时,切换状态为锁定,记录锁定所有者身份和优先级,发送回锁定成功报文;否则,当预锁定所有者身份与锁定报文发送者身份不相同时,发送回锁定失败报文;

当待锁定节点当前状态为锁定时,发送回锁定失败报文。

上述的一种分布式系统多节点锁定方法,步骤三中所述向各个预锁定成功的待锁定节点发送解除预锁定报文时,解除预锁定报文中携带待锁定节点的身份信息和优先级信息;

步骤三中所述当有待锁定节点预锁定失败时,向各个预锁定成功的待锁定节点发送解除预锁定报文时,还对解除预锁定是否成功进行判断,所述待锁定节点发送回解除预锁定成功报文或解除预锁定失败报文,具体情况为:

当待锁定节点当前状态为空闲时,发送回解预锁定成功报文;

当待锁定节点当前状态为预锁定时,比较预锁定所有者身份与解除预锁定报文发送者身份,当预锁定所有者身份与解除预锁定报文发送者身份相同时,切换状态为空闲,发送回解除预锁定成功报文;否则,当预锁定所有者身份与解除预锁定报文发送者身份不相同时,发送回解除预锁定失败报文;

当待锁定节点当前状态为锁定时,发送回解除预锁定失败报文;

步骤四中所述向各个锁定成功的待锁定节点发送解除锁定报文时,解除锁定报文中携带待锁定节点的身份信息和优先级信息;

步骤四中所述当有待锁定节点锁定失败时,向各个锁定成功的待锁定节点发送解除锁定报文时,还对解除锁定是否成功进行判断,所述待锁定节点发送回解除锁定成功报文或解除锁定失败报文,具体情况为:

当待锁定节点当前状态为空闲时,发送回解锁定成功报文;

当待锁定节点当前状态为预锁定时,发送回解锁定成功报文;

当待锁定节点当前状态为锁定时,比较锁定所有者身份与解除锁定报文发送者身份,当锁定所有者身份与解除锁定报文发送者身份相同时,切换状态为空闲,发送回解除锁定成功报文;否则,当锁定所有者身份与解除锁定报文发送者身份不相同时,发送回解除锁定失败报文。

上述的一种分布式系统多节点锁定方法,步骤二至四执行的过程中,当待锁定节点处于预锁定状态时,当超过预锁定状态时间阈值t5,没有切换状态,也没有变更预锁定所有者身份,也没有变更预锁定所有者优先级时,待锁定节点切换为空闲状态,清除保存的预锁定所有者身份信息和优先级信息;

步骤二至四执行的过程中,当待锁定节点处于锁定状态时,当超过锁定状态时间阈值t6,没有切换为空闲状态时,待锁定节点切换为空闲状态,清除保存的预锁定所有者身份信息和优先级信息。

本发明与现有技术相比具有以下优点:

1、本发明通过预锁定、锁定两个步骤实现对多个资源锁状态的同步,方法步骤简单,设计新颖合理,实现方便。

2、本发明的分布式系统多节点锁定方法不受权威节点的约束,不存在单点失效问题,不存在死锁问题,能够实现对多个节点进行锁定时多个节点锁状态的同步,是一种全分布式的多节点锁定解决方案。

3、本发明能够很好地应用于分布式系统中,实用性强,便于推广使用。

下面通过附图和实施例,对本发明的技术方案做进一步的详细描述。

附图说明

图1为本发明的方法流程框图。

图2为本发明待锁定节点的状态转换图。

具体实施方式

如图1所示,本发明的分布式系统多节点锁定方法,包括以下步骤:

步骤一、为分布式系统中所有待锁定节点分配身份信息;通过分配身份信息,能够方便地区别每个节点,方便后续步骤中识别出各个预锁定成功节点、预锁定失败节点、锁定成功节点和锁定失败节点;

步骤二、对所有待锁定节点发送预锁定请求;

步骤三、判断所有待锁定节点是否都预锁定成功,当有待锁定节点预锁定失败时,向各个预锁定成功的待锁定节点发送解除预锁定报文,预锁定失败,等待时间t1,返回执行步骤二;当所有待锁定节点都预锁定成功时,对所有待锁定节点发送锁定请求,预锁定成功,执行步骤四;

步骤四、判断所有待锁定节点是否都锁定成功,当有待锁定节点锁定失败时,向各个锁定成功的待锁定节点发送解除锁定报文,锁定失败,等待时间t2,返回执行步骤二;当所有待锁定节点都锁定成功时,锁定成功。

具体实施时,所述时间t1和时间t2的取值均为0.5s~3s;

本实施例中,步骤三中所述判断所有待锁定节点是否都预锁定成功时采用的方法为:

当发送预锁定请求后,在设定的预锁定报文返回时间段阈值t1内没有收到某个待锁定节点发送回的预锁定成功报文或预锁定失败报文时,或者当发送预锁定请求后,在设定的预锁定报文返回时间段阈值t1内收到某个待锁定节点发送回的预锁定失败报文时,判断为该待锁定节点锁定失败;

当发送预锁定请求后,在设定的预锁定报文返回时间段阈值t1内收到某个待锁定节点发送回的预锁定成功报文时,判断为该待锁定节点锁定成功。

本实施例中,步骤四中所述判断所有待锁定节点是否都锁定成功时采用的方法为:

当发送锁定请求后,在设定的锁定报文返回时间段阈值t2内没有收到某个待锁定节点发送回的锁定成功报文或锁定失败报文时,或者当发送锁定请求后,在设定的锁定报文返回时间段阈值t2内收到某个待锁定节点发送回的锁定失败报文时,判断为该待锁定节点锁定失败;

当发送锁定请求后,在设定的锁定报文返回时间段阈值t2内收到某个待锁定节点发送回的锁定成功报文时,判断为该待锁定节点锁定成功。

本实施例中,步骤三中所述当有待锁定节点预锁定失败时,向各个预锁定成功的待锁定节点发送解除预锁定报文时,还对解除预锁定是否成功进行判断,具体的判断方法为:

当发送解除预锁定报文后,在设定的解除预锁定成功报文返回时间段阈值t3内没有收到某个待锁定节点发送回的解除预锁定成功报文时,判断为该待锁定节点解除预锁定失败;

当发送解除预锁定报文后,在设定的解除预锁定成功报文返回时间段阈值t3没有收到某个待锁定节点发送回的解除预锁定成功报文时,判断为该待锁定节点解除预锁定成功;

当待锁定节点解除预锁定失败时,重新向该待锁定节点发送解除预锁定报文,直至该待锁定节点解除预锁定成功。

本实施例中,步骤四中所述当有待锁定节点锁定失败时,向各个锁定成功的待锁定节点发送解除锁定报文时,还对解除锁定是否成功进行判断,具体的判断方法为:

当发送解除锁定报文后,在设定的解除锁定成功报文返回时间段阈值t4内没有收到某个待锁定节点发送回的解除锁定成功报文时,判断为该待锁定节点解除锁定失败;

当发送解除锁定报文后,在设定的解除锁定成功报文返回时间段阈值t4没有收到某个待锁定节点发送回的解除锁定成功报文时,判断为该待锁定节点解除锁定成功;

当待锁定节点解除锁定失败时,重新向该待锁定节点发送解除锁定报文,直至该待锁定节点解除锁定成功。

本实施例中,步骤一中还为分布式系统中所有待锁定节点分配优先级,或使用已有特征表征优先级;所述待锁定节点的状态包括空闲、预锁定和锁定三种。

本实施例中,步骤二中所述对所有待锁定节点发送预锁定请求时,预锁定请求中携带待锁定节点的身份信息和优先级信息;

步骤三中所述判断所有待锁定节点是否都预锁定成功时,所述待锁定节点发送回预锁定成功报文或预锁定失败报文,具体情况为:

当待锁定节点当前状态为空闲,切换状态为预锁定时,记录预锁定所有者身份和优先级,发送回预锁定成功报文;

当待锁定节点当前状态为预锁定时,比较预锁定所有者优先级与预锁定报文发送者优先级,当预锁定所有者优先级高于预锁定报文发送者优先级时,发送回预锁定失败报文,否则,当预锁定所有者优先级低于预锁定报文发送者优先级时,更新预锁定所有者身份和优先级,发送回预锁定成功报文;

当待锁定节点当前状态为锁定时,发送回预锁定失败报文。

本实施例中,步骤三中所述对所有待锁定节点发送锁定请求时,锁定请求中携带待锁定节点的身份信息和优先级信息;

步骤四中所述判断所有待锁定节点是否都锁定成功时,所述待锁定节点发送回锁定成功报文或锁定失败报文,具体情况为:

当待锁定节点当前状态为空闲时,发送回锁定失败报文;

当待锁定节点当前状态为预锁定时,比较预锁定所有者身份与锁定报文发送者身份,当预锁定所有者身份与锁定报文发送者身份相同时,切换状态为锁定,记录锁定所有者身份和优先级,发送回锁定成功报文;否则,当预锁定所有者身份与锁定报文发送者身份不相同时,发送回锁定失败报文;

当待锁定节点当前状态为锁定时,发送回锁定失败报文。

本实施例中,步骤三中所述向各个预锁定成功的待锁定节点发送解除预锁定报文时,解除预锁定报文中携带待锁定节点的身份信息和优先级信息;

步骤三中所述当有待锁定节点预锁定失败时,向各个预锁定成功的待锁定节点发送解除预锁定报文时,还对解除预锁定是否成功进行判断,所述待锁定节点发送回解除预锁定成功报文或解除预锁定失败报文,具体情况为:

当待锁定节点当前状态为空闲时,发送回解预锁定成功报文;

当待锁定节点当前状态为预锁定时,比较预锁定所有者身份与解除预锁定报文发送者身份,当预锁定所有者身份与解除预锁定报文发送者身份相同时,切换状态为空闲,发送回解除预锁定成功报文;否则,当预锁定所有者身份与解除预锁定报文发送者身份不相同时,发送回解除预锁定失败报文;

当待锁定节点当前状态为锁定时,发送回解除预锁定失败报文;

步骤四中所述向各个锁定成功的待锁定节点发送解除锁定报文时,解除锁定报文中携带待锁定节点的身份信息和优先级信息;

步骤四中所述当有待锁定节点锁定失败时,向各个锁定成功的待锁定节点发送解除锁定报文时,还对解除锁定是否成功进行判断,所述待锁定节点发送回解除锁定成功报文或解除锁定失败报文,具体情况为:

当待锁定节点当前状态为空闲时,发送回解锁定成功报文;

当待锁定节点当前状态为预锁定时,发送回解锁定成功报文;

当待锁定节点当前状态为锁定时,比较锁定所有者身份与解除锁定报文发送者身份,当锁定所有者身份与解除锁定报文发送者身份相同时,切换状态为空闲,发送回解除锁定成功报文;否则,当锁定所有者身份与解除锁定报文发送者身份不相同时,发送回解除锁定失败报文。

本实施例中,步骤二至四执行的过程中,当待锁定节点处于预锁定状态时,当超过预锁定状态时间阈值t5,没有切换状态,也没有变更预锁定所有者身份,也没有变更预锁定所有者优先级时,待锁定节点切换为空闲状态,清除保存的预锁定所有者身份信息和优先级信息;

步骤二至四执行的过程中,当待锁定节点处于锁定状态时,当超过锁定状态时间阈值t6,没有切换为空闲状态时,待锁定节点切换为空闲状态,清除保存的预锁定所有者身份信息和优先级信息。

具体实施时,所述t1、t2、t3、t4、t5和t6的取值均为0.5s~2s;

具体地,将以上各个待锁定节点的状态转换图表示为图2所示,将以上各个待锁定节点的状态转换过程总结为:

a、待锁定节点处于空闲状态时:

a1)收到预锁定请求后,则切换状态为预锁定,记录预锁定所有者身份和优先级信息,返回预锁定成功;

a2)收到锁定请求后,返回锁定失败;

a3)收到解除预锁定请求后,返回解除预锁定成功;

a4)收到解除锁定请求后,返回解除锁定成功;

处于空闲状态的待锁定节点可以被任意节点预锁定;

b、待锁定节点处于预锁定状态时,

b1)收到预锁定请求后,比较预锁定所有者优先级与预锁定报文发送者优先级,当预锁定所有者优先级高于预锁定报文发送者优先级时,返回预锁定失败,否则,更新预锁定所有者身份和优先级,返回预锁定成功;

b2)收到锁定请求后,比较预锁定所有者身份与预定报文发送者身份,当预锁定所有者和预锁定报文发送者身份相同时,切换状态为锁定,记录锁定所有者身份和优先级,返回锁定成功,否则,返回锁定失败;

b3)收到解除预锁定请求后,比较预锁定所有者身份与解除预定报文发送者身份,当预锁定所有者和解除预锁定报文发送者身份相同时,切换状态为空闲,返回解除预锁定成功,否则返回解除预锁定失败;

b4)收到解除锁定请求后,返回解除锁定成功;

处于预锁定状态的待锁定节点可以被优先级更高的节点重新预锁定,可以被持有预锁定锁的节点锁定和解除预锁定;

c、待锁定节点处于锁定状态时,

c1)收到预锁定请求后,返回预锁定失败;

c2)收到锁定请求后,返回锁定失败;

c3)收到解除预锁定请求后,返回解除预锁定失败;

c4)收到解除锁定请求后,比较锁定所有者身份与解除锁定报文发送者身份,当锁定所有者和解除锁定报文发送者身份相同时,切换状态为空闲,返回解除锁定成功,否则,返回解除锁定失败;

处于锁定状态的待锁定节点可以被持有锁定锁的节点解除锁定。

本领域内的技术人员应明白,本申请的实施例可提供为方法、系统、或计算机程序产品。因此,本申请可采用完全硬件实施例、完全软件实施例、或结合软件和硬件方面的实施例的形式。而且,本申请可采用在一个或多个其中包含有计算机可用程序代码的计算机可用存储介质(包括但不限于磁盘存储器、cd-rom、光学存储器等)上实施的计算机程序产品的形式。

本申请是参照根据本申请实施例的方法、设备(系统)、和计算机程序产品的流程图和/或方框图来描述的。应理解可由计算机程序指令实现流程图和/或方框图中的每一流程和/或方框、以及流程图和/或方框图中的流程和/或方框的结合。可提供这些计算机程序指令到通用计算机、专用计算机、嵌入式处理机或其他可编程数据处理设备的处理器以产生一个机器,使得通过计算机或其他可编程数据处理设备的处理器执行的指令产生用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的装置。

这些计算机程序指令也可存储在能引导计算机或其他可编程数据处理设备以特定方式工作的计算机可读存储器中,使得存储在该计算机可读存储器中的指令产生包括指令装置的制造品,该指令装置实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能。

这些计算机程序指令也可装载到计算机或其他可编程数据处理设备上,使得在计算机或其他可编程设备上执行一系列操作步骤以产生计算机实现的处理,从而在计算机或其他可编程设备上执行的指令提供用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的步骤。

前述对本发明的具体示例性实施方案的描述是为了说明和例证的目的。这些描述并非想将本发明限定为所公开的精确形式,并且很显然,根据上述教导,可以进行很多改变和变化。对示例性实施例进行选择和描述的目的在于解释本发明的特定原理及其实际应用,从而使得本领域的技术人员能够实现并利用本发明的各种不同的示例性实施方案以及各种不同的选择和改变。本发明的范围意在由权利要求书及其等同形式所限定。

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