CN112905322B - 资源加锁的方法、计算设备及计算机存储介质 - Google Patents
资源加锁的方法、计算设备及计算机存储介质 Download PDFInfo
- Publication number
- CN112905322B CN112905322B CN202110176524.6A CN202110176524A CN112905322B CN 112905322 B CN112905322 B CN 112905322B CN 202110176524 A CN202110176524 A CN 202110176524A CN 112905322 B CN112905322 B CN 112905322B
- Authority
- CN
- China
- Prior art keywords
- resource
- service system
- command
- task
- coordination service
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Active
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/46—Multiprogramming arrangements
- G06F9/48—Program initiating; Program switching, e.g. by interrupt
- G06F9/4806—Task transfer initiation or dispatching
- G06F9/4843—Task transfer initiation or dispatching by program, e.g. task dispatcher, supervisor, operating system
- G06F9/4881—Scheduling strategies for dispatcher, e.g. round robin, multi-level priority queues
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F8/00—Arrangements for software engineering
- G06F8/60—Software deployment
- G06F8/65—Updates
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F8/00—Arrangements for software engineering
- G06F8/70—Software maintenance or management
- G06F8/71—Version control; Configuration management
Landscapes
- Engineering & Computer Science (AREA)
- Software Systems (AREA)
- Theoretical Computer Science (AREA)
- General Engineering & Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- Computer Security & Cryptography (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
本发明公开了一种资源加锁的方法、计算设备及计算机存储介质,该方法包括:针对任一任务,确定该任务待访问的资源信息;根据待访问的资源信息获取资源对应的路径;询问协调服务系统中路径下的子路径数量是否小于访问限制阈值,若是,记录资源当前的版本信息,生成用于在协调服务系统中创建资源和任务对应的子路径的创建命令和版本更新命令,将创建命令和版本更新命令提交给协调服务系统,以供协调服务系统根据版本是否冲突的判断结果确定是否执行创建命令和版本更新命令;若协调服务系统成功执行创建命令和版本更新命令,则任务对资源加锁成功。通过上述方式,可使任意数量的任务对资源进行加锁,提高对资源加锁的灵活性。
Description
技术领域
本发明涉及互联网技术领域,具体涉及一种资源加锁的方法、计算设备及计算机存储介质。
背景技术
随着互联网时代的到来,大量的事务依赖于计算机来解决,包括信息处理、数据运算等等。同时,这些处理过程依赖各种软硬件资源。面对日愈增长的资源需求,确保资源的有序访问则显得尤为重要。现有技术中,针对一个资源,通过同一时刻仅允许一个任务访问来实现访问的有序性。
然而,发明人在实施本发明实施例的过程中发现,现有技术的方式至少存在如下问题:同一资源在同一时刻只能被一个任务访问,当有多个任务均存在访问同一资源的需求时,则会严重影响任务处理的效率。
因此,亟需一种在确保资源有序访问的前提下,同时提高处理的任务数量的灵活性的方案。
发明内容
鉴于上述问题,提出了本发明实施例以便提供一种克服上述问题或者至少部分地解决上述问题的资源加锁的方法、计算设备及计算机存储介质。
根据本发明实施例的一个方面,提供了一种资源加锁的方法,包括:
步骤S1,针对任一任务,确定该任务待访问的资源信息;
步骤S2,根据所述待访问的资源信息获取资源对应的路径;
步骤S3,询问协调服务系统中所述路径下的子路径数量是否小于访问限制阈值,若是,则执行步骤S4;若否,监听协调服务系统中该路径下的子路径变更消息,跳转步骤S2;
步骤S4,记录所述资源当前的版本信息,生成用于在协调服务系统中创建所述资源和所述任务对应的子路径的创建命令和版本更新命令,将所述创建命令和版本更新命令提交给所述协调服务系统,以供所述协调服务系统根据版本是否冲突的判断结果确定是否执行所述创建命令和版本更新命令;
步骤S5,若所述协调服务系统成功执行所述创建命令和版本更新命令,则所述任务对所述资源加锁成功;否则,所述任务对所述资源加锁失败,跳转步骤S2。
根据本发明实施例的又一方面,提供了一种计算设备,包括:处理器、存储器、通信接口和通信总线,所述处理器、所述存储器和所述通信接口通过所述通信总线完成相互间的通信;
所述存储器用于存放至少一可执行指令,所述可执行指令使所述处理器执行上述资源加锁的方法对应的操作。
根据本发明实施例的再一方面,提供了一种计算机存储介质,所述存储介质中存储有至少一可执行指令,所述可执行指令使处理器执行如上述资源加锁的方法对应的操作。
根据本发明的资源加锁的方法、计算设备及计算机存储介质,通过询问协调服务系统中资源对应的路径下的子路径数量是否小于访问限制阈值,来判断当前占用资源的任务数是否达到上限;当小于访问限制阈值时,则表明未达到上限,通过记录资源当前的版本信息,并生成以该版本信息为执行条件的创建命令和版本更新命令,提供给协调服务系统在版本不冲突时进行执行,避免多个资源抢占同一任务时出现冲突;以及,协调服务系统通过创建该资源对应的路径下的子路径和更新版本信息来实现任务对资源的加锁,并且创建的子路径和更新的版本信息可用于作为后续针对其它任务进行加锁的依据;反之,当大于或等于访问限制阈值时,则通过监听协调服务系统中该路径下的子路径变更消息来确定进行新一轮加锁的时机,以在合适的时机再次针对该任务进行加锁。由此可见,本实施例方案,可以通过访问限制阈值、创建命令和版本更新命令,来实现任意数量的任务对资源的灵活加锁,可同时确保加锁的有序性和灵活性。
上述说明仅是本发明实施例技术方案的概述,为了能够更清楚了解本发明实施例的技术手段,而可依照说明书的内容予以实施,并且为了让本发明实施例的上述和其它目的、特征和优点能够更明显易懂,以下特举本发明实施例的具体实施方式。
附图说明
通过阅读下文优选实施方式的详细描述,各种其他的优点和益处对于本领域普通技术人员将变得清楚明了。附图仅用于示出优选实施方式的目的,而并不认为是对本发明实施例的限制。而且在整个附图中,用相同的参考符号表示相同的部件。在附图中:
图1示出了本发明实施例提供的资源加锁的方法的流程图;
图2示出了本发明另一个实施例提供的资源加锁的方法的流程图;
图3示出了本发明又一个实施例提供的资源加锁的方法的流程图;
图4示出了本发明一个具体示例中待比对的集群的分布示意图;
图5示出了本发明实施例提供的计算设备的结构示意图。
具体实施方式
下面将参照附图更详细地描述本发明的示例性实施例。虽然附图中显示了本发明的示例性实施例,然而应当理解,可以以各种形式实现本发明而不应被这里阐述的实施例所限制。相反,提供这些实施例是为了能够更透彻地理解本发明,并且能够将本发明的范围完整的传达给本领域的技术人员。
图1示出了本发明实施例提供的资源加锁的方法的流程图。该方法用于对资源进行有序、灵活加锁,以及,该方法可由任意具有数据处理能力的计算设备来执行。如图1所示,该方法包括以下步骤:
步骤S110,针对任一任务,确定该任务待访问的资源信息。
其中,任务可指任意计算机处理任务,例如,数据比对任务、信息筛选任务等等。以及,资源指执行该任务的过程中需要用到的资源,例如,数据库中存储的参数资源、机器资源等等,相应的,资源信息则包括任意可反映资源类型、标识和/或位置等的信息,以机器资源为例,则资源信息可以为机器IP。
步骤S120,根据该待访问的资源信息获取资源对应的路径。
其中,资源对应的路径是指该资源对应在协调服务系统中的路径。在本发明中,借助协调服务系统来完成对资源的加锁,在协调服务系统中,以路径的形式来表示资源以及任务对资源的加锁,例如,……/ip1表示机器1,……/ip1/a表示任务a对机器1加锁。
步骤S130,询问协调服务系统中该路径下的子路径数量是否小于访问限制阈值;若是,则执行步骤S140;若否,则执行步骤S170。
其中,访问限制阈值是限制资源在同一时刻可允许被访问的任务数量上限,例如,可同时允许2个任务访问同一资源,则访问限制阈值为2。
向协调服务系统查询该路径下的子路径数量,其中,该路径的子路径是指包含有该路径的路径,例如,路径……/ip1/a包含路径……/ip1,则……/ip1/a为……/ip1的子路径,……表示相同的路径标识,例如……为根目录d。若子路径数量小于访问限制阈值,则表明该资源还允许任务访问,执行步骤S140,以进行将资源分配给该任务的处理;反之,则表明该资源已达到访问上限,执行步骤S160,以等待到达允许访问的时机。
步骤S140,记录该资源当前的版本信息,生成用于在协调服务系统中创建该资源和该任务对应的子路径的创建命令和版本更新命令,将该创建命令和版本更新命令提交给该协调服务系统,以供该协调服务系统根据版本是否冲突的判断结果确定是否执行该创建命令和版本更新命令。
其中,在每次为资源创建新的访问任务时,则对资源的版本信息进行一次更新,即同时执行创建命令和版本更新命令。
具体地,记录资源当前的版本信息,以用于后续确定是否存在版本冲突。生成创建命令和版本更新命令,其中,创建命令用于在协调服务系统中创建获取的资源对应的路径的子路径,例如,资源对应的路径为……/ip1,任务为任务b,则创建命令用于创建子路径……/ip1/b;以及,版本更新命令用于在协调服务系统中更新资源的版本信息。上述创建命令和版本更新命令均以记录的资源当前的版本信息作为执行条件。而后将创建命令和版本更新命令发送给协调服务系统进行执行,协调服务系统根据版本是否冲突的判断结果来确定是否执行,其中,若已有其它任务对资源加锁,则版本信息发生了更新,进而与创建命令和版本更新命令的执行条件存在冲突,则无法执行该创建命令和版本更新命令,反之,则执行该创建命令和版本更新命令。
步骤S150,若该协调服务系统成功执行该创建命令和版本更新命令,则该任务对该资源加锁成功。
其中,加锁成功即表明该任务成功占用该资源,此时,协调服务系统中新增了该资源对应的路径的子路径,以及该资源的版本信息发生了更新,此后,若有其它任务对该资源加锁,则需在新增的子路径以及更新的版本信息的基础上执行本发明方案。
步骤S160,若该协调服务系统未成功执行该创建命令和版本更新命令,则该任务对该资源加锁失败,跳转执行步骤S120。
若加锁失败,则跳转执行步骤S120,以进行新一轮的加锁。
步骤S170,监听协调服务系统中该路径下的子路径变更消息,跳转执行步骤S120。
若子路径数量大于或等于访问限制阈值,则监听协调服务系统中资源对应的路径下的子路径的变更消息,当监听到子路径被删除时,则跳转执行步骤S120,以进行新一轮的加锁。
根据本实施例提供的资源加锁的方法,通过询问协调服务系统中资源对应的路径下的子路径数量是否小于访问限制阈值,来判断当前占用资源的任务数是否达到上限;当小于访问限制阈值时,则表明未达到上限,通过记录资源当前的版本信息,并生成以该版本信息为执行条件的创建命令和版本更新命令,提供给协调服务系统在版本不冲突时进行执行,避免多个资源抢占同一任务时出现冲突;以及,协调服务系统通过创建该资源对应的路径下的子路径和更新版本信息来实现任务对资源的加锁,并且创建的子路径和更新的版本信息可用于作为后续针对其它任务进行加锁的依据;反之,当大于或等于访问限制阈值时,则通过监听协调服务系统中该路径下的子路径变更消息来确定进行新一轮加锁的时机,以在合适的时机再次针对该任务进行加锁。由此可见,本实施例方案,可以通过访问限制阈值、创建命令和版本更新命令,来实现任意数量的任务对资源的灵活加锁,可同时确保加锁的有序性和灵活性。
图2示出了本发明另一个实施例提供的资源加锁的方法的流程图。如图2所示,该方法包括以下步骤:
步骤S210,针对任一任务,确定该任务待访问的资源信息。
其中,若存在多个任务,则针对每个任务均执行本发明方案。
其中,资源信息可以资源列表的形式呈现,资源列表中包含执行该任务的过程中需要用到的一个或多个资源的信息。
步骤S220,根据该待访问的资源信息获取资源对应的路径。
具体地,根据资源信息中的一项或多项信息确定资源在协调服务系统中的路径,在一些具体的实施方式中,使路径标识包含资源的资源标识,进而得到资源对应的路径,通常情况下,资源标识在路径标识的末尾,例如,路径标识……/ip1为机器1对应的路径。
步骤S230,询问协调服务系统中该路径下的子路径数量是否小于访问限制阈值,若是,则执行步骤S240,若否,则执行步骤S270。
其中,协调服务系统可为任意通过路径形式来标识不同信息的系统,在一些可选的实施例中,该协调服务系统为zookeeper(简称ZK)协调服务系统,ZK协调服务系统的优势在于,通过向该ZK协调服务系统发送监听(watch)指令后,ZK协调服务系统可以及时反馈本系统中的路径变更情况(该优势在下文的步骤S270中可体现出);以及,ZK协调服务系统可以有效的用于多个分布式资源的加锁处理,例如,用于多个机器资源的加锁处理(该优势在下文图3对应的实施例中可体现出)。
具体地,通过询问协调服务系统中该路径下的子路径数量是否小于访问限制阈值来确定当前占用资源的任务数量是否达到上限,其中,子路径是在某一任务对资源进行加锁时创建的,则子路径数量可反映当前占用资源的任务数量。举例来说,机器1对应的路径d/ip1下具有子路径d/ip1/a以及d/ip1/b,则表示任务a和任务b当前正在占用机器1,子路径数量为2。若询问的结果为子路径数量小于访问限制阈值,则表示未达到访问上限,此时执行步骤S240,需要在此说明的是,小于访问限制阈值包括不存在该路径下的子路径的情况,即子路径数量为0;若询问结果为子路径数量大于或等于访问限制阈值,则表示已达到访问上限,此时执行步骤S270,其中,大于的情况通常不会出现。举例来说,机器1对应的路径d/ip1下具有子路径d/ip1/a以及d/ip1/b,访问限制阈值为2,此时子路径数量为2,刚好等于访问限制阈值,则表明刚好达到访问上限,此时当前任务无法对资源加锁,则执行步骤S270。
步骤S240,记录该资源当前的版本信息,生成用于在协调服务系统中创建该资源和该任务对应的子路径的创建命令和版本更新命令,将该创建命令和版本更新命令提交给该协调服务系统,以供该协调服务系统根据版本是否冲突的判断结果确定是否执行该创建命令和版本更新命令。
具体地,协调服务系统在每次执行完版本更新命令后,会反馈更新后的版本信息,通过记录子路径数量小于访问限制阈值时的版本信息,可用于后续确定是否存在版本冲突,其中,版本信息具体可以为版本号,每次为资源创建新的访问任务时,则执行一次版本更新命令,完成一次版本更新,通常情况下,每执行一次版本更新命令,则版本号加一。
以及,生成创建命令和版本更新命令,上述创建命令和版本更新命令以记录的版本信息为执行条件,即仅当资源的实时版本信息与记录的版本信息相同时才执行创建命令和版本更新命令。将该创建命令和版本更新命令提交给该协调服务系统,以供该协调服务系统判断该资源当前的实时版本信息是否与记录的该版本信息相同,若相同,则表明在记录版本信息至此时的过程中,不存在其它任务占用该资源,即未执行过其它版本更新命令,资源的版本信息未发生改变,此时则表明不存在版本冲突,确定执行该创建命令和版本更新命令,反之,若不相同,则表明在记录版本信息至此时的过程中,有其它任务占用该资源,即执行过其它版本更新命令,资源的版本信息发生了改变,此时则表明存在版本冲突,确定不执行该创建命令和版本更新命令,跳转步骤S220,以进入下一轮的加锁。
进一步的,生成创建命令和版本更新命令的过程如下:构建包含该资源的资源标识和该任务的任务标识的子路径,生成添加该子路径的创建命令,具体可在前述获取的资源对应的路径下添加任务标识来构建子路径,例如,构建子路径d/ip1/c。同时,实际中,资源发生更新,则会导致资源版本更新,在本实施例中,基于此生成修改该资源的版本更新命令,通过修改资源来实现版本更新,在一些可选的实施方式中,修改资源具体通过修改资源对应的路径来实现。
相应的,协调服务系统执行该创建命令和版本更新命令的过程如下:在协调服务系统中根据创建命令创建该子路径,即创建创建命令中的子路径,以及,根据该版本更新命令修改该资源,在修改完成后更新该资源的版本信息,并反馈该更新的版本信息给执行本方案的计算设备,以供记录并用于下一次的版本冲突判断。
步骤S250,若该协调服务系统成功执行该创建命令和版本更新命令,则该任务对该资源加锁成功。
其中,任务对资源加锁成功即表明任务成功占用该资源。
步骤S260,若该协调服务系统未成功执行该创建命令和版本更新命令,该任务对该资源加锁失败,跳转执行步骤S220。
实际中,可能存在各种原因导致执行不成功,例如,网络故障导致执行不成功等,若执行不成功,则表明加锁失败,跳转执行步骤S220,以针对该任务进行下一轮的加锁。在本发明的一些可选的实施方式中,在任务对该资源加锁失败后,等待达到预设时间间隔后跳转步骤S220,以避免再次出现同样加锁失败的情况,其中,预设时间间隔可灵活设定,本发明对此不作具体限定,例如,等待达到5秒后则跳转执行步骤S220。
步骤S270,任务访问该资源,在该任务访问完该资源之后,通知协调服务系统删除该资源和该任务对应的子路径。
在任务对资源加锁成功后,则该任务可对资源进行访问,在访问完毕后,即任务执行完成后,则通知协调服务系统删除该资源和任务对应的子路径,以释放该资源,便于后续其它任务对该资源进行加锁的过程中,可准确的确定占用该资源的任务数是否达到上限。例如,在协调服务系统中已创建有子路径d/ip1/a、d/ip1/b以及d/ip1/c,当任务a执行完毕后,则通知协调服务系统删除子路径d/ip1/c。
该步骤S270中是针对正常执行完任务后的删除,而在实际中,还存在一些因网络、设备等故障因素导致任务异常中断的情况,为了避免这些情况下异常任务对资源的长时间占用,在本发明的一些可选的实施方式中,在任务对资源加锁成功后,检测该任务与协调服务系统的连接状态,当检测到该任务与协调服务系统断开连接后,判断断开连接的时长是否超过预设时长;若是,则通知协调服务系统删除该资源和该任务对应的子路径。在这些可选的实施方式中,基于预设时长来确定是否存在长时间异常占用资源的情况,并针对异常占用的情况进行子路径的删除,避免异常任务对资源的长时间占用。
步骤S280,监听协调服务系统中该路径下的子路径变更消息,跳转执行步骤S220。
若子路径数量大于或等于访问限制阈值,则监听协调服务系统中该路径下的子路径变更消息,其中,子路径发生变更,则表明有任务释放该资源,跳转执行步骤S220,以针对该任务进行下一轮的加锁。在协调服务系统为ZK协调服务系统时,当询问得到子路径数量大于或等于访问限制阈值的结果后,则向ZK协调服务系统发送监听指令,ZK协调服务系统根据该监听指令,在监听到该资源对应的路径下的子路径的删除动作后,则反馈子路径变更消息,执行本方案的计算设备基于该子路径变更消息触发跳转执行步骤S220,上诉过程基于ZK协调服务系统,可以方便的进行监听和触发跳转。
另外,在本发明的一些可选的实施方式中,通过加锁退出条件来判定是否需要继续进行加锁操作,以在满足加锁退出条件时及时退出针对该任务的加锁,其中,加锁退出条件可以为任务取消,针对任务加锁的持续时间限制,当前同时进行加锁的任务数量限制,和/或针对任务加锁失败的次数限制等等。以及,在执行上述步骤S210至S280的任意时刻,均可进行加锁退出条件满足与否的判定,而在一些具体的实施方式中,在执行步骤S210时,同时获取加锁退出条件,而后,若该路径下的子路径数量大于或等于访问限制阈值,或者,该协调服务系统未成功执行该创建命令和版本更新命令,则监听该任务是否满足加锁退出条件,若满足,则退出该任务对该资源的加锁,以在大于或等于访问限制阈值,以及执行失败时进行判定,并在满足条件时退出,实现在加锁出现障碍时有针对性的进行判定,避免过多的无效判定。
根据本实施例提供的资源加锁的方法,在加锁成功后,任务访问该资源,并在该任务访问完资源之后,或者,任务长时间断开与协调服务系统的连接后,通知协调服务系统删除该资源和任务对应的子路径,以释放对资源的占用,便于后续针对其它任务加锁时准确的进行子路径数量的判定;协调服务系统通过判定资源当前的实施版本信息是否与记录的版本信息相同来确定是否存在版本冲突,进而准确的判定是否满足创建命令和版本更新命令的执行条件;在任务对资源的加锁失败后,则等待达到预设时间间隔后进行下一轮的加锁,避免重复出现加锁失败的情况;通过加锁退出条件来及时退出任务的加锁,避免无效加锁或者异常加锁。
图3示出了本发明又一个实施例提供的资源加锁的方法的流程图。图4示出了本发明一个具体示例中待比对的集群的分布示意图。如图4所示,共有4个集群A、B、C以及D,各个集群依次由一主两从数据库构成,具体构成如下:集群A由A1A2A3组成,集群B由B1B2B3组成,以及C由C1C2C3组成。集群在机房1中产生数据,并且产生的数据会同步到机房2中,以确保提供服务的稳定性。在同步后,需要比对同步结果是否准确,即针对每个集群,比对机房1中一主两从数据库中的数据是否与机房2中相应的一主两从数据库是否相同,则共有如下4个比对任务:任务a,比对机房1中A1A2A3的数据是否与机房2中A1A2A3的数据相同;任务b,比对机房1中B1B2B3的数据是否与机房2中B1B2B3的数据相同;任务c,比对机房1中C1C2C3的数据是否与机房2中C1C2C3的数据相同;任务d,比对机房1中D1D2D3的数据是否与机房2中D1D2D3的数据相同。
根据图4可知,上述4个集群中的主数据库(即A1、B1、C1以及D1)均部署于机房1和2中的IP1上,而从数据库则部署于机房1和2中的IP2和3上,相应的,上述4个比对任务均需访问IP1,IP2和IP3,即涉及对多个资源的访问,若每次仅允许一个任务访问,则会导致多任务的执行效率,同时浪费,若允许过多的任务同时执行,则会导致机器的负载过高,从而影响正在使用的业务。图3对应的实施例则正是主要针对这种涉及多资源的情况来进行说明,需要在此说明的是,图4的示例对应的各个任务对资源的占用情况只是示例性的,实际实施时,任务及其访问的资源可以任意组合,而并不以图4的示例为限。
如图3所示,该方法包括以下步骤:
步骤S310,针对任一任务,确定该任务待访问的资源信息。
仍以图4为例,针对任务b,确定待访问的机器名称为IP1、IP2以及IP3。
步骤S320,从多个资源中依次选择资源作为当前资源;根据该待访问的资源信息获取该当前资源对应的路径。
依次遍历多个资源,针对遍历到的当前资源,根据该当前资源的资源信息获取该当前资源在协调服务系统中的路径,例如,当前遍历到机器2,则根据机器2的名称ip2获取机器2对应的路径为d/ip2。
步骤S330,询问协调服务系统中该路径下的子路径数量是否小于访问限制阈值,若是,则执行步骤S340,若否,则执行步骤S390。
针对每个遍历到的当前资源对应的路径,对其下的子路径数量进行判定,以确定当前访问该当前资源的任务数量是否达到访问上限。
步骤S340,记录该当前资源当前的版本信息,生成用于在协调服务系统中创建该当前资源和该任务对应的子路径的创建命令和版本更新命令。
针对当前资源记录版本信息,并生成创建命令和版本更新命令,其中,该创建命令和版本更新命令以记录该当前资源的版本信息为执行条件。
步骤S350,判断是否遍历得到该多个资源对应的多组创建命令和版本更新命令;若是,则执行步骤S360,若否,则跳转步骤S320。
若多个资源遍历完毕,则会得到多组创建命令和版本更新命令,执行步骤S360,以执行该多组创建命令和版本更新命令;若多个资源未遍历完毕,则不会得到多组创建命令和版本更新命令,则跳转执行步骤S320,以询问下一个选出的当前资源的子路径数量。
步骤S360,将该多个资源对应的多组创建命令和版本更新命令提交给该协调服务系统,以供该协调服务系统根据版本是否冲突的判断结果确定是否执行该多组创建命令和版本更新命令。
具体地,在针对多个资源对应的多组创建命令和版本更新命令进行版本冲突的判定时,协调服务系统判断该多个资源当前的实施版本信息是否均与记录该多个资源的版本信息相同,若均相同,则表明该多个资源在记录版本信息至此刻的过程中,均未被其它任务加锁成功,版本信息未发生改变,则不存在版本冲突,确定执行该多组创建命令和版本更新命令;反之,若存在不相同,则表明该多个资源中存在至少一个资源在记录版本信息至此刻的过程中,已被其它任务加锁成功,版本信息发生了改变,此时则存在版本冲突,确定不执行该创建命令和版本更新命令,跳转执行步骤S320,即跳转至步骤S320中重新遍历多个资源。上述针对多个资源判定版本冲突并执行的方式,仅在多个资源当前的实施版本信息均与记录该多个资源的版本信息相同时,才执行多组创建命令和版本更新命令,避免因至少一个资源的版本存在冲突而导致对资源的占用发生混乱,而无法有序的进行资源分配。
仍以图4对应的任务b为例,记录的3个机器的版本号依次为1,1,1,在此后至进行冲突判定的过程中,另一任务e对ip2加锁成功,导致机器2的版本号更新为2,则3个机器的实时版本信息为1,2,1,判定发现机器2的版本信息存在冲突,此时则不能执行多组创建命令和版本更新命令。
步骤S370,若该协调服务系统成功执行该多组创建命令和版本更新命令,则该任务对该多个资源加锁成功。
步骤S380,若该协调服务系统未成功执行该多组创建命令和版本更新命令,该任务对该多个资源加锁失败,跳转执行步骤S320。
若加锁失败,则清空遍历记录,跳转至步骤S320中重新遍历多个资源。
步骤S390,监听协调服务系统中该路径下的子路径变更消息,当监听到子路径变更消息,则清空针对该任务已记录的版本信息和已生成的创建命令和版本更新命令,跳转步骤S320。
若针对当前资源询问得到的结果为子路径数量大于或等于访问限制阈值,则监听协调服务系统中该资源对应的路径下的子路径变更消息,当监听到子路径变更消息,即监听到该路径下的子路径被删除的动作,则首先需清空针对该任务记录和生成的信息,而后跳转至步骤S320,重新遍历生成创建命令和版本更新命令。
本实施例针对多个资源的加锁方案,借助ZK协调服务系统来进行加锁,可以通过集中的路径和版本管理,有效的进行多个分布式资源的加锁处理,例如图4中的多个机器。
需要在此说明的是,在本实施例中,未具体说明的过程,可参见前文图1和图2对应的实施例中相关步骤的说明,此处不再赘述。
根据本实施例提供的资源加锁的方法,针对多资源的情况,在进行加锁的过程,需要依次遍历多个资源,并仅在多个资源对应的多组创建命令和版本更新命令中的执行条件均与相应资源的实时版本信息相同时,才能执行该多组创建命令和版本更新命令,避免因至少一个资源的版本存在冲突而导致对资源的占用发生混乱,而无法有序的进行资源分配;以及,在任一当前资源对应的路径下的子路径数量大于或等于访问限制阈值时,监听协调服务系统中该路径下的子路径变更消息,当监听到子路径变更消息,则清空针对该任务已记录的版本信息和已生成的创建命令和版本更新命令,并重新进行遍历,避免已记录和已生成的信息失效而导致后续进行冲突判定或者执行命令时,出现不准确的情况,影响资源分配的准确性。由此可见,本实施例方案,可以实现针对多资源的有序分配,可依据需求使资源同时被任意数量的任务占用,避免过多或过少占用所带来的不足。
本发明实施例提供了一种非易失性计算机存储介质,所述计算机存储介质存储有至少一可执行指令,该计算机可执行指令可执行上述任意方法实施例中的资源加锁的方法。
可执行指令具体可以用于使得处理器执行以下操作:
步骤S1,针对任一任务,确定该任务待访问的资源信息;
步骤S2,根据所述待访问的资源信息获取资源对应的路径;
步骤S3,询问协调服务系统中所述路径下的子路径数量是否小于访问限制阈值,若是,则执行步骤S4;若否,监听协调服务系统中该路径下的子路径变更消息,跳转步骤S2;
步骤S4,记录所述资源当前的版本信息,生成用于在协调服务系统中创建所述资源和所述任务对应的子路径的创建命令和版本更新命令,将所述创建命令和版本更新命令提交给所述协调服务系统,以供所述协调服务系统根据版本是否冲突的判断结果确定是否执行所述创建命令和版本更新命令;
步骤S5,若所述协调服务系统成功执行所述创建命令和版本更新命令,则所述任务对所述资源加锁成功;否则,所述任务对所述资源加锁失败,跳转步骤S2。
在一种可选的方式中,所述可执行指令进一步使所述处理器执行如下操作:任务访问所述资源,在所述任务访问完所述资源之后,通知协调服务系统删除所述资源和所述任务对应的子路径。
在一种可选的方式中,所述可执行指令进一步使所述处理器执行如下操作:检测所述任务与协调服务系统的连接状态;当检测到所述任务与协调服务系统断开连接后,判断断开连接的时长是否超过预设时长;若是,则通知协调服务系统删除所述资源和所述任务对应的子路径。
在一种可选的方式中,所述可执行指令进一步使所述处理器执行如下操作:将所述创建命令和版本更新命令提交给所述协调服务系统,以供所述协调服务系统判断所述资源当前的实时版本信息是否与记录的所述版本信息相同,若相同,则确定执行所述创建命令和版本更新命令,若不相同,则确定不执行所述创建命令和版本更新命令,跳转步骤S2。
在一种可选的方式中,所述可执行指令进一步使所述处理器执行如下操作:构建包含所述资源的资源标识和所述任务的任务标识的子路径,生成添加所述子路径的创建命令;以及,生成修改所述资源的版本更新命令。
在一种可选的方式中,所述可执行指令进一步使所述处理器执行如下操作:在协调服务系统中根据创建命令创建所述子路径,以及,根据所述版本更新命令修改所述资源,在修改完成后更新所述资源的版本信息。
在一种可选的方式中,所述资源为多个;所述可执行指令进一步使所述处理器执行如下操作:步骤S21,从多个资源中依次选择资源作为当前资源;步骤S22,根据所述待访问的资源信息获取所述当前资源对应的路径;
步骤S31,询问协调服务系统中所述路径下的子路径数量是否小于访问限制阈值,若是,则执行步骤S4,若否,则执行步骤S32;步骤S32,监听协调服务系统中该路径下的子路径变更消息,当监听到子路径变更消息,则清空针对所述任务已记录的版本信息和已生成的创建命令和版本更新命令,跳转步骤S21;
步骤S41,记录所述当前资源当前的版本信息,生成用于在协调服务系统中创建所述当前资源和所述任务对应的子路径的创建命令和版本更新命令;步骤S42,判断是否遍历得到所述多个资源对应的多组创建命令和版本更新命令,若遍历完毕,则将所述多个资源对应的多组创建命令和版本更新命令提交给所述协调服务系统,以供所述协调服务系统根据版本是否冲突的判断结果确定是否执行所述多组创建命令和版本更新命令;若未遍历完毕,则跳转步骤S21。
在一种可选的方式中,所述可执行指令进一步使所述处理器执行如下操作:协调服务系统判断所述多个资源当前的实施版本信息是否均与记录所述多个资源的版本信息相同,若均相同,则确定执行所述多组创建命令和版本更新命令,若存在不相同,则确定不执行所述创建命令和版本更新命令,跳转步骤S21。
在一种可选的方式中,所述可执行指令进一步使所述处理器执行如下操作:若所述协调服务系统成功执行所述多组创建命令和版本更新命令,则所述任务对所述多个资源加锁成功;否则,所述任务对所述多个资源加锁失败,跳转步骤S21。
在一种可选的方式中,所述可执行指令进一步使所述处理器执行如下操作:所述任务对所述资源加锁失败,则等待达到预设时间间隔后跳转步骤S2。
在一种可选的方式中,所述可执行指令进一步使所述处理器执行如下操作:获取加锁退出条件;若所述路径下的子路径数量大于或等于访问限制阈值,或者,所述协调服务系统未成功执行所述创建命令和版本更新命令,监听所述任务是否满足加锁退出条件,若满足,则退出所述任务对所述资源的加锁。
图5示出了本发明实施例提供的计算设备的结构示意图,本发明具体实施例并不对计算设备的具体实现做限定。如图5所示,该计算设备可以包括:处理器(processor)502、通信接口(Communications Interface)504、存储器(memory)506、以及通信总线508。其中:处理器502、通信接口504、以及存储器506通过通信总线508完成相互间的通信。通信接口504,用于与其它设备比如客户端或其它服务器等的网元通信。处理器502,用于执行程序510,具体可以执行上述用于计算设备的资源加锁的方法实施例中的相关步骤。具体地,程序510可以包括程序代码,该程序代码包括计算机操作指令。处理器502可能是中央处理器CPU,或者是特定集成电路ASIC(Application Specific Integrated Circuit),或者是被配置成实施本发明实施例的一个或多个集成电路。计算设备包括的一个或多个处理器,可以是同一类型的处理器,如一个或多个CPU;也可以是不同类型的处理器,如一个或多个CPU以及一个或多个ASIC。存储器506,用于存放程序510。存储器506可能包含高速RAM存储器,也可能还包括非易失性存储器(non-volatile memory),例如至少一个磁盘存储器。
程序510具体可以用于使得处理器502执行以下操作:
步骤S1,针对任一任务,确定该任务待访问的资源信息;
步骤S2,根据所述待访问的资源信息获取资源对应的路径;
步骤S3,询问协调服务系统中所述路径下的子路径数量是否小于访问限制阈值,若是,则执行步骤S4;若否,监听协调服务系统中该路径下的子路径变更消息,跳转步骤S2;
步骤S4,记录所述资源当前的版本信息,生成用于在协调服务系统中创建所述资源和所述任务对应的子路径的创建命令和版本更新命令,将所述创建命令和版本更新命令提交给所述协调服务系统,以供所述协调服务系统根据版本是否冲突的判断结果确定是否执行所述创建命令和版本更新命令;
步骤S5,若所述协调服务系统成功执行所述创建命令和版本更新命令,则所述任务对所述资源加锁成功;否则,所述任务对所述资源加锁失败,跳转步骤S2。
在一种可选的方式中,所述程序510进一步使所述处理器执行以下操作:任务访问所述资源,在所述任务访问完所述资源之后,通知协调服务系统删除所述资源和所述任务对应的子路径。
在一种可选的方式中,所述程序510进一步使所述处理器执行以下操作:检测所述任务与协调服务系统的连接状态;当检测到所述任务与协调服务系统断开连接后,判断断开连接的时长是否超过预设时长;若是,则通知协调服务系统删除所述资源和所述任务对应的子路径。
在一种可选的方式中,所述程序510进一步使所述处理器执行以下操作:
将所述创建命令和版本更新命令提交给所述协调服务系统,以供所述协调服务系统判断所述资源当前的实时版本信息是否与记录的所述版本信息相同,若相同,则确定执行所述创建命令和版本更新命令,若不相同,则确定不执行所述创建命令和版本更新命令,跳转步骤S2。
在一种可选的方式中,所述程序510进一步使所述处理器执行以下操作:
构建包含所述资源的资源标识和所述任务的任务标识的子路径,生成添加所述子路径的创建命令;以及,生成修改所述资源的版本更新命令。
在一种可选的方式中,所述程序510进一步使所述处理器执行以下操作:
在协调服务系统中根据创建命令创建所述子路径,以及,根据所述版本更新命令修改所述资源,在修改完成后更新所述资源的版本信息。
在一种可选的方式中,所述资源为多个;所述程序510进一步使所述处理器执行以下操作:
步骤S21,从多个资源中依次选择资源作为当前资源;步骤S22,根据所述待访问的资源信息获取所述当前资源对应的路径;
步骤S31,询问协调服务系统中所述路径下的子路径数量是否小于访问限制阈值,若是,则执行步骤S4,若否,则执行步骤S32;步骤S32,监听协调服务系统中该路径下的子路径变更消息,当监听到子路径变更消息,则清空针对所述任务已记录的版本信息和已生成的创建命令和版本更新命令,跳转步骤S21;
步骤S41,记录所述当前资源当前的版本信息,生成用于在协调服务系统中创建所述当前资源和所述任务对应的子路径的创建命令和版本更新命令;步骤S42,判断是否遍历得到所述多个资源对应的多组创建命令和版本更新命令,若遍历完毕,则将所述多个资源对应的多组创建命令和版本更新命令提交给所述协调服务系统,以供所述协调服务系统根据版本是否冲突的判断结果确定是否执行所述多组创建命令和版本更新命令;若未遍历完毕,则跳转步骤S21。
在一种可选的方式中,所述程序510进一步使所述处理器执行以下操作:
协调服务系统判断所述多个资源当前的实施版本信息是否均与记录所述多个资源的版本信息相同,若均相同,则确定执行所述多组创建命令和版本更新命令,若存在不相同,则确定不执行所述创建命令和版本更新命令,跳转步骤S21。
在一种可选的方式中,所述程序510进一步使所述处理器执行以下操作:
若所述协调服务系统成功执行所述多组创建命令和版本更新命令,则所述任务对所述多个资源加锁成功;否则,所述任务对所述多个资源加锁失败,跳转步骤S21。
在一种可选的方式中,所述程序510进一步使所述处理器执行以下操作:
所述任务对所述资源加锁失败,则等待达到预设时间间隔后跳转步骤S2。
在一种可选的方式中,所述程序510进一步使所述处理器执行以下操作:
获取加锁退出条件;
若所述路径下的子路径数量大于或等于访问限制阈值,或者,所述协调服务系统未成功执行所述创建命令和版本更新命令,监听所述任务是否满足加锁退出条件,若满足,则退出所述任务对所述资源的加锁。
在此提供的算法或显示不与任何特定计算机、虚拟系统或者其它设备固有相关。各种通用系统也可以与基于在此的示教一起使用。根据上面的描述,构造这类系统所要求的结构是显而易见的。此外,本发明实施例也不针对任何特定编程语言。应当明白,可以利用各种编程语言实现在此描述的本发明实施例的内容,并且上面对特定语言所做的描述是为了披露本发明实施例的最佳实施方式。
在此处所提供的说明书中,说明了大量具体细节。然而,能够理解,本发明的实施例可以在没有这些具体细节的情况下实践。在一些实例中,并未详细示出公知的方法、结构和技术,以便不模糊对本说明书的理解。
类似地,应当理解,为了精简本发明实施例并帮助理解各个发明方面中的一个或多个,在上面对本发明的示例性实施例的描述中,本发明实施例的各个特征有时被一起分组到单个实施例、图、或者对其的描述中。然而,并不应将该公开的方法解释成反映如下意图:即所要求保护的本发明实施例要求比在每个权利要求中所明确记载的特征更多的特征。更确切地说,如下面的权利要求书所反映的那样,发明方面在于少于前面公开的单个实施例的所有特征。因此,遵循具体实施方式的权利要求书由此明确地并入该具体实施方式,其中每个权利要求本身都作为本发明的单独实施例。
本领域那些技术人员可以理解,可以对实施例中的设备中的模块进行自适应性地改变并且把它们设置在与该实施例不同的一个或多个设备中。可以把实施例中的模块或单元或组件组合成一个模块或单元或组件,以及此外可以把它们分成多个子模块或子单元或子组件。除了这样的特征和/或过程或者单元中的至少一些是相互排斥之外,可以采用任何组合对本说明书(包括伴随的权利要求、摘要和附图)中公开的所有特征以及如此公开的任何方法或者设备的所有过程或单元进行组合。除非另外明确陈述,本说明书(包括伴随的权利要求、摘要和附图)中公开的每个特征可以由提供相同、等同或相似目的的替代特征来代替。
此外,本领域的技术人员能够理解,尽管在此的一些实施例包括其它实施例中所包括的某些特征而不是其它特征,但是不同实施例的特征的组合意味着处于本发明的范围之内并且形成不同的实施例。例如,在下面的权利要求书中,所要求保护的实施例的任意之一都可以以任意的组合方式来使用。
本发明的各个部件实施例可以以硬件实现,或者以在一个或者多个处理器上运行的软件模块实现,或者以它们的组合实现。本领域的技术人员应当理解,可以在实践中使用微处理器或者数字信号处理器(DSP)来实现根据本发明实施例的一些或者全部部件的一些或者全部功能。本发明实施例还可以实现为用于执行这里所描述的方法的一部分或者全部的设备或者装置程序(例如,计算机程序和计算机程序产品)。这样的实现本发明实施例的程序可以存储在计算机可读介质上,或者可以具有一个或者多个信号的形式。这样的信号可以从因特网网站上下载得到,或者在载体信号上提供,或者以任何其他形式提供。
应该注意的是上述实施例对本发明实施例进行说明而不是对本发明进行限制,并且本领域技术人员在不脱离所附权利要求的范围的情况下可设计出替换实施例。在权利要求中,不应将位于括号之间的任何参考符号构造成对权利要求的限制。单词“包含”不排除存在未列在权利要求中的元件或步骤。位于元件之前的单词“一”或“一个”不排除存在多个这样的元件。本发明实施例可以借助于包括有若干不同元件的硬件以及借助于适当编程的计算机来实现。在列举了若干装置的单元权利要求中,这些装置中的若干个可以是通过同一个硬件项来具体体现。单词第一、第二、以及第三等的使用不表示任何顺序。可将这些单词解释为名称。上述实施例中的步骤,除有特殊说明外,不应理解为对执行顺序的限定。
Claims (23)
1.一种资源加锁的方法,包括:
步骤S1,针对任一任务,确定该任务待访问的资源信息;
步骤S2,根据所述待访问的资源信息获取资源对应的路径;
步骤S3,询问协调服务系统中所述路径下的子路径数量是否小于访问限制阈值,若是,则执行步骤S4;若否,监听协调服务系统中该路径下的子路径变更消息,跳转步骤S2;
步骤S4,记录所述资源当前的版本信息,生成用于在协调服务系统中创建所述资源和所述任务对应的子路径的创建命令和版本更新命令,将所述创建命令和版本更新命令提交给所述协调服务系统,以供所述协调服务系统根据版本是否冲突的判断结果确定是否执行所述创建命令和版本更新命令;其中,所述版本信息为在每次为所述资源创建新的访问任务时执行一次更新的信息;
步骤S5,若所述协调服务系统成功执行所述创建命令和版本更新命令,则所述任务对所述资源加锁成功;否则,所述任务对所述资源加锁失败,跳转步骤S2。
2.根据权利要求1所述的方法,其中,在所述任务对所述资源加锁成功之后,所述方法还包括:
任务访问所述资源,在所述任务访问完所述资源之后,通知协调服务系统删除所述资源和所述任务对应的子路径。
3.根据权利要求1或2所述的方法,其中,在所述任务对所述资源加锁成功之后,所述方法还包括:
检测所述任务与协调服务系统的连接状态;
当检测到所述任务与协调服务系统断开连接后,判断断开连接的时长是否超过预设时长;若是,则通知协调服务系统删除所述资源和所述任务对应的子路径。
4.根据权利要求1所述的方法,其中,所述将所述创建命令和版本更新命令提交给所述协调服务系统,以供所述协调服务系统根据版本是否冲突的判断结果确定是否执行所述创建命令和版本更新命令进一步包括:
将所述创建命令和版本更新命令提交给所述协调服务系统,以供所述协调服务系统判断所述资源当前的实时版本信息是否与记录的所述版本信息相同,若相同,则确定执行所述创建命令和版本更新命令,若不相同,则确定不执行所述创建命令和版本更新命令,跳转步骤S2。
5.根据权利要求1所述的方法,其中,所述生成用于在协调服务系统中创建所述资源和所述任务对应的子路径的创建命令和版本更新命令进一步包括:
构建包含所述资源的资源标识和所述任务的任务标识的子路径,生成添加所述子路径的创建命令;以及,
生成修改所述资源的版本更新命令。
6.根据权利要求5所述的方法,其中,所述执行所述创建命令和版本更新命令进一步包括:
在协调服务系统中根据创建命令创建所述子路径,以及,根据所述版本更新命令修改所述资源,在修改完成后更新所述资源的版本信息。
7.根据权利要求1所述的方法,其中,所述资源为多个;所述步骤S2进一步包括:
步骤S21,从多个资源中依次选择资源作为当前资源;
步骤S22,根据所述待访问的资源信息获取所述当前资源对应的路径;
所述步骤S3进一步包括:
步骤S31,询问协调服务系统中所述路径下的子路径数量是否小于访问限制阈值,若是,则执行步骤S4,若否,则执行步骤S32;
步骤S32,监听协调服务系统中该路径下的子路径变更消息,当监听到子路径变更消息,则清空针对所述任务已记录的版本信息和已生成的创建命令和版本更新命令,跳转步骤S21;
所述步骤S4进一步包括:
步骤S41,记录所述当前资源当前的版本信息,生成用于在协调服务系统中创建所述当前资源和所述任务对应的子路径的创建命令和版本更新命令;
步骤S42,判断是否遍历得到所述多个资源对应的多组创建命令和版本更新命令,若遍历完毕,则将所述多个资源对应的多组创建命令和版本更新命令提交给所述协调服务系统,以供所述协调服务系统根据版本是否冲突的判断结果确定是否执行所述多组创建命令和版本更新命令;若未遍历完毕,则跳转步骤S21。
8.根据权利要求7所述的方法,其中,所述协调服务系统根据版本是否冲突的判断结果确定是否执行所述创建命令和版本更新命令进一步包括:
协调服务系统判断所述多个资源当前的实施版本信息是否均与记录所述多个资源的版本信息相同,若均相同,则确定执行所述多组创建命令和版本更新命令,若存在不相同,则确定不执行所述创建命令和版本更新命令,跳转步骤S21。
9.根据权利要求7所述的方法,其中,所述步骤S5进一步包括:
若所述协调服务系统成功执行所述多组创建命令和版本更新命令,则所述任务对所述多个资源加锁成功;否则,所述任务对所述多个资源加锁失败,跳转步骤S21。
10.根据权利要求1所述的方法,其中,所述任务对所述资源加锁失败,跳转步骤S2进一步包括:
所述任务对所述资源加锁失败,则等待达到预设时间间隔后跳转步骤S2。
11.根据权利要求1所述的方法,其中,所述方法还包括:获取加锁退出条件;
若所述路径下的子路径数量大于或等于访问限制阈值,或者,所述协调服务系统未成功执行所述创建命令和版本更新命令,监听所述任务是否满足加锁退出条件,若满足,则退出所述任务对所述资源的加锁。
12.一种计算设备,包括:处理器、存储器、通信接口和通信总线,所述处理器、所述存储器和所述通信接口通过所述通信总线完成相互间的通信;
所述存储器用于存放至少一可执行指令,所述可执行指令使所述处理器执行如下操作:
步骤S1,针对任一任务,确定该任务待访问的资源信息;
步骤S2,根据所述待访问的资源信息获取资源对应的路径;
步骤S3,询问协调服务系统中所述路径下的子路径数量是否小于访问限制阈值,若是,则执行步骤S4;若否,监听协调服务系统中该路径下的子路径变更消息,跳转步骤S2;
步骤S4,记录所述资源当前的版本信息,生成用于在协调服务系统中创建所述资源和所述任务对应的子路径的创建命令和版本更新命令,将所述创建命令和版本更新命令提交给所述协调服务系统,以供所述协调服务系统根据版本是否冲突的判断结果确定是否执行所述创建命令和版本更新命令;其中,所述版本信息为在每次为所述资源创建新的访问任务时执行一次更新的信息;
步骤S5,若所述协调服务系统成功执行所述创建命令和版本更新命令,则所述任务对所述资源加锁成功;否则,所述任务对所述资源加锁失败,跳转步骤S2。
13.根据权利要求12所述的计算设备,其中,所述可执行指令进一步使所述处理器执行如下操作:
任务访问所述资源,在所述任务访问完所述资源之后,通知协调服务系统删除所述资源和所述任务对应的子路径。
14.根据权利要求12或13所述的计算设备,其中,所述可执行指令进一步使所述处理器执行如下操作:
检测所述任务与协调服务系统的连接状态;
当检测到所述任务与协调服务系统断开连接后,判断断开连接的时长是否超过预设时长;若是,则通知协调服务系统删除所述资源和所述任务对应的子路径。
15.根据权利要求12所述的计算设备,其中,所述可执行指令进一步使所述处理器执行如下操作:
将所述创建命令和版本更新命令提交给所述协调服务系统,以供所述协调服务系统判断所述资源当前的实时版本信息是否与记录的所述版本信息相同,若相同,则确定执行所述创建命令和版本更新命令,若不相同,则确定不执行所述创建命令和版本更新命令,跳转步骤S2。
16.根据权利要求12所述的计算设备,其中,所述可执行指令进一步使所述处理器执行如下操作:
构建包含所述资源的资源标识和所述任务的任务标识的子路径,生成添加所述子路径的创建命令;以及,
生成修改所述资源的版本更新命令。
17.根据权利要求16所述的计算设备,其中,所述可执行指令进一步使所述处理器执行如下操作:
在协调服务系统中根据创建命令创建所述子路径,以及,根据所述版本更新命令修改所述资源,在修改完成后更新所述资源的版本信息。
18.根据权利要求12所述的计算设备,其中,所述资源为多个;所述可执行指令进一步使所述处理器执行如下操作:
步骤S21,从多个资源中依次选择资源作为当前资源;
步骤S22,根据所述待访问的资源信息获取所述当前资源对应的路径;
所述步骤S3进一步包括:
步骤S31,询问协调服务系统中所述路径下的子路径数量是否小于访问限制阈值,若是,则执行步骤S4,若否,则执行步骤S32;
步骤S32,监听协调服务系统中该路径下的子路径变更消息,当监听到子路径变更消息,则清空针对所述任务已记录的版本信息和已生成的创建命令和版本更新命令,跳转步骤S21;
所述步骤S4进一步包括:
步骤S41,记录所述当前资源当前的版本信息,生成用于在协调服务系统中创建所述当前资源和所述任务对应的子路径的创建命令和版本更新命令;
步骤S42,判断是否遍历得到所述多个资源对应的多组创建命令和版本更新命令,若遍历完毕,则将所述多个资源对应的多组创建命令和版本更新命令提交给所述协调服务系统,以供所述协调服务系统根据版本是否冲突的判断结果确定是否执行所述多组创建命令和版本更新命令;若未遍历完毕,则跳转步骤S21。
19.根据权利要求18所述的计算设备,其中,所述可执行指令进一步使所述处理器执行如下操作:
协调服务系统判断所述多个资源当前的实施版本信息是否均与记录所述多个资源的版本信息相同,若均相同,则确定执行所述多组创建命令和版本更新命令,若存在不相同,则确定不执行所述创建命令和版本更新命令,跳转步骤S21。
20.根据权利要求18所述的计算设备,其中,所述可执行指令进一步使所述处理器执行如下操作:
若所述协调服务系统成功执行所述多组创建命令和版本更新命令,则所述任务对所述多个资源加锁成功;否则,所述任务对所述多个资源加锁失败,跳转步骤S21。
21.根据权利要求12所述的计算设备,其中,所述可执行指令进一步使所述处理器执行如下操作:
所述任务对所述资源加锁失败,则等待达到预设时间间隔后跳转步骤S2。
22.根据权利要求12所述的计算设备,其中,所述可执行指令进一步使所述处理器执行如下操作:获取加锁退出条件;
若所述路径下的子路径数量大于或等于访问限制阈值,或者,所述协调服务系统未成功执行所述创建命令和版本更新命令,监听所述任务是否满足加锁退出条件,若满足,则退出所述任务对所述资源的加锁。
23.一种计算机存储介质,所述存储介质中存储有至少一可执行指令,所述可执行指令使处理器执行如权利要求1-11中任一项所述的资源加锁的方法对应的操作。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202110176524.6A CN112905322B (zh) | 2021-02-09 | 2021-02-09 | 资源加锁的方法、计算设备及计算机存储介质 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202110176524.6A CN112905322B (zh) | 2021-02-09 | 2021-02-09 | 资源加锁的方法、计算设备及计算机存储介质 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN112905322A CN112905322A (zh) | 2021-06-04 |
CN112905322B true CN112905322B (zh) | 2021-11-19 |
Family
ID=76124436
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202110176524.6A Active CN112905322B (zh) | 2021-02-09 | 2021-02-09 | 资源加锁的方法、计算设备及计算机存储介质 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN112905322B (zh) |
Families Citing this family (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN113704354B (zh) * | 2021-08-30 | 2023-10-20 | 康键信息技术(深圳)有限公司 | 一种数据同步方法及装置、计算机设备、存储介质 |
Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN103886109A (zh) * | 2014-04-18 | 2014-06-25 | 北京搜狐新媒体信息技术有限公司 | 一种实现数据库行锁的方法及装置 |
CN106681809A (zh) * | 2016-12-05 | 2017-05-17 | 上海斐讯数据通信技术有限公司 | 一种基于锁的线程管理方法及装置 |
CN107301091A (zh) * | 2016-04-14 | 2017-10-27 | 北京京东尚科信息技术有限公司 | 资源分配方法和装置 |
CN110413628A (zh) * | 2019-08-02 | 2019-11-05 | 北京字节跳动网络技术有限公司 | 数据处理方法、装置、设备及存储介质 |
US10606666B2 (en) * | 2010-07-30 | 2020-03-31 | International Business Machines Corporation | High performance locks |
Family Cites Families (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20040117372A1 (en) * | 2002-12-17 | 2004-06-17 | Bulent Kasman | System and method for controlling access to system resources |
US8863140B2 (en) * | 2011-08-29 | 2014-10-14 | Oracle International Corporation | Method for resource management allocating and freeing credits from and to a resource credit tree |
-
2021
- 2021-02-09 CN CN202110176524.6A patent/CN112905322B/zh active Active
Patent Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US10606666B2 (en) * | 2010-07-30 | 2020-03-31 | International Business Machines Corporation | High performance locks |
CN103886109A (zh) * | 2014-04-18 | 2014-06-25 | 北京搜狐新媒体信息技术有限公司 | 一种实现数据库行锁的方法及装置 |
CN107301091A (zh) * | 2016-04-14 | 2017-10-27 | 北京京东尚科信息技术有限公司 | 资源分配方法和装置 |
CN106681809A (zh) * | 2016-12-05 | 2017-05-17 | 上海斐讯数据通信技术有限公司 | 一种基于锁的线程管理方法及装置 |
CN110413628A (zh) * | 2019-08-02 | 2019-11-05 | 北京字节跳动网络技术有限公司 | 数据处理方法、装置、设备及存储介质 |
Non-Patent Citations (2)
Title |
---|
"TSP: A Threads Scheduling Policy for Hierarchical Locks in Multiple Applications Scenario";Pengfei Zhao等;《2018 IEEE 9th International Conference on Software Engineering and Service Science (ICSESS)》;20190311;第861-864页 * |
"基于ZooKeeper的分布式同步框架设计与实现";黄毅斐;《中国优秀硕士学位论文全文数据库 信息科技辑》;20140215(第02期);第I137-45页 * |
Also Published As
Publication number | Publication date |
---|---|
CN112905322A (zh) | 2021-06-04 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN108897628B (zh) | 一种分布式锁的实现方法、装置及电子设备 | |
CN109788068B (zh) | 心跳状态信息上报方法、装置和设备及计算机存储介质 | |
US8190857B2 (en) | Deleting a shared resource node after reserving its identifier in delete pending queue until deletion condition is met to allow continued access for currently accessing processor | |
US20120089734A1 (en) | Allocation of resources between web services in a composite service | |
CN107181636B (zh) | 一种负载均衡系统中的健康检查方法及装置 | |
CN113342507B (zh) | 一种分布式锁服务实现方法、装置及计算机设备 | |
CN112905322B (zh) | 资源加锁的方法、计算设备及计算机存储介质 | |
CN111163140A (zh) | 资源获取和分配的方法、装置和计算机可读存储介质 | |
CN110990136B (zh) | 一种任务处理方法和任务调度器 | |
US11252121B2 (en) | Message sending method and terminal device | |
CN108846085B (zh) | 一种id生成方法、装置、电子设备及系统 | |
CN109257256A (zh) | 设备监控方法、装置、计算机设备及存储介质 | |
CN117614797A (zh) | 数据采集系统和方法 | |
CN111614701B (zh) | 一种分布式集群、以及容器状态切换方法、装置 | |
CN110955460A (zh) | 一种服务进程启动方法、装置、电子设备和存储介质 | |
CN111367921A (zh) | 数据对象的刷新方法及装置 | |
CN115292023A (zh) | 定时任务处理方法及装置 | |
CN115809150A (zh) | 一种分布式死锁检测方法、装置及电子设备 | |
CN113886349B (zh) | 计费系统参数装载共享方法、装置及计算设备 | |
CN111209304B (zh) | 数据处理方法、装置及系统 | |
CN116257366A (zh) | 一种锁管理方法、装置及系统 | |
CN110502460B (zh) | 数据处理的方法和节点 | |
CN111221847B (zh) | 监控数据存储方法、装置及计算机可读存储介质 | |
CN113342511A (zh) | 一种分布式任务管理系统及方法 | |
CN113239059A (zh) | 一种分布式锁的切换方法、装置、服务器和存储介质 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant |