CN109257396A - 一种分布式锁调度方法及装置 - Google Patents
一种分布式锁调度方法及装置 Download PDFInfo
- Publication number
- CN109257396A CN109257396A CN201710564507.3A CN201710564507A CN109257396A CN 109257396 A CN109257396 A CN 109257396A CN 201710564507 A CN201710564507 A CN 201710564507A CN 109257396 A CN109257396 A CN 109257396A
- Authority
- CN
- China
- Prior art keywords
- service processes
- distributed lock
- identification information
- session
- scheduling process
- 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.)
- Granted
Links
Classifications
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L67/00—Network arrangements or protocols for supporting network services or applications
- H04L67/14—Session management
- H04L67/143—Termination or inactivation of sessions, e.g. event-controlled end of session
- H04L67/145—Termination or inactivation of sessions, e.g. event-controlled end of session avoiding end of session, e.g. keep-alive, heartbeats, resumption message or wake-up for inactive or interrupted session
-
- 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/52—Program synchronisation; Mutual exclusion, e.g. by means of semaphores
- G06F9/526—Mutual exclusion algorithms
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L67/00—Network arrangements or protocols for supporting network services or applications
- H04L67/14—Session management
Landscapes
- Engineering & Computer Science (AREA)
- Computer Networks & Wireless Communication (AREA)
- Signal Processing (AREA)
- Software Systems (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Health & Medical Sciences (AREA)
- Cardiology (AREA)
- General Health & Medical Sciences (AREA)
- Computer And Data Communications (AREA)
Abstract
本申请实施例公开了一种分布式锁调度方法及装置。所述方法包括:当服务进程启动时,创建与所述服务进程对应的分布式锁和会话;若所述服务进程发生故障,并与所述服务进程的调度进程断开连接,且,所述调度进程重新启动,并生成新的调度进程,则所述新的调度进程获取所述服务进程的所述标识信息;所述新的调度进程根据所述标识信息获取与所述标识信息相关联的至少一个分布式锁,并根据所述至少一个分布式锁获取与所述分布式锁相关联的至少一个历史会话,所述至少一个历史会话中包括所述会话。所述方法及装置实施例可以保证客户端的正常工作状态,以及保持其他业务客户端对分组数据访问服务的连续性。
Description
技术领域
本申请涉及互联网及云计算技术领域,特别涉及一种分布式锁调度方法及装置。
背景技术
在分布式一致性系统中,为了保证分布式数据的一致性,通常可以依赖分布式锁服务技术以解决分布在不同计算节点上的客户端进程访问共享资源的问题。分布式锁服务技术已广泛应用于大规模云计算场景中,典型的分布式锁服务技术是基于分布式一致性系统提供的临时文件(Ephemeral file)操作接口实现的。具体地,分布式锁“抢锁”的实现可以基于创建临时文件操作接口,分布式锁释放锁的实现则可以基于删除所述临时文件操作接口。
临时文件的归属性确保分布式锁的互斥性。分布式一致性服务器一般会在第一客户端进程创建临时文件时,记录所述第一客户端进程所对应的会话信息。当有第二客户端进程(第二客户端进程可以为与第一客户端进程步相同的任何客户端进程)尝试创建临时文件时,分布式一致性服务器可以判断所述临时文件归属的会话与所述第二客户端进程对应的会话是否匹配,当判断结果为不匹配时,可以确定所述第二客户端“争抢”分布式锁失败。
分布式一致性系统中的临时文件的生命期可以确保分布式锁的可用性。临时文件生命期可以为所述临时文件归属客户端进程所对应会话的时间段。具体地,所述临时文件生命期可以通过客户端进程与分布式一致性服务器之间的定期心跳更新。若客户端进程在客户端认定的会话有效时间内没有收到任何来自分布式一致性服务器的心跳包回复,则可以确定客户端进程所对应的会话超时,客户端进程丢失分布式锁。若分布式一致性服务器在服务器端认定的会话有效时间内没有接收到任何来自客户端进程的心跳包,则可以确定客户端进程所对应的会话超时,所述分布式一致性服务器可以删除分布式锁文件,释放该分布式锁的所有权。
在大规模云计算环境中,很多服务存在如下应用场景:例如在基于多线程处理技术的Master-Worker并行模式中,Master进程可以调度不同的Worker进程加载不同的分区(Partition)数据以提供并发的数据访问,进而提升分布式一致性系统的整体服务能力。为了避免同一个Partition被多个Worker进程同时加载而导致Partition中的数据被写坏的情况发生,每个被调度的Worker进程需要争抢对应Partition的分布式锁。Worker进程在获取Partition的分布式锁的所有权之后,才可以提供对所述Partition数据的具体访问服务,另外,Worker进程还可以在向Master进程发送定期心跳的同时发送服务状态信息。
实际的分布式并发环境往往复杂难控,如果Worker进程所在机器的写系统盘出现故障,很可能会出现如下情形:Worker进程与分布式一致性服务器之间心跳正常,即在会话超时前Worker进程总可以收到心跳包回复,因此Worker进程一直占据着Partition所对应的分布式锁,此时所述Worker进程发生“假死”事件。但是,所述Worker进程无法向Master进程发送服务状态信息,所述Worker进程加载的Partition数据的访问服务也因此而中断。
因此,现有技术中亟需一种能够在保证分布式锁正确性的前提下,支持Master进程重新调度分布式锁所有权的灵活机制。
发明内容
本申请实施例的目的在于提供一种分布式锁调度方法及装置,可以保证客户端的正常工作状态,以及保持其他业务客户端对分组数据访问服务的连续性。
本申请实施例提供的一种分布式锁调度方法及装置具体是这样实现的:
一种分布式锁调度方法,所述方法包括:
当服务进程启动时,创建与所述服务进程对应的分布式锁和会话,所述会话与所述分布式锁相关联,所述分布式锁与所述服务进程的标识信息相关联;
若所述服务进程发生故障,并与所述服务进程的调度进程断开连接,且,所述调度进程重新启动,并生成新的调度进程,则所述新的调度进程获取所述服务进程的所述标识信息;
所述新的调度进程根据所述标识信息获取与所述标识信息相关联的至少一个分布式锁,并根据所述至少一个分布式锁获取与所述分布式锁相关联的至少一个历史会话,所述至少一个历史会话中包括所述会话。
一种分布式锁调度装置,所述装置包括处理器以及用于存储处理器可执行指令的存储器,所述处理器执行所述指令时实现:
当服务进程启动时,创建与所述服务进程对应的分布式锁和会话,所述会话与所述分布式锁相关联,所述分布式锁与所述服务进程的标识信息相关联;
若所述服务进程发生故障,并与所述服务进程的调度进程断开连接,且,所述调度进程重新启动,并生成新的调度进程,则所述新的调度进程获取所述服务进程的所述标识信息;
所述新的调度进程根据所述标识信息获取与所述标识信息相关联的至少一个分布式锁,并根据所述至少一个分布式锁获取与所述分布式锁相关联的至少一个历史会话,所述至少一个历史会话中包括所述会话。
一种分布式锁调度装置,所述装置包括:
创建单元,用于当服务进程启动时,创建与所述服务进程对应的分布式锁和会话,所述会话与所述分布式锁相关联,所述分布式锁与所述服务进程的标识信息相关联;
标识信息获取单元,用于若所述服务进程发生故障,并与所述服务进程的调度进程断开连接,且,所述调度进程重新启动,并生成新的调度进程,则所述新的调度进程获取所述服务进程的所述标识信息;
历史会话获取单元,用于所述新的调度进程根据所述标识信息获取与所述标识信息相关联的至少一个分布式锁,并根据所述至少一个分布式锁获取与所述分布式锁相关联的至少一个历史会话,所述至少一个历史会话中包括所述会话。
一种数据处理方法,包括:
确认服务进程发生故障,其中,所述服务进程对应于分布式锁,所述分布式锁与所述服务进程的标识信息相关联;
获取与所述标识信息相关联的至少一个分布式锁;
释放所述至少一个分布式锁。
本申请提供的分布式锁调度方法及装置,可以在服务进程启动时,创建与所述服务进程对应的分布式锁,且所述分布式锁分别与所述服务进程的会话和标识信息相关联。这样,若在所述服务进程发生故障(如假死事件)之后,调度进程重新启动,则重启之后的新调度进程可以根据所述服务进程的标识信息从分布式服务器中获取所述服务进程的分布式锁,并根据所述分布式锁获取至少一个历史会话。后续地,将所述至少一个历史会话添加至布式一致性服务器的黑名单之后,可以释放所述子服务器分组数据所对应的分布式锁的所有权,让其他服务进程获取所述分组数据所对应的分布式锁的所有权,可以保证客户端的正常工作状态,以及保持其他业务客户端对分组数据访问服务的连续性。
附图说明
为了更清楚地说明本申请实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本申请中记载的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动性的前提下,还可以根据这些附图获得其他的附图。
图1是本申请提供的客户端与分布式一致性服务器端之间调度分布式锁的示意图;
图2是本申请提供的分布式锁调度方法的一种实施例的方法流程图;
图3是本申请提供的分布式锁调度装置的一种实施例的模块结构示意图
图4是本申请提供的分布式锁调度装置的另一种实施例的模块结构示意图。
具体实施方式
为了使本技术领域的人员更好地理解本申请中的技术方案,下面将结合本申请实施例中的附图,对本申请实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本申请一部分实施例,而不是全部的实施例。基于本申请中的实施例,本领域普通技术人员在没有作出创造性劳动前提下所获得的所有其他实施例,都应当属于本申请保护的范围。
为了能够清楚地说明本申请的技术方案,下面通过具体的场景介绍本申请的技术环境。
在大规模分布式系统的客户端,在进行大规模数据处理时,可以将大规模整体数据划分成多个分组数据后再进行处理,典型的分组技术例如可以包括分区(Partition)技术,即将大规模整体数据划分成多个分区数据。将大规模数据划分成多个分区数据之后,可以利用多线程数据处理技术处理所述分区数据,多线程数据处理技术的优点在于可以将大任务划分成若干个小任务并行执行,提高处理效率。在多线程数据处理技术中,可以包括调度进程和子线程,调度进程用于接收任务、分配任务以及保存任务处理结果,服务进程用于处理任务,并把处理结果返回给调度进程。典型的多线程数据处理技术例如可以包括Master-Worker模式,其中Master进程可以作为调度进程,用于接收任务、分配任务以及保存任务处理结果,Worker进程可以作为服务进程,用于处理任务,并把处理结果返回给Master进程。当然,在其他实施方式中,所述多线程处理技术还可以包括Future模式、Guarded Suspeionsion模式、不变模式、生产者-消费者模式等,本申请在此不做限制。
下面结合图1说明客户端与分布式一致性服务器端之间调度分布式锁的方式。
客户端的调度进程可以调度多个服务进程分别加载不同的分组数据协同提供并发数据访问服务。调度进程响应于接收到的业务访问请求,根据目标分组数据被调度到的服务进程,回复所述业务客户端应该访问的服务进程,从而将所述业务访问请求转移至服务进程处理,进而提升整个系统的处理能力。为了避免多个服务进程同时加载一个分组数据,而导致分组数据被写坏的情况。调度进程在调度服务进程加载某个分组数据提供访问服务时,该服务进程需要获取所述分组数据所对应的分布式锁的所有权。如图1所述,调度进程将分组数据A、分组数据B调度至服务进程2,服务进程2只有在争抢到分组数据A、分组数据B所对应的分布式锁的所有权之后,才可以全局唯一地提供分组数据A、分组数据B的数据访问服务。
如图1所示,为了确保在服务进程2异常退出时,调度进程可以继续调度其它服务进程加载分组数据A、分组数据B以提供持续的访问服务。一方面,处于正常状态的服务进程2可以通过发送心跳至分布式一致性服务器以及时更新会话有效时间,保持分布式锁的所有权。另一方面,服务进程2还可以定期向调度进程发送心跳,汇报当前的服务状态。当服务进程2因异常退出而停止服务之后,调度进程不再收到来自服务进程2的心跳,此时,调度进程可以将分组数据A和分组数据B调度至其它服务进程,而其它服务进程在获取分布式锁的所有权之后,可以加载分组数据A和分组数据B继续提供访问服务,保持服务的连续性。
服务进程在分布式锁服务上创建了分布式锁之后,可以获取分布式锁服务的一个会话,所述会话可以具有唯一性。当服务进程重新启动之后,会话可以发生改变。服务进程在与所述调度进程保持心跳过程中,可以将会话信息汇报给调度进程。
当图1所示的服务进程2所在机器的系统盘发生故障时,服务进程2与分布式一致性系统之间心跳正常,即在会话超时之前,服务进程2可以接收到分布式一致性系统的心跳包回复,因此,服务进程2一直占据着分组数据所对应的分布式锁。但是,服务进程2无法与所述调度进程保持正常心跳,也无法向调度进程发送服务状态,其加载的分组数据A和分组数据B的访问服务也因此而中断。此时,即使调度进程将分组数据A和分组数据B调度到其他服务进程上,也会因为其他服务进程获取不到分组数据A和分组数据B所对应的分布式锁而不能正常加载分组数据,导致服务中断。此时,由于服务进程2在与调度进程保持心跳过程中,曾将会话信息汇报给调度进程,因此,调度进程可以将服务进程2所对应的会话添加至分布式一致性服务器的黑名单中。分布式一致性服务器可以断开和服务进程2的心跳,导致会话超时,此时所述服务进程2上对应于分组数据A和分组数据B的分布式锁的所有权可以被释放。此后,其他服务进程则可以重新获取分组数据A和分组数据B的分布式锁的所有权,加载分组数据,并恢复服务。
但是,很多时候可能出现以下情况:当服务进程2发生故障时,调度进程在将服务进程2所对应的会话信息添加至分布式一致性服务器的黑名单之前发生了重启。由于重启之后的调度进程无法获取服务进程2曾发送的的心跳信息,因此也不能获取服务进程2对应的会话信息,此时将不能通过添加黑名单的方式来释放服务进程2上分布式锁的所有权。
本申请提供的技术方案能够即使在调度进程进行重启之后,也可以获取重启之前发生故障的服务进程所对应的会话信息。
下面结合附图对本申请所述的分布式锁调度方法进行详细的说明。图2是本申请提供的分布式锁调度方法的一种实施例的方法流程图。虽然本申请提供了如下述实施例或附图所示的方法操作步骤,但基于常规或者无需创造性的劳动在所述方法中可以包括更多或者更少的操作步骤。在逻辑性上不存在必要因果关系的步骤中,这些步骤的执行顺序不限于本申请实施例提供的执行顺序。所述方法在实际中的分布式锁调度过程中或者装置执行时,可以按照实施例或者附图所示的方法顺序执行或者并行执行(例如并行处理器或者多线程处理的环境)。
具体的本申请提供的一种分布式锁调度方法的一种实施例如图2所示,所述方法可以包括:
S21:当客户端的服务进程启动时,分布式锁服务器创建与所述服务进程对应的分布式锁和会话,所述会话与所述分布式锁相关联,所述分布式锁与所述服务进程的标识信息相关联。
本实施例中,可以在客户端的服务进程启动时,分布式锁服务器创建与所述服务进程对应的分布式锁和会话。所述分布式锁服务器可以包括具有数据信息处理功能的硬件设备和驱动该硬件设备工作所需的必要的软件。在一个实施例中,所述分布式锁服务器可以监测客户端的服务进程的事件,当监测到所述服务进程发生启动事件时,则执行创建与所述服务进程对应的分布式锁和会话的动作。在其他实施例中,所述分布式服务器可以提供预定端口,通过所述预定端口可以接收客户端发送的创建请求。当所述客户端的服务进程发生启动事件时,所述客户端或者所述服务进程可以通过所述预定端口向所述分布式服务器发送创建分布式锁的请求。所述分布式服务器在接收到所述请求之后,可以执行创建与所述服务进程对应的分布式锁和会话的动作。
本实施例中的所述分布式锁可以包括在所述分布式锁服务器创建的与所述服务进程的会话相关联的数据信息。在本实施例中,所述会话与所述分布式相关联,也就说,通过访问所述分布式锁对应的数据信息,可以获取所述服务进程的会话信息。而本申请的技术目的在于让重启之后的新调度进程能够获取到发生“假死”的服务进程的会话信息,在本实施例中,所述新调度进程可以通过所述分布式锁获取到所述服务进程的会话信息。因此,在本实施例中,可以设置所述分布式锁与所述服务进程的标识信息相关联。
在本申请的一个实施例中,所述标识信息可以唯一地标识所述服务进程,例如所述标识信息可以包括所述服务进程所在机器的标识信息。在一些实施例中,所述标识信息至少包括下述中的一种:主机名称、MAC地址、硬盘序列号、CPU序列号、BIOS编号等。当然,在其他实施例中,所述标识信息还可以包括任何能够标识所述服务进程的信息,本申请在此不做限制。
在本申请的一个实施例中,所述分布式锁与所述服务进程的标识信息相关联可以包括:
SS1:所述分布式锁的访问路径信息被设置为包含所述服务进程的标识信息。
本实施例中,可以将所述分布式锁的访问路径信息被设置为包含所述服务进程的标识信息。在一个具体的实施例中,所述访问路径信息例如可以包括所述分布式锁的命名,例如,可以在所述分布式锁的命名中包括所述服务进程所在机器的主机名称,例如可以将所述主机名称作为前缀添加至命名中,如所述分布式锁的命名可以被设置为:worker2_sdh6。通过所述命名可以访问到所述分布式锁中的数据信息。当然,在其他实施例中,所述访问路径信息还可以被设置为任何其他数据形式,本申请在此不做限制。
在本申请的一个实施例中,所述访问路径信息中还可以包括通用唯一识别码(UUID)。在分布式系统中,所述UUID可以作为标识信息,因此,将所述UUID设置于所述访问路径信息中,可以唯一地标识所述访问路径信息。这样,即使所述服务进程所在机器上还运行有其他多个服务进程,所述访问路径也可以唯一地定位到所述服务进程的分布式锁数据。在一个示例中,可以将所述UUID作为所述分布式锁命名的后缀,如所述分布式锁的命名可以被设置为:worker2_311c4343-3019-48b8-a3c8-4d7322692b2c。
S22:在所述服务进程发生假死事件之后,若所述客户端的调度进程重新启动,并生成新调度进程,则所述新调度进程获取所述服务进程的所述标识信息。
如上所述,所述服务进程可能会发生假死事件,此时,所述服务进程所在机器的系统盘可能发生故障。服务进程与分布式一致性系统之间心跳正常,即在会话超时之前,服务进程可以接收到分布式一致性系统的心跳包回复,因此,服务进程一直占据着分组数据所对应的分布式锁。但是,服务进程无法与所述调度进程保持正常心跳,也无法向调度进程发送服务状态信息,其加载的分组数据的访问服务也因此而中断。
若在所述服务进程发生假死事件之后,所述客户端的调度进程重新启动,并生成新调度进程。在现有技术中,此时,所述新调度进程无法获取所述服务进程曾发送的的心跳信息,因此也不能获取服务进程对应的会话信息。在本实施例中,生成新调度进程之后,所述新调度进程可以检查所述调度进程可以管理的服务进程,若所述新调度进程监测到与所述服务进程无法连上心跳,则所述新调度进程可以确定所述服务进程处于故障状态,需要释放所述服务进程对所述分组数据的分布式锁的所有权。此时,所述新调度进程需要获取所述服务进程的会话信息,因此,本实施例中,所述新调度进程可以获取所述服务进程的标识信息。由上述可知,所述标识信息与所述服务进程的分布式锁相关联,而所述服务进程的分布式锁与所述服务进程的会话相关联,因此,通过所述服务进程的标识信息可以获取得到所述服务进程的历史会话。
在本申请的一个实施例中,所述服务进程可能发生假死事件,但在所述服务进程与所述分布式一致性服务器之间的会话超时时,需要重启所述服务进程。由于每次重启所述服务进程之后,都会创建与所述服务进程相对应的分布式锁,本实施例中,可以在当所述服务进程与分布式一致性服务器的会话超时时,消除所述服务进程的分布式锁。这样,当所述新调度进程根据所述标识信息访问所述服务进程的分布式锁信息时,可以只定位到最近一次的分布式锁,提高访问效率。
S23:所述新调度进程根据所述标识信息从所述分布式锁服务器中获取与所述标识信息相关联的分布式锁,并根据所述分布式锁获取与所述分布式锁相关联的至少一个历史会话,所述至少一个历史会话中包括所述会话。
本实施例中,所述新调度进程可以根据所述标识信息从所述分布式锁服务器中获取与所述标识信息相关联的所述分布式锁。在一个实施例中,所述新调度进程可以根据所述标识信息获取以所述标识信息为前缀命名的访问路径信息,并根据所述访问路径信息访问所述分布式锁服务器,获取得到所述服务进程的分布式锁。在一些实施例中,所述分布式锁可以包括唯一的分布式锁。在其他实施例中,若所述服务进程在与分布式一致性服务器的会话超时之前进程重新启动,则所述新调度进程可以获取两个与所述标识信息相关联的分布式锁。
由于所述服务进程的分布式锁与所述服务进程的历史会话相关联,因此,可以根据所述分布式锁获取与所述分布式锁相关联的至少一个历史会话。
在获取与所述分布式锁相关联的至少一个历史会话之后,所述方法还可以包括:
SS2:将所述至少一个历史会话添加至分布式一致性服务器的黑名单中,以释放所述服务进程上分组数据所对应的分布式锁的所有权。
本实施例中,将所述至少一个历史会话添加至分布式一致性服务器的黑名单之后,所述分布式一致性系统可以释放所述服务进程分组数据所对应的分布式锁的所有权。需要说明的是,由于会话只能够使用一次,因此,所述服务进程在启动之后到下次重启之前,可能发生多次会话,即所述服务进程的分布式锁可以对应与多个历史会话。但是所述多个历史会话中往往只有最近一次的会话是有效的,其他都是无效的,而这些无效的历史会话为所述服务进程完成的会话,因此并不影响整个系统的可用性。
本申请提供的分布式锁调度方法,可以在服务进程启动时,创建与所述服务进程对应的分布式锁,且所述分布式锁分别与所述服务进程的会话和标识信息相关联。这样,若在所述服务进程发生故障(如假死事件)之后,调度进程重新启动,则重启之后的新调度进程可以根据所述服务进程的标识信息从分布式服务器中获取所述服务进程的分布式锁,并根据所述分布式锁获取至少一个历史会话。后续地,将所述至少一个历史会话添加至布式一致性服务器的黑名单之后,可以释放所述子服务器分组数据所对应的分布式锁的所有权,让其他服务进程获取所述分组数据所对应的分布式锁的所有权,可以保证客户端的正常工作状态,以及保持其他业务客户端对分组数据访问服务的连续性。
本申请另一方面还提供一种数据处理方法,所述方法可以包括:
SS-1:确认服务进程发生故障,其中,所述服务进程对应于分布式锁,所述分布式锁与所述服务进程的标识信息相关联;
SS-2:获取与所述标识信息相关联的至少一个分布式锁;
SS-3:释放所述至少一个分布式锁。
本实施例中,所述服务进程对应于分布式锁,所述分布式锁与所述服务进程的标识信息相关联。当确认所述服务进程发生故障时,如假死事件时,可以根据所述标识信息获取与所述标识信息相关联的至少一个分布式锁。在一个实施例中,所述分布式锁与所述服务进程的会话相关联,则根据所述服务进程的标识信息可以获取到所述服务进程的历史会话。根据所述历史会话,可以释放所述服务进程对所述至少一个分布式锁的所有权。具体的实施方式可以参考上述实施例步骤S21-S23,在此不再赘述。
本申请另一方面还提供一种分布式锁调度装置,图3是本申请提供的分布式锁调度装置的一种实施例的模块结构示意图。如图3所示,所述装置可以包括处理器以及用于存储处理器可执行指令的存储器,所述处理器执行所述指令时实现:
当服务进程启动时,创建与所述服务进程对应的分布式锁和会话,所述会话与所述分布式锁相关联,所述分布式锁与所述服务进程的标识信息相关联;
若所述服务进程发生故障,并与所述服务进程的调度进程断开连接,且,所述调度进程重新启动,并生成新的调度进程,则所述新的调度进程获取所述服务进程的所述标识信息;
所述新的调度进程根据所述标识信息获取与所述标识信息相关联的至少一个分布式锁,并根据所述至少一个分布式锁获取与所述分布式锁相关联的至少一个历史会话,所述至少一个历史会话中包括所述会话。
可选的,在本申请的一个实施例中,所述处理器在实现步骤根据所述分布式锁获取与所述分布式锁相关联的至少一个历史会话之后,还可以包括:
根据所述至少一个历史会话,释放所述服务进程对所述至少一个分布式锁的所有权。
可选的,在本申请的一个实施例中,所述标识信息可以包括所述服务进程所在机器的标识信息,所述标识信息至少可以包括下述中的一种:主机名称、MAC地址、硬盘序列号、CPU序列号、BIOS编号。
可选的,在本申请的一个实施例中,所述分布式锁与所述服务进程的标识信息相关联可以包括:
所述分布式锁的访问路径信息被设置为包含所述服务进程的标识信息。
可选的,在本申请的一个实施例中,所述访问路径信息中还可以包括通用唯一识别码。
可选的,在本申请的一个实施例中,所述处理器在实现步骤所述服务进程发生故障,并与所述服务进程的调度进程断开连接之后,还可以包括:
当所述服务进程的会话超时时,释放所述服务进程对分布式锁的所有权。
本申请另一方面还提供一种分布式锁调度装置,图4是本申请提供的分布式锁调度装置的一种实施例的模块结构示意图,如图4所示,所述装置40可以包括:
创建单元41,用于当服务进程启动时,创建与所述服务进程对应的分布式锁和会话,所述会话与所述分布式锁相关联,所述分布式锁与所述服务进程的标识信息相关联;
标识信息获取单元42,用于若所述服务进程发生故障,并与所述服务进程的调度进程断开连接,且,所述调度进程重新启动,并生成新的调度进程,则所述新的调度进程获取所述服务进程的所述标识信息;
历史会话获取单元43,用于所述新的调度进程根据所述标识信息获取与所述标识信息相关联的至少一个分布式锁,并根据所述至少一个分布式锁获取与所述分布式锁相关联的至少一个历史会话,所述至少一个历史会话中包括所述会话。
本申请提供的分布式锁调度装置,可以在服务进程启动时,创建与所述服务进程对应的分布式锁,且所述分布式锁分别与所述服务进程的会话和标识信息相关联。这样,若在所述服务进程发生故障(如假死事件)之后,调度进程重新启动,则重启之后的新调度进程可以根据所述服务进程的标识信息从分布式服务器中获取所述服务进程的分布式锁,并根据所述分布式锁获取至少一个历史会话。后续地,将所述至少一个历史会话添加至布式一致性服务器的黑名单之后,可以释放所述子服务器分组数据所对应的分布式锁的所有权,让其他服务进程获取所述分组数据所对应的分布式锁的所有权,可以保证客户端的正常工作状态,以及保持其他业务客户端对分组数据访问服务的连续性。
尽管本申请内容中提到实施例中的创建分布式锁、释放分布式锁所有权、访问路径信息设置的数据处理、设置描述,但是,本申请并不局限于必须是完全符合行业编程语言设计标准或实施例所描述的数据展示、处理的情况。某些页面设计语言或实施例描述的基础上略加修改后的实施方案也可以实行上述实施例相同、等同或相近、或变形后可预料的实施效果。当然,即使不采用上数据处理、设置的方式,只要符合本申请上述各实施例的创建分布式锁、释放分布式锁所有权、访问路径信息设置方式,仍然可以实现相同的申请,在此不再赘述。
虽然本申请提供了如实施例或流程图所述的方法操作步骤,但基于常规或者无创造性的手段可以包括更多或者更少的操作步骤。实施例中列举的步骤顺序仅仅为众多步骤执行顺序中的一种方式,不代表唯一的执行顺序。在实际中的装置或客户端产品执行时,可以按照实施例或者附图所示的方法顺序执行或者并行执行(例如并行处理器或者多线程处理的环境)。
上述实施例阐明的单元、装置,具体可以由计算机芯片或实体实现,或者由具有某种功能的产品来实现。为了描述的方便,描述以上装置时以功能分为各种模块分别描述。当然,在实施本申请时可以把各模块的功能在同一个或多个软件和/或硬件中实现。当然,本申请中所述的某一单元模块也可以将实现同一功能的模块由多个子模块或子模块的组合实现。
本领域技术人员也知道,除了以纯计算机可读程序代码方式实现控制器以外,完全可以通过将方法步骤进行逻辑编程来使得控制器以逻辑门、开关、专用集成电路、可编程逻辑控制器和嵌入微控制器等的形式来实现相同功能。因此这种控制器可以被认为是一种硬件部件,而对其内部包括的用于实现各种功能的装置也可以视为硬件部件内的结构。或者甚至,可以将用于实现各种功能的装置视为既可以是实现方法的软件模块又可以是硬件部件内的结构。
本申请可以在由计算机执行的计算机可执行指令的一般上下文中描述,例如程序模块。一般地,程序模块包括执行特定任务或实现特定抽象数据类型的例程、程序、对象、组件、数据结构、类等等。也可以在分布式计算环境中实践本申请,在这些分布式计算环境中,由通过通信网络而被连接的远程处理设备来执行任务。在分布式计算环境中,程序模块可以位于包括存储设备在内的本地和远程计算机存储介质中。
通过以上的实施方式的描述可知,本领域的技术人员可以清楚地了解到本申请可借助软件加必需的通用硬件平台的方式来实现。基于这样的理解,本申请的技术方案本质上或者说对现有技术做出贡献的部分可以以软件产品的形式体现出来,该计算机软件产品可以存储在存储介质中,如ROM/RAM、磁碟、光盘等,包括若干指令用以使得一台计算机设备(可以是个人计算机,移动终端,服务器,或者网络设备等)执行本申请各个实施例或者实施例的某些部分所述的方法。
本说明书中的各个实施例采用递进的方式描述,各个实施例之间相同或相似的部分互相参见即可,每个实施例重点说明的都是与其他实施例的不同之处。本申请可用于众多通用或专用的计算机系统环境或配置中。例如:个人计算机、服务器计算机、手持设备或便携式设备、平板型设备、多处理器系统、基于微处理器的系统、置顶盒、可编程的电子设备、网络PC、小型计算机、大型计算机、包括以上任何系统或设备的分布式计算环境等等。
虽然通过实施例描绘了本申请,本领域普通技术人员知道,本申请有许多变形和变化而不脱离本申请的精神,希望所附的权利要求包括这些变形和变化而不脱离本申请的精神。
Claims (15)
1.一种分布式锁调度方法,其特征在于,所述方法包括:
当服务进程启动时,创建与所述服务进程对应的分布式锁和会话,所述会话与所述分布式锁相关联,所述分布式锁与所述服务进程的标识信息相关联;
若所述服务进程发生故障,并与所述服务进程的调度进程断开连接,且,所述调度进程重新启动,并生成新的调度进程,则所述新的调度进程获取所述服务进程的所述标识信息;
所述新的调度进程根据所述标识信息获取与所述标识信息相关联的至少一个分布式锁,并根据所述至少一个分布式锁获取与所述分布式锁相关联的至少一个历史会话,所述至少一个历史会话中包括所述会话。
2.根据权利要求1所述的方法,其特征在于,在根据所述分布式锁获取与所述分布式锁相关联的至少一个历史会话之后,所述方法还包括:
根据所述至少一个历史会话,释放所述服务进程对所述至少一个分布式锁的所有权。
3.根据权利要求1所述的方法,其特征在于,所述标识信息包括所述服务进程所在机器的标识信息,所述标识信息至少包括下述中的一种:主机名称、MAC地址、硬盘序列号、CPU序列号、BIOS编号。
4.根据权利要求1或3所述的方法,其特征在于,所述分布式锁与所述服务进程的标识信息相关联包括:
所述分布式锁的访问路径信息被设置为包含所述服务进程的标识信息。
5.根据权利要求4所述的方法,其特征在于,所述访问路径信息中还包括通用唯一识别码。
6.根据权利要求1所述的方法,其特征在于,在所述服务进程发生故障,并与所述服务进程的调度进程断开连接之后,所述方法还包括:
当所述服务进程的会话超时时,释放所述服务进程对所述分布式锁的所有权。
7.一种分布式锁调度装置,其特征在于,所述装置包括处理器以及用于存储处理器可执行指令的存储器,所述处理器执行所述指令时实现:
当服务进程启动时,创建与所述服务进程对应的分布式锁和会话,所述会话与所述分布式锁相关联,所述分布式锁与所述服务进程的标识信息相关联;
若所述服务进程发生故障,并与所述服务进程的调度进程断开连接,且,所述调度进程重新启动,并生成新的调度进程,则所述新的调度进程获取所述服务进程的所述标识信息;
所述新的调度进程根据所述标识信息获取与所述标识信息相关联的至少一个分布式锁,并根据所述至少一个分布式锁获取与所述分布式锁相关联的至少一个历史会话,所述至少一个历史会话中包括所述会话。
8.根据权利要求7所述的装置,其特征在于,所述处理器在实现步骤根据所述分布式锁获取与所述分布式锁相关联的至少一个历史会话之后,还包括:
根据所述至少一个历史会话,释放所述服务进程对所述至少一个分布式锁的所有权。
9.根据权利要求7所述的装置,其特征在于,所述标识信息包括所述服务进程所在机器的标识信息,所述标识信息至少包括下述中的一种:主机名称、MAC地址、硬盘序列号、CPU序列号、BIOS编号。
10.根据权利要求7或9所述的装置,其特征在于,所述分布式锁与所述服务进程的标识信息相关联包括:
所述分布式锁的访问路径信息被设置为包含所述服务进程的标识信息。
11.根据权利要求10所述的装置,其特征在于,所述访问路径信息中还包括通用唯一识别码。
12.根据权利要求7所述的装置,其特征在于,所述处理器在实现步骤所述服务进程发生故障,并与所述服务进程的调度进程断开连接之后,还包括:
当所述服务进程的会话超时时,释放所述服务进程对分布式锁的所有权。
13.一种分布式锁调度装置,其特征在于,所述装置包括:
创建单元,用于当服务进程启动时,创建与所述服务进程对应的分布式锁和会话,所述会话与所述分布式锁相关联,所述分布式锁与所述服务进程的标识信息相关联;
标识信息获取单元,用于若所述服务进程发生故障,并与所述服务进程的调度进程断开连接,且,所述调度进程重新启动,并生成新的调度进程,则所述新的调度进程获取所述服务进程的所述标识信息;
历史会话获取单元,用于所述新的调度进程根据所述标识信息获取与所述标识信息相关联的至少一个分布式锁,并根据所述至少一个分布式锁获取与所述分布式锁相关联的至少一个历史会话,所述至少一个历史会话中包括所述会话。
14.一种数据处理方法,其特征在于,包括:
确认服务进程发生故障,其中,所述服务进程对应于分布式锁,所述分布式锁与所述服务进程的标识信息相关联;
获取与所述标识信息相关联的至少一个分布式锁;
释放所述至少一个分布式锁。
15.根据权利要求14所述的方法,其特征在于,所述服务进程对应于分布式锁是服务进程启动时所创建的。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201710564507.3A CN109257396B (zh) | 2017-07-12 | 2017-07-12 | 一种分布式锁调度方法及装置 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201710564507.3A CN109257396B (zh) | 2017-07-12 | 2017-07-12 | 一种分布式锁调度方法及装置 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN109257396A true CN109257396A (zh) | 2019-01-22 |
CN109257396B CN109257396B (zh) | 2021-07-09 |
Family
ID=65051059
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201710564507.3A Active CN109257396B (zh) | 2017-07-12 | 2017-07-12 | 一种分布式锁调度方法及装置 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN109257396B (zh) |
Cited By (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN110134522A (zh) * | 2019-04-04 | 2019-08-16 | 杭州抖音科技有限公司 | 一种带有心跳的分布式锁实现方法及系统 |
CN112035446A (zh) * | 2019-06-03 | 2020-12-04 | 北京沃东天骏信息技术有限公司 | 一种数据抽取的方法、装置及存储介质 |
CN113329047A (zh) * | 2020-02-29 | 2021-08-31 | 华为技术有限公司 | 一种分布式服务调度方法及相关装置 |
CN113726595A (zh) * | 2021-08-06 | 2021-11-30 | 视联动力信息技术股份有限公司 | 超时客户端的检测方法、装置、电子设备及存储介质 |
Citations (12)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20060167921A1 (en) * | 2004-11-29 | 2006-07-27 | Grebus Gary L | System and method using a distributed lock manager for notification of status changes in cluster processes |
CN102135929A (zh) * | 2010-01-21 | 2011-07-27 | 腾讯科技(深圳)有限公司 | 一种分布式容错服务系统 |
CN102164161A (zh) * | 2011-01-10 | 2011-08-24 | 清华大学 | 一种对并行文件系统进行文件布局提取的方法和装置 |
US20130174165A1 (en) * | 2011-12-29 | 2013-07-04 | Rajat Chopra | Fault tolerant distributed lock manager |
CN103716182A (zh) * | 2013-12-12 | 2014-04-09 | 中国科学院信息工程研究所 | 一种面向实时云平台的故障检测与容错方法及系统 |
CN104331327A (zh) * | 2014-12-02 | 2015-02-04 | 山东乾云启创信息科技有限公司 | 大规模虚拟化环境中任务调度的优化方法及优化系统 |
CN104702655A (zh) * | 2014-03-21 | 2015-06-10 | 杭州海康威视系统技术有限公司 | 云存储资源分配方法及其系统 |
CN106462544A (zh) * | 2014-03-31 | 2017-02-22 | 亚马逊科技公司 | 分布式存储系统中的会话管理 |
CN106572054A (zh) * | 2015-10-09 | 2017-04-19 | 阿里巴巴集团控股有限公司 | 分布式系统中分布式锁服务实现方法以及装置 |
CN106708608A (zh) * | 2015-11-16 | 2017-05-24 | 阿里巴巴集团控股有限公司 | 一种分布式锁服务方法、获取方法及相应装置 |
CN106790694A (zh) * | 2017-02-21 | 2017-05-31 | 广州爱九游信息技术有限公司 | 分布式系统及分布式系统中目标对象的调度方法 |
CN106921721A (zh) * | 2015-12-28 | 2017-07-04 | 华为软件技术有限公司 | 一种服务器、会话管理方法和系统 |
-
2017
- 2017-07-12 CN CN201710564507.3A patent/CN109257396B/zh active Active
Patent Citations (12)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20060167921A1 (en) * | 2004-11-29 | 2006-07-27 | Grebus Gary L | System and method using a distributed lock manager for notification of status changes in cluster processes |
CN102135929A (zh) * | 2010-01-21 | 2011-07-27 | 腾讯科技(深圳)有限公司 | 一种分布式容错服务系统 |
CN102164161A (zh) * | 2011-01-10 | 2011-08-24 | 清华大学 | 一种对并行文件系统进行文件布局提取的方法和装置 |
US20130174165A1 (en) * | 2011-12-29 | 2013-07-04 | Rajat Chopra | Fault tolerant distributed lock manager |
CN103716182A (zh) * | 2013-12-12 | 2014-04-09 | 中国科学院信息工程研究所 | 一种面向实时云平台的故障检测与容错方法及系统 |
CN104702655A (zh) * | 2014-03-21 | 2015-06-10 | 杭州海康威视系统技术有限公司 | 云存储资源分配方法及其系统 |
CN106462544A (zh) * | 2014-03-31 | 2017-02-22 | 亚马逊科技公司 | 分布式存储系统中的会话管理 |
CN104331327A (zh) * | 2014-12-02 | 2015-02-04 | 山东乾云启创信息科技有限公司 | 大规模虚拟化环境中任务调度的优化方法及优化系统 |
CN106572054A (zh) * | 2015-10-09 | 2017-04-19 | 阿里巴巴集团控股有限公司 | 分布式系统中分布式锁服务实现方法以及装置 |
CN106708608A (zh) * | 2015-11-16 | 2017-05-24 | 阿里巴巴集团控股有限公司 | 一种分布式锁服务方法、获取方法及相应装置 |
CN106921721A (zh) * | 2015-12-28 | 2017-07-04 | 华为软件技术有限公司 | 一种服务器、会话管理方法和系统 |
CN106790694A (zh) * | 2017-02-21 | 2017-05-31 | 广州爱九游信息技术有限公司 | 分布式系统及分布式系统中目标对象的调度方法 |
Non-Patent Citations (2)
Title |
---|
田昊: "基于Zookeeper的分布式锁服务及性能优化", 《计算机研究与发展》 * |
黄毅斐: "基于ZooKeeper的分布式同步框架设计与实现", 《信息科技辑》 * |
Cited By (8)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN110134522A (zh) * | 2019-04-04 | 2019-08-16 | 杭州抖音科技有限公司 | 一种带有心跳的分布式锁实现方法及系统 |
CN112035446A (zh) * | 2019-06-03 | 2020-12-04 | 北京沃东天骏信息技术有限公司 | 一种数据抽取的方法、装置及存储介质 |
CN112035446B (zh) * | 2019-06-03 | 2024-04-19 | 北京沃东天骏信息技术有限公司 | 一种数据抽取的方法、装置及存储介质 |
CN113329047A (zh) * | 2020-02-29 | 2021-08-31 | 华为技术有限公司 | 一种分布式服务调度方法及相关装置 |
CN113329047B (zh) * | 2020-02-29 | 2023-04-18 | 华为技术有限公司 | 一种分布式服务调度方法及相关装置 |
US11831713B2 (en) | 2020-02-29 | 2023-11-28 | Huawei Technologies Co., Ltd. | Distributed service scheduling method and related apparatus |
CN113726595A (zh) * | 2021-08-06 | 2021-11-30 | 视联动力信息技术股份有限公司 | 超时客户端的检测方法、装置、电子设备及存储介质 |
CN113726595B (zh) * | 2021-08-06 | 2024-03-19 | 视联动力信息技术股份有限公司 | 超时客户端的检测方法、装置、电子设备及存储介质 |
Also Published As
Publication number | Publication date |
---|---|
CN109257396B (zh) | 2021-07-09 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US9960964B2 (en) | System, method and apparatus to manage services in a network | |
CN109257396A (zh) | 一种分布式锁调度方法及装置 | |
US20090177914A1 (en) | Clustering Infrastructure System and Method | |
CN108563502A (zh) | 一种任务调度方法和装置 | |
CN106817408B (zh) | 一种分布式服务器集群调度方法及装置 | |
CN106790092B (zh) | 远程过程调用服务端控制系统及方法 | |
JP2004246892A (ja) | マルチノード分散データ処理システムにおいてリモート・アクセス可能なリソースを管理する方法 | |
US20220171652A1 (en) | Distributed container image construction scheduling system and method | |
CN109783151B (zh) | 规则变更的方法和装置 | |
CN110611707B (zh) | 一种任务调度的方法及装置 | |
CN103488526A (zh) | 在分布式系统中锁定业务资源的系统和方法 | |
CN111026602A (zh) | 一种云平台的健康巡检调度管理方法、装置及电子设备 | |
US11397632B2 (en) | Safely recovering workloads within a finite timeframe from unhealthy cluster nodes | |
CN112231108A (zh) | 任务处理方法、装置、计算机可读存储介质及服务器 | |
CN111078238A (zh) | 容器环境下应用配置集中处理方法及装置 | |
CN113703946B (zh) | 应用恢复方法及其装置、电子设备、计算机可读存储介质 | |
CN111835797A (zh) | 一种数据处理方法、装置及设备 | |
Ali et al. | Probabilistic normed load monitoring in large scale distributed systems using mobile agents | |
CN115562846A (zh) | 一种资源调度的方法、装置及计算节点 | |
CN113342499B (zh) | 分布式任务调用方法、装置、设备、存储介质、程序产品 | |
CN112612604B (zh) | 基于Actor模型的任务调度方法、装置 | |
CN112631727B (zh) | 一种容器组pod的监控方法及装置 | |
CN114968636A (zh) | 一种故障处理的方法和装置 | |
CN114816866A (zh) | 故障处理方法、装置、电子设备和存储介质 | |
CN114416276A (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 |