分布式锁生成方法、装置、计算机设备和可读存储介质与流程

文档序号:14426621阅读:122来源:国知局

本发明涉及计算机技术领域,具体而言,涉及一种分布式锁生成方法、一种分布式锁生成装置、一种计算机设备和一种计算机可读存储介质。



背景技术:

随着互联网应用的不断发展,越来越多的系统都面对着高并发、高性能、高可用的挑战。在高并发访问场景下,当出现多用户同时对一个资源的操作时,就需要可以对这个资源进行一段时间内的锁定,保证已获得资源的用户的顺利执行。

相关技术中,通过一个集中式的存储来保存对具体资源的锁,在每次进行对某个资源的锁定时,会在这个存储上进行检索核查,如果没有被其他人锁定,则创建锁并返回,如果已经被其他人锁定,则锁定失败,进行等待或退出,存在以下技术缺陷:这个集中式的存储将会是整个系统的瓶颈,在这个存储上的集中读写操作压力会很大,同时由于最终存储是集中式的,所以一旦集中式存储出现故障,整个业务也将完全中断。集中式的锁也无法水平扩展,无法利用多机集群的优势。



技术实现要素:

本发明旨在至少解决现有技术或相关技术中存在的技术问题之一。

为此,本发明的一个目的在于提供一种分布式锁生成方法。

本发明的另一个目的在于提供一种分布式锁生成装置。

本发明的再一个目的在于提供一种计算机设备。

本发明的又一个目的在于提供一种计算机可读存储介质。

为了实现上述目的,本发明的第一方面的技术方案提供了一种分布式锁生成方法,包括:获取对共享资源的锁定操作请求;当共享资源未被锁定时,根据锁定操作请求,生成第一锁定操作请求信息,并存储于对应的第一分布式节点;发送第一锁定操作请求信息至除第一分布式节点外的多个第二分布式节点并获取对应的第一反馈信息;基于一致性算法,根据第一反馈信息,确定是否生成对应的分布式锁,其中,第一锁定操作请求信息包括共享资源标识、第一分布式节点标识、提案号。

在该技术方案中,通过获取对共享资源的锁定操作请求,并在共享资源未被锁定时,根据锁定操作请求,生成第一锁定操作请求信息,并存储于对应的第一分布式节点,提高了第一锁定操作请求信息的有效性,减少了因共享资源已经被锁定,而导致的第一锁定操作请求信息无法对应的生成分布式锁现象的发生,节省资源,通过发送第一锁定操作请求信息至除第一分布式节点外的多个第二分布式节点并获取对应的第一反馈信息,实现了与其他分布式节点的协商来决定分布式锁的生成,减少了因不同的分布式节点同时生成对同一共享资源的分布式锁而导致的冲突、故障等问题,通过根据第一反馈信息,确定是否生成对应的分布式锁,实现了各个分布式节点自动协商来决定分布式锁的生成,一方面,减少了因单一的集中式锁故障导致的业务整体瘫痪问题,提高了扩展性和实时运行性能,提高了共享资源的利用效率,另一方面,减少了多个分布式节点的相同锁定操作请求被重复执行的问题,节省了资源,提升了服务器性能。

其中,第一锁定操作请求信息包括共享资源标识、第一分布式节点标识、提案号,具有唯一性,有利于实现各个分布式节点的自动协商。

在上述技术方案中,优选地,还包括:第二分布式节点在接收到第一锁定操作请求信息时,判断是否已存储与第一锁定操作请求信息中的共享资源标识相同的第二锁定操作请求信息;若判定未存储与第一锁定操作请求信息中的共享资源标识相同的第二锁定操作请求信息,则生成第一反馈信息为同意,并存储第一锁定操作请求信息;若判定已存储与第一锁定操作请求信息中的共享资源标识相同的第二锁定操作请求信息,则判断第二锁定操作请求信息的提案号是否大于第一锁定操作请求信息的提案号,若判定第二锁定操作请求信息的提案号大于第一锁定操作请求信息的提案号,则生成第一反馈信息为拒绝;若判定第二锁定操作请求信息的提案号小于第一锁定操作请求信息的提案号,则生成第一反馈信息为同意以及第二锁定操作请求信息。

在该技术方案中,通过第二分布式节点在接收到第一锁定操作请求信息时,判断是否已存储与第一锁定操作请求信息中的共享资源标识相同的第二锁定操作请求信息,并在判定未存储与第一锁定操作请求信息中的共享资源标识相同的第二锁定操作请求信息,则生成第一反馈信息为同意,并存储第一锁定操作请求信息,在判定已存储与第一锁定操作请求信息中的共享资源标识相同的第二锁定操作请求信息,则判断第二锁定操作请求信息的提案号是否大于第一锁定操作请求信息的提案号,减少了同一分布式节点同时同意多个对同一共享资源的锁定操作请求信息,减少了不同分布式节点同时生成对同一共享资源的分布式锁而导致的冲突、故障等问题。

通过在判定第二锁定操作请求信息的提案号大于第一锁定操作请求信息的提案号,则生成第一反馈信息为拒绝;在判定第二锁定操作请求信息的提案号小于第一锁定操作请求信息的提案号,则生成第一反馈信息为同意以及第二锁定操作请求信息,可以实现优先生成提案号小,也即提案时间早的锁定操作请求信息对应的分布式锁,减少了多个分布式节点的相同锁定操作请求被重复执行的问题,节省了资源,提升了服务器性能。

在上述任一项技术方案中,优选地,基于一致性算法,根据第一反馈信息,确定是否生成对应的分布式锁,包括:解析第一反馈信息,并统计第一反馈信息为同意的第二分布式节点的个数;若第一反馈信息为同意的第二分布式节点的个数大于第一预设阈值,则确定生成第一锁定操作请求信息相对应的分布式锁,并清除第一锁定操作请求信息;若第一反馈信息为同意的第二分布式节点的个数小于或等于第一预设阈值,则确定不生成对应的分布式锁,并清除第一锁定操作请求信息,其中,第一预设阈值大于分布式节点的数量的一半。

在该技术方案中,通过解析第一反馈信息,并统计第一反馈信息为同意的第二分布式节点的个数,在第一反馈信息为同意的第二分布式节点的个数大于第一预设阈值时,则确定生成第一锁定操作请求信息相对应的分布式锁,并清除第一锁定操作请求信息;在第一反馈信息为同意的第二分布式节点的个数小于或等于第一预设阈值时,则确定不生成对应的分布式锁,并清除第一锁定操作请求信息,实现了各个分布式节点自动协商来决定分布式锁的生成,减少了同一分布式节点同时同意多个对同一共享资源的锁定操作请求信息,减少了不同分布式节点同时生成对同一共享资源的分布式锁而导致的冲突、故障等问题。

其中,第一预设阈值大于分布式节点的数量的一半,也即在同意的分布式节点数超过半数时,才生成分布式锁。

另外,还可以在在同意的分布式节点数超过半数时,进行二次确认,在二次确定时,同意的分布式节点数依旧超过半数时,才生成分布式锁,进一步提高了分布式锁生成的准确性,进一步减少不同分布式节点同时生成对同一共享资源的分布式锁而导致的冲突、故障等问题,提升服务器的性能。

在上述任一项技术方案中,优选地,基于一致性算法,根据第一反馈信息,确定是否生成对应的分布式锁,包括:解析第一反馈信息,并确定第一反馈信息是否包含提案号小于第一锁定操作请求信息的第二锁定操作请求信息;当确定第一反馈信息包含第二锁定操作请求信息时,发送第二锁定操作请求信息至多个第二分布式节点,并获取对应的第二反馈信息;解析第二反馈信息,并统计第二反馈信息为同意的第二分布式节点的个数;若第二反馈信息为同意的第二分布式节点的个数大于第二预设阈值,则确定在第二锁定操作请求信息对应的分布式节点处生成相对应的分布式锁,并清除第一锁定操作请求信息和第二锁定操作请求信息;若第二反馈信息为同意的第二分布式节点的个数小于或等于第二预设阈值,则确定不生成分布式锁,并清除第一锁定操作请求信息和第二锁定操作请求信息。

在该技术方案中,通过解析第一反馈信息,并确定第一反馈信息是否包含提案号小于第一锁定操作请求信息的第二锁定操作请求信息,并在当确定第一反馈信息包含第二锁定操作请求信息时,发送第二锁定操作请求信息至多个第二分布式节点,并获取对应的第二反馈信息,有利于实现优先生成提案号小,也即提案时间早的锁定操作请求信息对应的分布式锁,通过解析第二反馈信息,并统计第二反馈信息为同意的第二分布式节点的个数;若第二反馈信息为同意的第二分布式节点的个数大于第二预设阈值,则确定在第二锁定操作请求信息对应的分布式节点处生成相对应的分布式锁,并清除第一锁定操作请求信息和第二锁定操作请求信息;若第二反馈信息为同意的第二分布式节点的个数小于或等于第二预设阈值,则确定不生成分布式锁,并清除第一锁定操作请求信息和第二锁定操作请求信息,进一步减少了多个分布式节点的相同锁定操作请求被重复执行的问题,节省了资源,提升了服务器性能。

需要说明的是,锁定操作请求信息是某个分布式节点在收到某个共享资源的锁定操作请求时,在该节点根据共享资源标识和按照递增或者其他规律生成的分布式锁的id值,以及当前的时间作为提案号,再加上该分布式节点的标识,一般为ip,而形成的唯一的具有代表性的标识信息。

在上述任一项技术方案中,优选地,一致性算法包括paxos算法、lamport算法、gossip算法。

本发明第二方面的技术方案提出了一种分布式锁生成装置,包括:获取单元,用于获取对共享资源的锁定操作请求;生成单元,用于当共享资源未被锁定时,根据锁定操作请求,生成第一锁定操作请求信息,并存储于对应的第一分布式节点;发送单元,用于发送第一锁定操作请求信息至除第一分布式节点外的多个第二分布式节点并获取对应的第一反馈信息;确定单元,用于基于一致性算法,根据第一反馈信息,确定是否生成对应的分布式锁,其中,第一锁定操作请求信息包括共享资源标识、第一分布式节点标识、提案号。

在该技术方案中,通过获取对共享资源的锁定操作请求,并在共享资源未被锁定时,根据锁定操作请求,生成第一锁定操作请求信息,并存储于对应的第一分布式节点,提高了第一锁定操作请求信息的有效性,减少了因共享资源已经被锁定,而导致的第一锁定操作请求信息无法对应的生成分布式锁现象的发生,节省资源,通过发送第一锁定操作请求信息至除第一分布式节点外的多个第二分布式节点并获取对应的第一反馈信息,实现了与其他分布式节点的协商来决定分布式锁的生成,减少了因不同的分布式节点同时生成对同一共享资源的分布式锁而导致的冲突、故障等问题,通过根据第一反馈信息,确定是否生成对应的分布式锁,实现了各个分布式节点自动协商来决定分布式锁的生成,一方面,减少了因单一的集中式锁故障导致的业务整体瘫痪问题,提高了扩展性和实时运行性能,提高了共享资源的利用效率,另一方面,减少了多个分布式节点的相同锁定操作请求被重复执行的问题,节省了资源,提升了服务器性能。

其中,第一锁定操作请求信息包括共享资源标识、第一分布式节点标识、提案号,具有唯一性,有利于实现各个分布式节点的自动协商。

在上述技术方案中,优选地,还包括:判断单元,用于第二分布式节点在接收到第一锁定操作请求信息时,判断是否已存储与第一锁定操作请求信息中的共享资源标识相同的第二锁定操作请求信息;生成单元还用于:若判定未存储与第一锁定操作请求信息中的共享资源标识相同的第二锁定操作请求信息,则生成第一反馈信息为同意,并存储第一锁定操作请求信息;判断单元还用于:若判定已存储与第一锁定操作请求信息中的共享资源标识相同的第二锁定操作请求信息,则判断第二锁定操作请求信息的提案号是否大于第一锁定操作请求信息的提案号,生成单元还用于:若判定第二锁定操作请求信息的提案号大于第一锁定操作请求信息的提案号,则生成第一反馈信息为拒绝;生成单元还用于:若判定第二锁定操作请求信息的提案号小于第一锁定操作请求信息的提案号,则生成第一反馈信息为同意以及第二锁定操作请求信息。

在该技术方案中,通过第二分布式节点在接收到第一锁定操作请求信息时,判断是否已存储与第一锁定操作请求信息中的共享资源标识相同的第二锁定操作请求信息,并在判定未存储与第一锁定操作请求信息中的共享资源标识相同的第二锁定操作请求信息,则生成第一反馈信息为同意,并存储第一锁定操作请求信息,在判定已存储与第一锁定操作请求信息中的共享资源标识相同的第二锁定操作请求信息,则判断第二锁定操作请求信息的提案号是否大于第一锁定操作请求信息的提案号,减少了同一分布式节点同时同意多个对同一共享资源的锁定操作请求信息,减少了不同分布式节点同时生成对同一共享资源的分布式锁而导致的冲突、故障等问题。

通过在判定第二锁定操作请求信息的提案号大于第一锁定操作请求信息的提案号,则生成第一反馈信息为拒绝;在判定第二锁定操作请求信息的提案号小于第一锁定操作请求信息的提案号,则生成第一反馈信息为同意以及第二锁定操作请求信息,可以实现优先生成提案号小,也即提案时间早的锁定操作请求信息对应的分布式锁,减少了多个分布式节点的相同锁定操作请求被重复执行的问题,节省了资源,提升了服务器性能。

在上述任一项技术方案中,优选地,还包括:第一解析单元,用于解析第一反馈信息,并统计第一反馈信息为同意的第二分布式节点的个数;确定单元还用于:若第一反馈信息为同意的第二分布式节点的个数大于第一预设阈值,则确定生成第一锁定操作请求信息相对应的分布式锁,并清除第一锁定操作请求信息;确定单元还用于:若第一反馈信息为同意的第二分布式节点的个数小于或等于第一预设阈值,则确定不生成对应的分布式锁,并清除第一锁定操作请求信息,其中,第一预设阈值大于分布式节点的数量的一半。

在该技术方案中,通过解析第一反馈信息,并统计第一反馈信息为同意的第二分布式节点的个数,在第一反馈信息为同意的第二分布式节点的个数大于第一预设阈值时,则确定生成第一锁定操作请求信息相对应的分布式锁,并清除第一锁定操作请求信息;在第一反馈信息为同意的第二分布式节点的个数小于或等于第一预设阈值时,则确定不生成对应的分布式锁,并清除第一锁定操作请求信息,实现了各个分布式节点自动协商来决定分布式锁的生成,减少了同一分布式节点同时同意多个对同一共享资源的锁定操作请求信息,减少了不同分布式节点同时生成对同一共享资源的分布式锁而导致的冲突、故障等问题。

其中,第一预设阈值大于分布式节点的数量的一半,也即在同意的分布式节点数超过半数时,才生成分布式锁。

另外,还可以在在同意的分布式节点数超过半数时,进行二次确认,在二次确定时,同意的分布式节点数依旧超过半数时,才生成分布式锁,进一步提高了分布式锁生成的准确性,进一步减少不同分布式节点同时生成对同一共享资源的分布式锁而导致的冲突、故障等问题,提升服务器的性能。

在上述任一项技术方案中,优选地,还包括:第二解析单元,用于解析第一反馈信息,并确定第一反馈信息是否包含提案号小于第一锁定操作请求信息的第二锁定操作请求信息;发送单元还用于:当确定第一反馈信息包含第二锁定操作请求信息时,发送第二锁定操作请求信息至多个第二分布式节点,并获取对应的第二反馈信息;第二解析单元还用于:解析第二反馈信息,并统计第二反馈信息为同意的第二分布式节点的个数;确定单元还用于:若第二反馈信息为同意的第二分布式节点的个数大于第二预设阈值,则确定在第二锁定操作请求信息对应的分布式节点处生成相对应的分布式锁,并清除第一锁定操作请求信息和第二锁定操作请求信息;确定单元还用于:若第二反馈信息为同意的第二分布式节点的个数小于或等于第二预设阈值,则确定不生成分布式锁,并清除第一锁定操作请求信息和第二锁定操作请求信息。

在该技术方案中,通过解析第一反馈信息,并确定第一反馈信息是否包含提案号小于第一锁定操作请求信息的第二锁定操作请求信息,并在当确定第一反馈信息包含第二锁定操作请求信息时,发送第二锁定操作请求信息至多个第二分布式节点,并获取对应的第二反馈信息,有利于实现优先生成提案号小,也即提案时间早的锁定操作请求信息对应的分布式锁,通过解析第二反馈信息,并统计第二反馈信息为同意的第二分布式节点的个数;若第二反馈信息为同意的第二分布式节点的个数大于第二预设阈值,则确定在第二锁定操作请求信息对应的分布式节点处生成相对应的分布式锁,并清除第一锁定操作请求信息和第二锁定操作请求信息;若第二反馈信息为同意的第二分布式节点的个数小于或等于第二预设阈值,则确定不生成分布式锁,并清除第一锁定操作请求信息和第二锁定操作请求信息,进一步减少了多个分布式节点的相同锁定操作请求被重复执行的问题,节省了资源,提升了服务器性能。

需要说明的是,锁定操作请求信息是某个分布式节点在收到某个共享资源的锁定操作请求时,在该节点根据共享资源标识和按照递增或者其他规律生成的分布式锁的id值,以及当前的时间作为提案号,再加上该分布式节点的标识,一般为ip,而形成的唯一的具有代表性的标识信息。

在上述任一项技术方案中,优选地,一致性算法包括paxos算法、lamport算法、gossip算法。

本发明的第三方面的技术方案提出了一种计算机设备,计算机设备包括处理器,处理器用于执行存储器中存储的计算机程序时实现如上述本发明的第一方面的技术方案提出的任一项的分布式锁生成方法的步骤。

在该技术方案中,计算机设备包括处理器,处理器用于执行存储器中存储的计算机程序时实现如上述本发明的第一方面的技术方案提出的任一项的分布式锁生成方法的步骤,因此具有上述本发明的第一方面的技术方案提出的任一项的分布式锁生成方法的全部有益效果,在此不再赘述。

本发明的第四方面的技术方案提出了一种计算机可读存储介质,其上存储有计算机程序,计算机程序被处理器执行时实现本发明的第一方面的技术方案提出的任一项的分布式锁生成方法的步骤。

在该技术方案中,计算机可读存储介质,其上存储有计算机程序,计算机程序被处理器执行时实现本发明的第一方面的技术方案提出的任一项的分布式锁生成方法的步骤,因此具有上述本发明的第一方面的技术方案提出的任一项的分布式锁生成方法的全部有益效果,在此不再赘述。

本发明的附加方面和优点将在下面的描述部分中给出,部分将从下面的描述中变得明显,或通过本发明的实践了解到。

附图说明

本发明的上述和/或附加的方面和优点从结合下面附图对实施例的描述中将变得明显和容易理解,其中:

图1示出了根据本发明的一个实施例的分布式锁生成方法的流程示意图;

图2示出了根据本发明的一个实施例的分布式锁生成装置的结构示意图;

图3示出了根据本发明的另一个实施例的分布式锁生成方法的流程示意图。

具体实施方式

为了能够更清楚地理解本发明的上述目的、特征和优点,下面结合附图和具体实施方式对本发明进行进一步的详细描述。需要说明的是,在不冲突的情况下,本申请的实施例及实施例中的特征可以相互组合。

在下面的描述中阐述了很多具体细节以便于充分理解本发明,但是,本发明还可以采用其他不同于在此描述的其他方式来实施,因此,本发明的保护范围并不受下面公开的具体实施例的限制。

实施例1

图1示出了根据本发明的一个实施例的分布式锁生成方法的流程示意图。

如图1所示,根据本发明的实施例的分布式锁生成方法,包括:步骤s102,获取对共享资源的锁定操作请求;步骤s104,当共享资源未被锁定时,根据锁定操作请求,生成第一锁定操作请求信息,并存储于对应的第一分布式节点;步骤s106,发送第一锁定操作请求信息至除第一分布式节点外的多个第二分布式节点并获取对应的第一反馈信息;步骤s108,基于一致性算法,根据第一反馈信息,确定是否生成对应的分布式锁,其中,第一锁定操作请求信息包括共享资源标识、第一分布式节点标识、提案号。

在该实施例中,通过获取对共享资源的锁定操作请求,并在共享资源未被锁定时,根据锁定操作请求,生成第一锁定操作请求信息,并存储于对应的第一分布式节点,提高了第一锁定操作请求信息的有效性,减少了因共享资源已经被锁定,而导致的第一锁定操作请求信息无法对应的生成分布式锁现象的发生,节省资源,通过发送第一锁定操作请求信息至除第一分布式节点外的多个第二分布式节点并获取对应的第一反馈信息,实现了与其他分布式节点的协商来决定分布式锁的生成,减少了因不同的分布式节点同时生成对同一共享资源的分布式锁而导致的冲突、故障等问题,通过根据第一反馈信息,确定是否生成对应的分布式锁,实现了各个分布式节点自动协商来决定分布式锁的生成,一方面,减少了因单一的集中式锁故障导致的业务整体瘫痪问题,提高了扩展性和实时运行性能,提高了共享资源的利用效率,另一方面,减少了多个分布式节点的相同锁定操作请求被重复执行的问题,节省了资源,提升了服务器性能。

其中,第一锁定操作请求信息包括共享资源标识、第一分布式节点标识、提案号,具有唯一性,有利于实现各个分布式节点的自动协商。

在上述实施例中,优选地,还包括:第二分布式节点在接收到第一锁定操作请求信息时,判断是否已存储与第一锁定操作请求信息中的共享资源标识相同的第二锁定操作请求信息;若判定未存储与第一锁定操作请求信息中的共享资源标识相同的第二锁定操作请求信息,则生成第一反馈信息为同意,并存储第一锁定操作请求信息;若判定已存储与第一锁定操作请求信息中的共享资源标识相同的第二锁定操作请求信息,则判断第二锁定操作请求信息的提案号是否大于第一锁定操作请求信息的提案号,若判定第二锁定操作请求信息的提案号大于第一锁定操作请求信息的提案号,则生成第一反馈信息为拒绝;若判定第二锁定操作请求信息的提案号小于第一锁定操作请求信息的提案号,则生成第一反馈信息为同意以及第二锁定操作请求信息。

在该实施例中,通过第二分布式节点在接收到第一锁定操作请求信息时,判断是否已存储与第一锁定操作请求信息中的共享资源标识相同的第二锁定操作请求信息,并在判定未存储与第一锁定操作请求信息中的共享资源标识相同的第二锁定操作请求信息,则生成第一反馈信息为同意,并存储第一锁定操作请求信息,在判定已存储与第一锁定操作请求信息中的共享资源标识相同的第二锁定操作请求信息,则判断第二锁定操作请求信息的提案号是否大于第一锁定操作请求信息的提案号,减少了同一分布式节点同时同意多个对同一共享资源的锁定操作请求信息,减少了不同分布式节点同时生成对同一共享资源的分布式锁而导致的冲突、故障等问题。

通过在判定第二锁定操作请求信息的提案号大于第一锁定操作请求信息的提案号,则生成第一反馈信息为拒绝;在判定第二锁定操作请求信息的提案号小于第一锁定操作请求信息的提案号,则生成第一反馈信息为同意以及第二锁定操作请求信息,可以实现优先生成提案号小,也即提案时间早的锁定操作请求信息对应的分布式锁,减少了多个分布式节点的相同锁定操作请求被重复执行的问题,节省了资源,提升了服务器性能。

在上述任一项实施例中,优选地,基于一致性算法,根据第一反馈信息,确定是否生成对应的分布式锁,包括:解析第一反馈信息,并统计第一反馈信息为同意的第二分布式节点的个数;若第一反馈信息为同意的第二分布式节点的个数大于第一预设阈值,则确定生成第一锁定操作请求信息相对应的分布式锁,并清除第一锁定操作请求信息;若第一反馈信息为同意的第二分布式节点的个数小于或等于第一预设阈值,则确定不生成对应的分布式锁,并清除第一锁定操作请求信息,其中,第一预设阈值大于分布式节点的数量的一半。

在该实施例中,通过解析第一反馈信息,并统计第一反馈信息为同意的第二分布式节点的个数,在第一反馈信息为同意的第二分布式节点的个数大于第一预设阈值时,则确定生成第一锁定操作请求信息相对应的分布式锁,并清除第一锁定操作请求信息;在第一反馈信息为同意的第二分布式节点的个数小于或等于第一预设阈值时,则确定不生成对应的分布式锁,并清除第一锁定操作请求信息,实现了各个分布式节点自动协商来决定分布式锁的生成,减少了同一分布式节点同时同意多个对同一共享资源的锁定操作请求信息,减少了不同分布式节点同时生成对同一共享资源的分布式锁而导致的冲突、故障等问题。

其中,第一预设阈值大于分布式节点的数量的一半,也即在同意的分布式节点数超过半数时,才生成分布式锁。

另外,还可以在在同意的分布式节点数超过半数时,进行二次确认,在二次确定时,同意的分布式节点数依旧超过半数时,才生成分布式锁,进一步提高了分布式锁生成的准确性,进一步减少不同分布式节点同时生成对同一共享资源的分布式锁而导致的冲突、故障等问题,提升服务器的性能。

在上述任一项实施例中,优选地,基于一致性算法,根据第一反馈信息,确定是否生成对应的分布式锁,包括:解析第一反馈信息,并确定第一反馈信息是否包含提案号小于第一锁定操作请求信息的第二锁定操作请求信息;当确定第一反馈信息包含第二锁定操作请求信息时,发送第二锁定操作请求信息至多个第二分布式节点,并获取对应的第二反馈信息;解析第二反馈信息,并统计第二反馈信息为同意的第二分布式节点的个数;若第二反馈信息为同意的第二分布式节点的个数大于第二预设阈值,则确定在第二锁定操作请求信息对应的分布式节点处生成相对应的分布式锁,并清除第一锁定操作请求信息和第二锁定操作请求信息;若第二反馈信息为同意的第二分布式节点的个数小于或等于第二预设阈值,则确定不生成分布式锁,并清除第一锁定操作请求信息和第二锁定操作请求信息。

在该实施例中,通过解析第一反馈信息,并确定第一反馈信息是否包含提案号小于第一锁定操作请求信息的第二锁定操作请求信息,并在当确定第一反馈信息包含第二锁定操作请求信息时,发送第二锁定操作请求信息至多个第二分布式节点,并获取对应的第二反馈信息,有利于实现优先生成提案号小,也即提案时间早的锁定操作请求信息对应的分布式锁,通过解析第二反馈信息,并统计第二反馈信息为同意的第二分布式节点的个数;若第二反馈信息为同意的第二分布式节点的个数大于第二预设阈值,则确定在第二锁定操作请求信息对应的分布式节点处生成相对应的分布式锁,并清除第一锁定操作请求信息和第二锁定操作请求信息;若第二反馈信息为同意的第二分布式节点的个数小于或等于第二预设阈值,则确定不生成分布式锁,并清除第一锁定操作请求信息和第二锁定操作请求信息,进一步减少了多个分布式节点的相同锁定操作请求被重复执行的问题,节省了资源,提升了服务器性能。

需要说明的是,锁定操作请求信息是某个分布式节点在收到某个共享资源的锁定操作请求时,在该节点根据共享资源标识和按照递增或者其他规律生成的分布式锁的id值,以及当前的时间作为提案号,再加上该分布式节点的标识,一般为ip,而形成的唯一的具有代表性的标识信息。

在上述任一项实施例中,优选地,一致性算法包括paxos算法、lamport算法、gossip算法。

实施例2

图2示出了根据本发明的一个实施例的分布式锁生成装置200的结构示意图。

如图2所示,根据本发明的实施例的分布式锁生成装置200,包括:获取单元202,用于获取对共享资源的锁定操作请求;生成单元204,用于当共享资源未被锁定时,根据锁定操作请求,生成第一锁定操作请求信息,并存储于对应的第一分布式节点;发送单元206,用于发送第一锁定操作请求信息至除第一分布式节点外的多个第二分布式节点并获取对应的第一反馈信息;确定单元208,用于基于一致性算法,根据第一反馈信息,确定是否生成对应的分布式锁,其中,第一锁定操作请求信息包括共享资源标识、第一分布式节点标识、提案号。

在该实施例中,通过获取对共享资源的锁定操作请求,并在共享资源未被锁定时,根据锁定操作请求,生成第一锁定操作请求信息,并存储于对应的第一分布式节点,提高了第一锁定操作请求信息的有效性,减少了因共享资源已经被锁定,而导致的第一锁定操作请求信息无法对应的生成分布式锁现象的发生,节省资源,通过发送第一锁定操作请求信息至除第一分布式节点外的多个第二分布式节点并获取对应的第一反馈信息,实现了与其他分布式节点的协商来决定分布式锁的生成,减少了因不同的分布式节点同时生成对同一共享资源的分布式锁而导致的冲突、故障等问题,通过根据第一反馈信息,确定是否生成对应的分布式锁,实现了各个分布式节点自动协商来决定分布式锁的生成,一方面,减少了因单一的集中式锁故障导致的业务整体瘫痪问题,提高了扩展性和实时运行性能,提高了共享资源的利用效率,另一方面,减少了多个分布式节点的相同锁定操作请求被重复执行的问题,节省了资源,提升了服务器性能。

其中,第一锁定操作请求信息包括共享资源标识、第一分布式节点标识、提案号,具有唯一性,有利于实现各个分布式节点的自动协商。

在上述实施例中,优选地,还包括:判断单元210,用于第二分布式节点在接收到第一锁定操作请求信息时,判断是否已存储与第一锁定操作请求信息中的共享资源标识相同的第二锁定操作请求信息;生成单元204还用于:若判定未存储与第一锁定操作请求信息中的共享资源标识相同的第二锁定操作请求信息,则生成第一反馈信息为同意,并存储第一锁定操作请求信息;判断单元210还用于:若判定已存储与第一锁定操作请求信息中的共享资源标识相同的第二锁定操作请求信息,则判断第二锁定操作请求信息的提案号是否大于第一锁定操作请求信息的提案号,生成单元204还用于:若判定第二锁定操作请求信息的提案号大于第一锁定操作请求信息的提案号,则生成第一反馈信息为拒绝;生成单元204还用于:若判定第二锁定操作请求信息的提案号小于第一锁定操作请求信息的提案号,则生成第一反馈信息为同意以及第二锁定操作请求信息。

在该实施例中,通过第二分布式节点在接收到第一锁定操作请求信息时,判断是否已存储与第一锁定操作请求信息中的共享资源标识相同的第二锁定操作请求信息,并在判定未存储与第一锁定操作请求信息中的共享资源标识相同的第二锁定操作请求信息,则生成第一反馈信息为同意,并存储第一锁定操作请求信息,在判定已存储与第一锁定操作请求信息中的共享资源标识相同的第二锁定操作请求信息,则判断第二锁定操作请求信息的提案号是否大于第一锁定操作请求信息的提案号,减少了同一分布式节点同时同意多个对同一共享资源的锁定操作请求信息,减少了不同分布式节点同时生成对同一共享资源的分布式锁而导致的冲突、故障等问题。

通过在判定第二锁定操作请求信息的提案号大于第一锁定操作请求信息的提案号,则生成第一反馈信息为拒绝;在判定第二锁定操作请求信息的提案号小于第一锁定操作请求信息的提案号,则生成第一反馈信息为同意以及第二锁定操作请求信息,可以实现优先生成提案号小,也即提案时间早的锁定操作请求信息对应的分布式锁,减少了多个分布式节点的相同锁定操作请求被重复执行的问题,节省了资源,提升了服务器性能。

在上述任一项实施例中,优选地,还包括:第一解析单元212,用于解析第一反馈信息,并统计第一反馈信息为同意的第二分布式节点的个数;确定单元208还用于:若第一反馈信息为同意的第二分布式节点的个数大于第一预设阈值,则确定生成第一锁定操作请求信息相对应的分布式锁,并清除第一锁定操作请求信息;确定单元208还用于:若第一反馈信息为同意的第二分布式节点的个数小于或等于第一预设阈值,则确定不生成对应的分布式锁,并清除第一锁定操作请求信息,其中,第一预设阈值大于分布式节点的数量的一半。

在该实施例中,通过解析第一反馈信息,并统计第一反馈信息为同意的第二分布式节点的个数,在第一反馈信息为同意的第二分布式节点的个数大于第一预设阈值时,则确定生成第一锁定操作请求信息相对应的分布式锁,并清除第一锁定操作请求信息;在第一反馈信息为同意的第二分布式节点的个数小于或等于第一预设阈值时,则确定不生成对应的分布式锁,并清除第一锁定操作请求信息,实现了各个分布式节点自动协商来决定分布式锁的生成,减少了同一分布式节点同时同意多个对同一共享资源的锁定操作请求信息,减少了不同分布式节点同时生成对同一共享资源的分布式锁而导致的冲突、故障等问题。

其中,第一预设阈值大于分布式节点的数量的一半,也即在同意的分布式节点数超过半数时,才生成分布式锁。

另外,还可以在在同意的分布式节点数超过半数时,进行二次确认,在二次确定时,同意的分布式节点数依旧超过半数时,才生成分布式锁,进一步提高了分布式锁生成的准确性,进一步减少不同分布式节点同时生成对同一共享资源的分布式锁而导致的冲突、故障等问题,提升服务器的性能。

在上述任一项实施例中,优选地,还包括:第二解析单元214,用于解析第一反馈信息,并确定第一反馈信息是否包含提案号小于第一锁定操作请求信息的第二锁定操作请求信息;发送单元206还用于:当确定第一反馈信息包含第二锁定操作请求信息时,发送第二锁定操作请求信息至多个第二分布式节点,并获取对应的第二反馈信息;第二解析单元214还用于:解析第二反馈信息,并统计第二反馈信息为同意的第二分布式节点的个数;确定单元208还用于:若第二反馈信息为同意的第二分布式节点的个数大于第二预设阈值,则确定在第二锁定操作请求信息对应的分布式节点处生成相对应的分布式锁,并清除第一锁定操作请求信息和第二锁定操作请求信息;确定单元208还用于:若第二反馈信息为同意的第二分布式节点的个数小于或等于第二预设阈值,则确定不生成分布式锁,并清除第一锁定操作请求信息和第二锁定操作请求信息。

在该实施例中,通过解析第一反馈信息,并确定第一反馈信息是否包含提案号小于第一锁定操作请求信息的第二锁定操作请求信息,并在当确定第一反馈信息包含第二锁定操作请求信息时,发送第二锁定操作请求信息至多个第二分布式节点,并获取对应的第二反馈信息,有利于实现优先生成提案号小,也即提案时间早的锁定操作请求信息对应的分布式锁,通过解析第二反馈信息,并统计第二反馈信息为同意的第二分布式节点的个数;若第二反馈信息为同意的第二分布式节点的个数大于第二预设阈值,则确定在第二锁定操作请求信息对应的分布式节点处生成相对应的分布式锁,并清除第一锁定操作请求信息和第二锁定操作请求信息;若第二反馈信息为同意的第二分布式节点的个数小于或等于第二预设阈值,则确定不生成分布式锁,并清除第一锁定操作请求信息和第二锁定操作请求信息,进一步减少了多个分布式节点的相同锁定操作请求被重复执行的问题,节省了资源,提升了服务器性能。

需要说明的是,锁定操作请求信息是某个分布式节点在收到某个共享资源的锁定操作请求时,在该节点根据共享资源标识和按照递增或者其他规律生成的分布式锁的id值,以及当前的时间作为提案号,再加上该分布式节点的标识,一般为ip,而形成的唯一的具有代表性的标识信息。

在上述任一项实施例中,优选地,一致性算法包括paxos算法、lamport算法、gossip算法。

实施例3

根据本发明的实施例的计算机设备,计算机设备包括处理器,处理器用于执行存储器中存储的计算机程序时实现如上述本发明的实施例提出的任一项的分布式锁生成方法的步骤。

在该实施例中,计算机设备包括处理器,处理器用于执行存储器中存储的计算机程序时实现如上述本发明的实施例提出的任一项的分布式锁生成方法的步骤,因此具有上述本发明的实施例提出的任一项的分布式锁生成方法的全部有益效果,在此不再赘述。

实施例4

根据本发明的实施例的计算机可读存储介质,其上存储有计算机程序,计算机程序被处理器执行时实现上述本发明的实施例提出的任一项的分布式锁生成方法的步骤。

在该实施例中,计算机可读存储介质,其上存储有计算机程序,计算机程序被处理器执行时实现上述本发明的实施例提出的任一项的分布式锁生成方法的步骤,因此具有上述本发明的实施例提出的任一项的分布式锁生成方法的全部有益效果,在此不再赘述。

实施例5

图3示出了根据本发明的另一个实施例的分布式锁生成方法的流程示意图。

如图3所示,根据本发明的另一个实施例的分布式锁生成方法,包括:步骤s302,任一分布式节点运行中;步骤s304,收到对某个共享资源的锁定操作请求;步骤s306,查看该共享资源是否已被其他程序锁定;如果为是,即该共享资源已被其他程序锁定,则执行步骤s302;如果为否,即该共享资源未被其他程序锁定,则执行步骤s308,启动分布式锁预生成;之后执行步骤s310,与其他分布式节点协商确定是否可以生成该分布式锁;如果为是,则执行步骤s312,生成分布式锁;如果为否,则执行步骤s302,任意分布式节点运行中,各个分布式节点自动协商来决定分布式锁的生成,减少了多个分布式节点的相同锁定操作请求被重复执行的问题,节省了资源,提升了服务器性能。

以上结合附图详细说明了本发明的技术方案,本发明提出了一种分布式锁生成方法、装置、计算机设备和可读存储介质,通过发送第一锁定操作请求信息至除第一分布式节点外的多个第二分布式节点并获取对应的第一反馈信息,实现各个分布式节点自动协商来决定分布式锁的生成,一方面,减少了因单一的集中式锁故障导致的业务整体瘫痪问题,提高了扩展性和实时运行性能,提高了共享资源的利用效率,另一方面,减少了多个分布式节点的相同锁定操作请求被重复执行的问题,节省了资源,提升了服务器性能。

本发明方法中的步骤可根据实际需要进行顺序调整、合并和删减。

本发明装置中的单元可根据实际需要进行合并、划分和删减。

本领域普通技术人员可以理解上述实施例的各种方法中的全部或部分步骤是可以通过程序来指令相关的硬件来完成,该程序可以存储于一计算机可读存储介质中,存储介质包括只读存储器(read-onlymemory,rom)、随机存储器(randomaccessmemory,ram)、可编程只读存储器(programmableread-onlymemory,prom)、可擦除可编程只读存储器(erasableprogrammablereadonlymemory,eprom)、一次可编程只读存储器(one-timeprogrammableread-onlymemory,otprom)、电子抹除式可复写只读存储器(electrically-erasableprogrammableread-onlymemory,eeprom)、只读光盘(compactdiscread-onlymemory,cd-rom)或其他光盘存储器、磁盘存储器、磁带存储器、或者能够用于携带或存储数据的计算机可读的任何其他介质。

以上所述仅为本发明的优选实施例而已,并不用于限制本发明,对于本领域的技术人员来说,本发明可以有各种更改和变化。凡在本发明的精神和原则之内,所作的任何修改、等同替换、改进等,均应包含在本发明的保护范围之内。

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