共享资源访问方法、装置及计算机可读取存储介质与流程

文档序号:17662372发布日期:2019-05-15 22:28阅读:201来源:国知局
共享资源访问方法、装置及计算机可读取存储介质与流程

本发明涉及资源共享技术领域,具体而言,涉及共享资源访问方法、装置及计算机可读取存储介质。



背景技术:

随着分布式系统越来越成熟,其应用于大型系统的优势也愈发明显。对于分布式系统而言,内部数据资源数据等的一致性依然是被重点关注的问题。特别是,多个分布式部署的设备在协调执行任务过程中需要同步对一资源数据进行访问处理时,如果无法保障资源数据的一致,就很容易出现故障。

采用分布式锁是解决分布式系统中物理上分离的设备之间同步访问共享资源的一种有效方案。其原理为,只要得到分布式锁的设备才能对共享资源进行访问操作。目前,数据库锁是分布式锁的主要形式,其利用数据库的互斥功能实现,具体地,通过数据库中创建一张锁表,在共享资源被使用时,使用设备会在数据库的锁表中增加一条记录,表明该共享资源的分布式锁已被取走。此时,其他设备访问锁表就无法取得分布式锁,进而暂时不能访问使用共享资源。未取到分布式锁的其他设备会循环反复的访问锁表,直到使用设备删除锁表中的记录释放出该分布式锁。虽然,一定程度上可以确保共享资源的一致性,但是在分布式锁被其他设备获得时,循环反复的访问锁表对性能消耗较大,不利用设备的稳定运行。另外,数据库作为单节点,一旦宕机,会导致业务系统不可用。



技术实现要素:

本发明实施例的目的在于提供一种共享资源访问方法、装置及计算机可读取存储介质,用于提供一种稳定性高的分布式公平锁,该分布式公平锁既可适用于分布式系统,又能保障锁的公平分配。确保分布式系统中共享资源一致性的同时降低性能消耗。

为了实现上述目的,本发明实施例采用的技术方案如下:

本发明实施例第一方面提供了一种共享资源访问方法,应用于访问设备,所述访问设备与分布式管理集群通信连接,所述共享资源访问方法包括:在需要请求共享资源时,向所述分布式管理集群发送创建指示消息,所述创建指示消息用于指示在指定目录下创建第一控制节点;其中,所述指定目录与所述共享资源对应;若所述指定目录下存在与所述第一控制节点对应的第二控制节点,对所述第二控制节点进行监听;其中,所述第二控制节点为所述指定目录中存在且创建时间在所述第一控制节点之前的控制节点;当监听到所述第二控制节点在所述指定目录下被销毁时,获取所述共享资源的分布式公平锁。

本发明实施例第二方面提供了一种共享资源访问装置,应用于访问设备,所述访问设备与分布式管理集群通信连接,所述共享资源访问装置包括:发送模块、监听模块及获取模块。其中,发送模块,用于在需要访问共享资源时,向所述分布式管理集群发送创建指示消息,所述创建指示消息用于指示在指定目录下创建第一控制节点;其中,所述指定目录与所述共享资源对应;监听模块,用于若所述指定目录下存在与所述第一控制节点对应的第二控制节点,对所述第二控制节点进行监听;其中,所述第二控制节点为所述指定目录中存在且创建时间在所述第一控制节点之前的控制节点;获取模块,用于当监听到所述第二控制节点在所述指定目录下被销毁时,获取所述共享资源的分布式公平锁。

本发明实施例第三方面提供一种程序产品,例如计算机可读取存储介质,包括程序,该程序在被处理器执行时用于执行以上第一方面的方法。

相对现有技术,本发明实施例提供的一种共享资源访问方法通过将访问设备与用于管理分布式公平锁的分布式管理集群通信连接,在访问设备需要访问共享资源时,向分布式管理集群发送用于指示在指定目录下创建第一控制节点的指示消息,该指定目录与请求的共享资源关联,采用创建的第一控制节点代替访问设备在指定目录下排队等待获取分布式公平锁,避免在共享资源对应的分布式公平锁被其他设备占用时,循环访问,有效的降低性能消耗。并在监听到指定目录中存在且创建时间在第一控制节点之前的控制节点被销毁时,获取到分布式公平锁,以便基于该锁对共享资源进行访问,通过保障获取分布公平锁的有序性,确保共享资源在分布式系统中的一致性。另外,多节点组成的分布式管理集群,运行更加可靠,提高整个业务系统的稳定性。

为使本发明的上述目的、特征和优点能更明显易懂,下文特举实施例,并配合所附附图,作详细说明如下。

附图说明

为了更清楚地说明本发明实施例的技术方案,下面将对实施例中所需要使用的附图作简单地介绍,应当理解,以下附图仅示出了本发明的某些实施例,因此不应被看作是对范围的限定,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他相关的附图。

图1示出了本发明实施例提供的一种应用场景图。

图2示出了本发明实施例提供的访问设备的方框示意图。

图3示出了本发明实施例提供的共享资源访问方法的步骤流程图。

图4为图3中步骤s103的子步骤流程图。

图5示出了本发明实施例提供的共享资源访问方法的步骤流程图的另一部分。

图6示出了本发明实施例提供的分布式管理集群为etcd集群时该共享资源访问方法的步骤流程图。

图7示出了本发明实施例提供的共享资源访问装置的结构示意图。

图8为图7中监听模块的功能子模块示意图。

图标:100-访问设备;101-存储器;102-通信接口;103-处理器;104-总线;200-资源存储节点;300-分布式管理集群;400-共享资源访问装置;401-发送模块;402-监听模块;4021-调用子模块;4022-确认子模块;4023-接收子模块;4024-确定子模块;403-获取模块;404-销毁模块;405-排序模块;406-确认模块。

具体实施方式

下面将结合本发明实施例中附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。通常在此处附图中描述和示出的本发明实施例的组件可以以各种不同的配置来布置和设计。因此,以下对在附图中提供的本发明的实施例的详细描述并非旨在限制要求保护的本发明的范围,而是仅仅表示本发明的选定实施例。基于本发明的实施例,本领域技术人员在没有做出创造性劳动的前提下所获得的所有其他实施例,都属于本发明保护的范围。

应注意到:相似的标号和字母在下面的附图中表示类似项,因此,一旦某一项在一个附图中被定义,则在随后的附图中不需要对其进行进一步定义和解释。同时,在本发明的描述中,术语“第一”、“第二”等仅用于区分描述,而不能理解为指示或暗示相对重要性。

相关技术中,分布式系统可能会采用数据库锁的形式来实现公平锁,例如利用数据库的互斥功能,在数据库中创建一张锁表,然后通过数据库来实现互斥锁。当访问设备需要获取到分布式锁对某一资源或者方法进行操作时,就在数据库中增加一条记录,表明该锁已被取走,对应的资源或者方法已经被占用,并在结束对该资源或者方法的占用后,通过删除锁表中记录的方式释放该分布式锁。

上述用于管理分布式锁的数据库属于单节点,一旦数据库宕机,会导致业务系统不可用。同时,占用分布式锁的时间没有限制,一旦获取锁的设备崩溃,就会导致锁被占用一直记录在数据库中,其他设备再也无法获取锁,造成死锁。另外,需要获得锁的其他设备会循环尝试访问锁表,以期取得锁,但循环的访问,会大大增加系统性能损耗,不利于该分布式系统的稳定运行。

因此,本发明实施例提供了一种共享资源访问方法、装置及计算机可读取存储介质,用于改善上述问题。

请参照图1,图1示出了本发明实施例提供的共享资源访问方法的应用场景图。图1中所示的访问设备100、资源存储节点200分别与分布式管理集群300电性连接。访问设备100与资源存储节点200之间也通信连接。

上述访问设备100可以包括一分布式系统中的工作设备,也可以是任何可以连接分布式管理集群300的独立设备。可以理解的是,上述访问设备100可以包括多台,多台访问设备100可以包括属于同一分布式系统中的多台工作设备,可以包括属于不同分布式系统但均可以访问上述资源存储节点200的工作设备。

上述资源存储节点200可以是用于存储一组或多组共享资源的服务器或工作站。上述资源存储节点200可以包括一个或者多个。需要说明的是,上述共享资源可以是在多个访问设备100之间共享的资源,即每个访问设备100均可访问、占用、操作的数据、程序方法、系统资源等。

上述分布式管理集群300可以由多个服务节点组成,分布式管理集群300与访问设备100通信连接。具体地,分布式管理集群300可以向外界提供多类功能接口,例如,观察接口、控制节点创建接口、控制节点删除接口、集群管理相关接口等。访问设备100可以通过与功能接口通信,以指示分布式管理集群300实现对应的功能。

分布式管理集群300可以用于管理上述资源存储节点200中每一个共享资源对应的分布式公平锁。可以理解的是,分布式管理集群300虽然由多个服务节点组成,但于访问设备100而言,分布式管理集群300可以是一个整体。需要说明的是,上述分布式公平锁既适用于分布式系统,又能保障锁的公平分配。

作为一种实施方式,上述分布式管理集群300可以是高可用的分布式键值数据库etcd集群。上述etcd集群是一个分布式一致性k-v存储系统,可用于服务发现与共享配置,具有以下优点:简单,支持rest风格的http+jsonapi访问;安全,支持https方式的访问;快速,10000/秒的写性能;可靠,分布式结构,且基于raft的一致性算法。上述etcd集群可应用于配置管理、服务注册与发现、应用调度、分布式队列、分布式锁等应用场景。同时,etcd集群具备强大的容错性能,有效地保证了高可用。

当然在其他实施例中,上述分布式管理集群300还可以采用其他分布式键值存储集群,对此并不做限定。

请参照图2,图2示出了本发明实施例提供的访问设备100的方框示意图。访问设备100可以是,但不限于个人电脑(personalcomputer,pc)、服务器、分布式部署的计算机等等。可以理解的是,访问设备100也不限于物理服务器,还可以是物理服务器上的虚拟机、基于云平台上构建的虚拟机等能提供与所述服务器或者虚拟机有相同功能的计算机。

访问设备100的操作系统可以是,但不限于,windows系统、linux系统等。上述访问设备100包括存储器101、通信接口102、处理器103和总线104,所述存储器101、通信接口102和处理器103通过总线104连接,处理器103用于执行存储器101中存储的可执行模块,例如计算机程序。其中,存储器101可能包含高速随机存取存储器(ram:randomaccessmemory),也可能还包括非不稳定的存储器(non-volatilememory),例如至少一个磁盘存储器。通过至少一个通信接口102(可以是有线或者无线)实现该访问设备100与外部设备之间的通信连接。

总线104可以是isa总线104、pci总线104或eisa总线104等。图2中仅用一个双向箭头表示,但并不表示仅有一根总线104或一种类型的总线104。

其中,存储器101用于存储程序,例如图7所示的共享资源访问装置400。该共享资源访问装置400包括至少一个可以软件或固件(firmware)的形式存储于所述存储器101中或固化在所述访问设备100的操作系统(operatingsystem,os)中的软件功能模块。所述处理器103在接收到执行指令后,执行所述程序以实现本发明上述实施例揭示的共享资源访问方法。

处理器103可能是一种集成电路芯片,具有信号的处理能力。在实现过程中,上述方法的各步骤可以通过处理器103中的硬件的集成逻辑电路或者软件形式的指令完成。上述的处理器103可以是通用处理器103,包括中央处理器103(centralprocessingunit,简称cpu)、网络处理器103(networkprocessor,简称np)等;还可以是数字信号处理器103(dsp)、专用集成电路(asic)、现成可编程门阵列(fpga)或者其他可编程逻辑器件、分立门或者晶体管逻辑器件、分立硬件组件。

第一实施例

请参照图3,图3示出了本发明实施例提供的共享资源访问方法流程图,应用于访问设备100。处理方法包括以下步骤:

步骤s101,在需要访问共享资源时,向分布式管理集群300发送创建指示消息。

在本发明实施例中,上述访问共享资源的需求可以是响应用户操作产生,也可以是访问设备100执行预定业务过程中触发产生,还可以是访问设备100与其他设备之间进行数据交互的过程中被触发产生。访问设备100可以是生成一与被请求的共享资源对应的创建指示消息,并发送至分布式管理集群300。作为一种实施方式,可以是通过调用分布式管理集群300的接口,利用post方法向分布式管理集群300发送创建指示消息。

需要说明的是,上述创建指示消息可以用于指示分布式管理集群300在指定目录下创建并存储一控制节点,以作为发送该创建指令信息的访问设备100所对应的第一控制节点。

上述控制节点可以理解为具有关键字和键值的数据单元。例如,其可以是以数据表、注册项、子目录、配置文件、key节点等任意一种形式存在。创建控制节点的目的在于,替代对应的访问设备100在分布式管理集群300中排队等候获取分布式公平锁。

另外,指定目录可以是与被请求的共享资源关联的目录,可以理解的,每一个共享资源均可以在该分布式管理集群300中被分配一个唯一对应的指定目录,该指定目录下可以存储对应共享资源的控制节点。具体地,存在于指定目录下的控制节点既包括等待获取分布式公平锁的访问设备100所指示创建的节点,也包括正在使用分布式公平锁的访问设备100所创建的节点。

进一步地,本发明实施例中,分布式管理集群300在接收到访问设备100发送的创建指示消息后,依据创建指示信息创建该访问设备100对应的第一控制节点。具体地,可以先依据该创建指示消息中携带的被请求的共享资源的信息,查找对应的指定目录,可以理解的,上述对应的指定目录为该共享资源对应的目录。然后,于指定目录之下生成与该共享资源对应的key值。最后,基于创建指示消息中的有效时长信息及生成的key值创建该访问设备100的第一控制节点。

需要说明的是,分布式管理集群300每次在指定目录下生成的key值与相邻上一次于该指定目录下生成的key值之间按照预设间隔值递增,例如,以1为预设间隔值递增,如果分布式管理集群300上一次在指定目录下生成的key值为1,则本次在指定目录下生成的key值为2,下一次在指定目录下生成的key则为3,以此类推。也就是,访问设备100发送的创建指示消息指示创建的第一控制节点的key值与该分布式管理集群300在指定目录下创建的相邻上一个key值之间按照预设间隔值递增。

需要说明的是,上述创建指示消息中所包括的有效时长信息,可以用于指示第一控制节点的生存时间(timetolive,ttl)。也就是,指定目录下的每一个控制节点均具有一个ttl,避免控制节点对应的访问设备100出现异常时,长时间在指定目录下占位,影响后生成的控制节点获取分布式公平锁,甚至导致死锁现象。

步骤s102,若指定目录下存在与第一控制节点对应的第二控制节点,对第二控制节点进行监听。

在本发明实施例中,指定目录下创建的每一个控制节点均对应一ttl,在控制节点的ttl到期后,分布式管理集群300自动销毁该控制节点(简称为:ttl到期销毁),另外,得到分布式公平锁的访问设备100在结束对共享资源的操作后,也会主动销毁指定目录下对应的控制节点。因此,在指定目录下的控制节点在未被持续续期的前提下,都不会长期存在。进一步地,访问设备100在指示分布式管理集群300创建对应的第一控制节点后,还需确认当前对应的指定目录下是否存在与第一控制节点对应的第二控制节点。上述第二控制节点可以是当前指定目录中还存在且创建时间在第一控制节点之前的控制节点。

也就是,如果,在访问设备100的第一控制节点在指定目录下创建时,该指定目录内还未创建过控制节点或者是已创建的key点均已被销毁,则该指定目录下不存在该第一控制节点对应的第二控制节点。如果,在访问设备100的第一控制节点在指定目录下创建时,该指定目录内存在控制节点,则该指定目录下存在该第一控制节点对应的第二控制节点,且第二控制节点的创建时间在第一控制节点之前。在一种优选实施例中,上述第二控制节点可以是指定目录下创建时间早于第一控制节点且与第一控制节点的创建时间之间间隔最短的控制节点。当然在其他可能的实施例中,第二控制节点也可以是指定目录下还存在且创建时间早于第一控制节点的所有其他控制节点。

作为一种实施方式,在步骤s102之前,还可以包括以下步骤,用于确定指定目录是否存在对应的第二控制节点。具体地:

(1)获取指定目录下已存在的控制节点。

在本发明实施例中,第一控制节点创建完成后,访问设备100可以从分布式管理集群300中获取被请求共享资源对应的指定目录下已存在的所有的控制节点。当然,也可以是在第一控制节点创建完成后,由访问设备100接收分布式管理集群300反馈的指定目录下已存在的所有的控制节点。

(2)依据每个控制节点对应的key值,按照从小到大的顺序,对控制节点进行排序。

在本发明实施例中,访问设备100可以是先基于key值对获取到的控制节点,按照由小到大的顺序进行排序。并遍历排序后的控制节点,确定对应的第一控制节点所排位置。

(3)若存在排列于第一控制节点之前的控制节点,则将排列于第一控制节点前一位的所述控制节点作为第二控制节点。

在本发明实施例中,根据第一控制节点在排序后的控制节点中位置,判断是否存在第二控制节点。如果,第一控制节点在排序后的控制节点中排列于第一位,则表明该第一控制节点不存在对应的第二控制节点;如果,第一控制节点在排序后的控制节点中没有排列于第一位,则表明该第一控制节点存在对应的第二控制节点,且该第二控制节点被确定为排列于该第一控制节点前一位的控制节点。

进一步地,在确定存在对应的第二控制节点后,对第二控制节点进行监听。

在本发明实施例中,对第二控制节点进行监听的方式可以是:在确定第二控制节点后,请求分布式管理集群300在该第二控制节点发生状态变更时及时反馈给访问设备100。可以理解的,第二控制节点的状态变更可以包括被销毁或ttl续期。上述被销毁可以是指示创建该第二控制节点的访问设备100将其主动销毁,也可以是第二控制节点的ttl到期且未被续期的情况下,分布式管理集群300判定该第二控制节点失效,并将其销毁。上述ttl续期可以是指示创建第二控制节点的访问设备100在该控制节点ttl到期后,但未获取到分布式公平锁或者是还未结束对该分布式公平锁的使用,由访问设备100主动向分布式管理集群300请求延迟ttl的时长。

需要说明的是,分布式公平锁是一种先到先得的锁,因此,本发明实施例中,访问设备100只需要监测先于第一控制节点创建的第二控制节点的状态变更即可获悉是否具备取锁的资格,从而无需反复启动向分布式管理集群300请求对应的分布式公平锁,可以理解为,利用控制节点在分布式管理集群300中排队等待获取分布式公平锁。进而,有效的减少系统资源的占用,降低性能损耗。

当然,可以理解的是,如果访问设备100确定对应的第一控制节点不存在对应的第二控制节点,则说明该第一控制节点之前已不存在早于其创建的控制节点,此时,访问设备100则可以直接获取到对应的分布式公平锁。

下面以分布式管理集群300为etcd集群为例,描述对第二控制节点的监听步骤。如图4所示,对第二控制节点的监听步骤包括:

步骤s1021,调用分布式管理集群300的观察接口。

在本发明实施例中,上述观察接口可以是指etcd集群的watch接口。可选地,访问设备100在确定对应的第二控制节点后,直接调用watch接口。

步骤s1022,将获取的第二控制节点的变更事件作为对应的观察事件。

在本发明实施例中,etcd集群内创建的控制节点均对应一个变更事项参数,即modifiedindex。将第二控制节点的变更事件作为本次调用watch接口的观察事件,即作为watch接口的watchindex。此后,被调用的etcd集群的watch接口便开始监督第二控制节点的modifiedindex的变化。

步骤s1023,在观察接口监听到第二控制节点的状态变更时,接收所述etcd集群反馈的回传数据。

在本发明实施例中,第二控制节点的状态变更可以是第二控制节点被销毁或者被ttl续期。无论是通过哪一种方式使第二控制节点的状态变更,第二控制节点的modifiedindex均会发生变化。此时,持续对modifiedindex进行监听的watch接口被触发向访问设备100反馈回传数据。上述回传数据可以包括第二控制节点的状态变更信息,例如,可以是action字段。

步骤s1024,依据回传数据,确定第二控制节点的状态变更信息。

在本发明实施例中,访问设备100通过接受回传数据,从回传数据中第二控制节点的状态变更信息,确定第二控制节点的状态变化,从而起到对第二控制节点的监督。

需要说明的是,watch接口是一个阻塞接口,只有在被观察时间发生更改时,才会返回数据。同时,于访问设备100而言,从调用观察接口之后,到得到回传数据之前,无需执行任何获取分布式公平锁的动作,有效地降低对系统性能的消耗。

步骤s103,当监听到第二控制节点在指定目录下被销毁时,获取共享资源的分布式公平锁。

在本发明实施例中,访问设备100依据获得的回传数据中的事件变更信息,确定第二控制节点是否是被销毁。例如,回传数据中第二控制节点的action字段为delete(销毁)或expire(ttl到期销毁),则确定第二控制节点已被销毁。此时,表明创建时间早于第一控制节点的控制节点已不存在,访问设备100具备获取分布式公平锁的资格。

进一步地,当监听到第二控制节点的所述状态变更信息为所述ttl续期时,重复对所述第二控制节点进行监听,直至获取到分布式公平锁。可选地,上述重复对第二控制节点进行监听的步骤与步骤s102基本相同。例如,再次获取第二控制节点的modifiedindex,再度调用watch接口,并将新获取的modifiedindex作为本次调用watch接口的watchindex。从而实现继续利用watch接口阻塞式的继续监听第二控制节点。

通过上述步骤,实现了阻塞式的获取分布式公平锁,降低系统性能消耗,还确保了取锁过程的有序。同时,用于排序的控制节点均设置有ttl,避免出现锁死问题,提高管理分布式公平锁的效率。

进一步地,由于本发明实施例中,可以将存储共享资源的资源存储节点200与管理分布式公平锁的分布式管理集群300进行分离,使本发明实施例的应用范围更广,也更加易于推广。在访问设备100获取到期望使用的共享资源的分布式公平锁后,如图5所示,本发明实施例提供的共享资源访问方法还可以包括步骤:

步骤s104,向资源存储节点200发送访问请求。

在本发明实施例中,上述访问请求中携带获取到的分布式公平锁。通过携带该分布式公平锁的访问请求,访问设备100即可访问对应的资源存储节点200,并利用该分布式公平锁对资源存储节点200中存储的共享资源上锁,以便执行互斥任务。

步骤s105,访问共享资源后,主动销毁所述第一控制节点。

在本发明实施例中,在访问共享资源后,即完成基于共享资源的互斥任务作业后,访问设备100还需向分布式管理集群300主动请求撤销指定目录下的第一控制节点,从而对该共享资源对应的分布式公平锁进行释放。当然,即使此时访问设备100由于宕机等原因不能及时销毁对应的第一控制节点,在第一控制节点的ttl到期后,分布式管理集群300也会自动消除该第一控制节点,以释放该分布式公平锁。从而使,在该访问设备100之后创建控制节点的其他设备可以获取到该分布式公平。

可以理解的,上述分布式管理集群300的具体类型并不做限定,上述分布式管理集群300无论采用哪一种键值数据库搭建的集群,其运行原理均相同。优选地,上述分布式管理集群300可以是etcd集群。采用etcd集群支持创建控制节点时设置ttl,从而避免了因释放锁失败导致的分布式公平锁的死锁现象,etcd集群可以引应用raft算法,使构成etcd集群的各节点之间数据具有强一致性,同时也具备容错能力,在etcd集群的节点中出现部分宕机的情况下,也可保证分布式公平锁的稳定性。

接下来,为了对本发明实施例进一步地说明,下面以分布式管理集群300为预先搭建好的etcd集群为例,进行描述,如图6所示,本发明实施例提供的共享资源访问方法包括:

s1,获得到请求目标共享资源的访问请求。

s2,调用etcd集群中的接口,采用post方法在目标共享资源对应的指定目录下创建一key值,并赋予其ttl,以创建一控制节点作为对应的第一控制节点。该key值与etcd集群上一次在该指定目录下创建的key值之间按预设间隔值递增。

s3,从etcd集群获取目标共享资源对应的指定目录下存在的所有控制节点。

s4,对获取到的控制节点,按照对应的key值从小到大的顺序进行排序。

s5,遍历排序后的控制节点,确定第一控制节点所排列的位置。如果,第一控制节点排列于第一位,则流程进入s8;如果,第一控制节点未排列于第一位,则将排列于第一控制节点的前一位的控制节点作为第二控制节点,流程进入步骤s6。

s6,异步调用etcd集群的watch接口,将第二控制节点的modifiedindex作为watch接口的watchindex,以监听第二控制节点的状态变化。watch接口作为一个阻塞接口,会持续监听第二控制节点的modifiedindex是否发生变化,当监听到modifiedindex发生变化,即第二控制节点状态变更激活该watch接口,由watch接口执行回调函数将第二控制节点的状态变更信息(例如,action字段)作为回传数据反馈至访问设备100,流程进入步骤s7。

s7,接收到回传数据,进行解析,得到状态变更信息。如果状态变更信息为被消除,例如,action字段为delete(销毁)或expire(ttl到期销毁),流程进入步骤s8;如果状态变更信息不为被消除,取出node对象的modifiedindex,流程回到步骤s6。

s8,获取到目标共享资源对应的分布式公平锁。

s9,将携带分布式公平锁的访问请求发送至资源存储节点200,基于所述分布式公平锁和目标共享资源执行互斥任务。在互斥任务执行完毕后,流程进入步骤s10。

s10,释放该分布式公平锁。具体地,可以是删除指定目录下的第一控制节点。

第二实施例

请参照图7,图7示出了本发明实施例提供的共享资源访问装置400的方框示意图。共享资源访问装置400应用于访问设备100,其包括发送模块401、监听模块402、获取模块403和销毁模块404。

发送模块401,用于在需要访问共享资源时,向所述分布式管理集群300发送创建指示消息,所述创建指示消息用于指示在指定目录下创建第一控制节点;其中,所述指定目录与所述共享资源对应。

在本发明实施例中,上述步骤s101可以由发送模块401执行。

监听模块402,用于若所述指定目录下存在与所述第一控制节点对应的第二控制节点,对所述第二控制节点进行监听;其中,所述第二控制节点为所述指定目录中存在且创建时间在所述第一控制节点之前的控制节点。

在本发明实施例中,上述步骤s102可以由监听模块402执行。

可选地,在分布式管理集群300为etcd集群时,如图8所示,上述监听模块402可以包括以下功能子模块:

调用子模块4021,用于调用分布式管理集群300的观察接口。

在本发明实施例中,上述子步骤s1021可以由调用子模块4021执行。

确认子模块4022,用于将获取的第二控制节点的变更事件作为对应的观察事件。

在本发明实施例中,上述子步骤s1022可以由确认子模块4022执行。

接收子模块4023,用于在观察接口监听到第二控制节点的状态变更时,接收etcd集群反馈的回传数据。

在本发明实施例中,上述子步骤s1023可以由接收子模块4023执行。

确定子模块4024,用于依据回传数据,确定第二控制节点的状态变更信息。

在本发明实施例中,上述子步骤s1024可以由确定子模块4024执行。

优选地,上述监听模块402还用于当监听到第二控制节点的状态变更信息为ttl续期时,重复对所述第二控制节点进行监听。

获取模块403,还用于当监听到所述第二控制节点在所述指定目录下被销毁时,获取所述共享资源的分布式公平锁。

在本发明实施例中,上述步骤s103可以由获取模块403执行。可选地,获取模块403还可以用于在确定第一控制节点排列于第一位,即确定指定目录下不存在对应的第二控制节点,则直接获取所述共享资源的分布式公平锁。

进一步地,本发明实施例中,上述共享资源访问装置400还可以包括排序模块405和确认模块406。

可选地,上述获取模块403,还用于获取所述指定目录下已存在的控制节点。

可选地,上述排序模块405,用于依据每个所述控制节点对应的key值,按照从小到大的顺序,对所述控制节点进行排序。

可选地,上述确定模块,用于若存在排列于所述第一控制节点之前的所述控制节点,则将排列于所述第一控制节点前一位的所述控制节点作为所述第二控制节点。

所述获取模块403,还用于若所述第一控制节点排列于第一位,则获取所述共享资源的分布式公平锁。

发送模块401,还用于向资源存储节点200发送访问请求。需要说明的是,上述访问请求携带所述分布式公平锁,用于基于资源存储节点200中存储的共享资源执行互斥任务。

在本发明实施例中,上述步骤s104可以由发送模块401执行。

销毁模块404,用于在访问所述共享资源后,主动销毁第一控制节点。

在本发明实施例中,上述步骤s105可以由销毁模块404执行。

所属领域的技术人员可以清楚地了解到,为描述的方便和简洁,上述描述的装置的具体工作过程,可以参考前述方法实施例中的对应过程,在此不再赘述。

本发明实施例还揭示了一种计算机可读取存储介质,其上存储有计算机程序,所述计算机程序被处理器103执行时实现本发明前述实施例揭示的方法。

综上所述,本发明提供的一种共享资源访问方法、装置及计算机可读取存储介质。其中,所述共享资源访问方法应用于访问设备,所述访问设备与分布式管理集群通信连接,共享资源访问方法包括:在需要访问共享资源时,向所述分布式管理集群发送创建指示消息,所述创建指示消息用于指示在指定目录下创建第一控制节点;其中,所述指定目录与所述共享资源对应;若所述指定目录下存在与第一控制节点对应的第二控制节点,对所述第二控制节点进行监听;其中,所述第二控制节点为所述指定目录中存在且创建时间在所述第一控制节点之前的控制节点;当监听到所述第二控制节点在所述指定目录下被销毁时,获取所述共享资源的分布式公平锁。避免在共享资源对应的分布式公平锁被其他设备占用时,循环访问,有效的降低性能消耗,保障获取分布公平锁的有序性和高效,确保共享资源在分布式系统中的一致性。另外,多节点组成的分布式管理集群,运行更加可靠,提高整个业务系统的稳定性。

在本申请所提供的几个实施例中,应该理解到,所揭露的装置和方法,也可以通过其它的方式实现。以上所描述的装置实施例仅仅是示意性的,例如,附图中的流程图和框图显示了根据本发明的多个实施例的装置、方法和计算机程序产品的可能实现的体系架构、功能和操作。在这点上,流程图或框图中的每个方框可以代表一个模块、程序段或代码的一部分,所述模块、程序段或代码的一部分包含一个或多个用于实现规定的逻辑功能的可执行指令。也应当注意,在有些作为替换的实现方式中,方框中所标注的功能也可以以不同于附图中所标注的顺序发生。例如,两个连续的方框实际上可以基本并行地执行,它们有时也可以按相反的顺序执行,这依所涉及的功能而定。也要注意的是,框图和/或流程图中的每个方框、以及框图和/或流程图中的方框的组合,可以用执行规定的功能或动作的专用的基于硬件的系统来实现,或者可以用专用硬件与计算机指令的组合来实现。

另外,在本发明各个实施例中的各功能模块可以集成在一起形成一个独立的部分,也可以是各个模块单独存在,也可以两个或两个以上模块集成形成一个独立的部分。

所述功能如果以软件功能模块的形式实现并作为独立的产品销售或使用时,可以存储在一个计算机可读取存储介质中。基于这样的理解,本发明的技术方案本质上或者说对现有技术做出贡献的部分或者该技术方案的部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质中,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)执行本发明各个实施例所述方法的全部或部分步骤。而前述的存储介质包括:u盘、移动硬盘、只读存储器(rom,read-onlymemory)、随机存取存储器(ram,randomaccessmemory)、磁碟或者光盘等各种可以存储程序代码的介质。需要说明的是,在本文中,诸如第一和第二等之类的关系术语仅仅用来将一个实体或者操作与另一个实体或操作区分开来,而不一定要求或者暗示这些实体或操作之间存在任何这种实际的关系或者顺序。而且,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、物品或者设备不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、物品或者设备所固有的要素。在没有更多限制的情况下,由语句“包括一个……”限定的要素,并不排除在包括所述要素的过程、方法、物品或者设备中还存在另外的相同要素。

以上所述仅为本发明的优选实施例而已,并不用于限制本发明,对于本领域的技术人员来说,本发明可以有各种更改和变化。凡在本发明的精神和原则之内,所作的任何修改、等同替换、改进等,均应包含在本发明的保护范围之内。应注意到:相似的标号和字母在下面的附图中表示类似项,因此,一旦某一项在一个附图中被定义,则在随后的附图中不需要对其进行进一步定义和解释。

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