CN113641477A - 基于Zookeeper的线程调度方法及装置 - Google Patents
基于Zookeeper的线程调度方法及装置 Download PDFInfo
- Publication number
- CN113641477A CN113641477A CN202110942706.XA CN202110942706A CN113641477A CN 113641477 A CN113641477 A CN 113641477A CN 202110942706 A CN202110942706 A CN 202110942706A CN 113641477 A CN113641477 A CN 113641477A
- Authority
- CN
- China
- Prior art keywords
- data processing
- thread
- processing thread
- resource
- data
- 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.)
- Pending
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/52—Program synchronisation; Mutual exclusion, e.g. by means of semaphores
-
- 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
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2209/00—Indexing scheme relating to G06F9/00
- G06F2209/50—Indexing scheme relating to G06F9/50
- G06F2209/5018—Thread allocation
Abstract
本发明公开了一种基于Zookeeper的线程调度方法及装置,其中该方法包括:依次生成多个数据处理线程;针对每一所述数据处理线程,生成对应的创建标识;每一所述创建标识对应的所述数据处理线程每隔一个第一请求时间间隔生成请求锁指令;所述请求锁指令用于向目标数据资源请求获取数据处理锁;任一所述数据处理线程成功获得所述目标数据资源对应的数据处理锁后,执行该数据处理线程。可见,本发明能够触发多个线程分别每隔固定时间段进行请求获得锁,从而使得分布式多线程的模式下线程之间锁分配更加公平,且不会对多个线程进行阻塞。
Description
技术领域
本发明涉及数据处理技术领域,尤其涉及一种基于Zookeeper的线程调度方法及装置。
背景技术
随着数据处理技术的发展,多种数据处理线程并发执行的应用场景也越来越广泛,现有技术中一般采用Zookeeper组件来实现分布式的多线程任务调度。但现有技术中采用Zookeeper组件来实现多线程调度时,一般采用Zookeeper的分布式读写锁来处理,其步骤包括:1、创建临时有序节点;2、判断节点值最小,则获取锁;3、否则,阻塞线程,等待获取锁;4、删除节点,释放锁。
但现有技术的这一做法,存在着等待锁会导致大量的线程阻塞的问题,同时在面对数据同步任务时,可能导致前一个数据同步任务未处理完,后一个任务已经触发的情况。可见,现有技术存在缺陷,亟待解决。
发明内容
本发明所要解决的技术问题在于,提供一种基于Zookeeper的线程调度方法及装置,能够触发多个线程分别每隔固定时间段进行请求获得锁,从而使得分布式多线程的模式下线程之间锁分配更加公平,且不会对多个线程进行阻塞。
为了解决上述技术问题,本发明第一方面公开了一种基于Zookeeper的线程调度方法,所述方法包括:
依次生成多个数据处理线程;
针对每一所述数据处理线程,生成对应的创建标识;
每一所述创建标识对应的所述数据处理线程每隔一个第一请求时间间隔生成请求锁指令;所述请求锁指令用于向目标数据资源请求获取数据处理锁;
任一所述数据处理线程成功获得所述目标数据资源对应的数据处理锁后,执行该数据处理线程。
作为一种可选的实施方式,在本发明第一方面中,所述每一所述创建标识对应的所述数据处理线程每隔一个第一请求时间间隔生成请求锁指令,包括:
检测每一所述创建标识对应的所述数据处理线程的对所述目标数据资源的访问操作;每一所述创建标识对应的所述数据处理线程的所述访问操作每隔一个第一请求时间间隔触发;
当第二次检测到该所述创建标识对应的所述数据处理线程的所述访问操作,为该所述创建标识对应的所述数据处理线程生成请求锁指令。
作为一种可选的实施方式,在本发明第一方面中,所述方法还包括:
任一所述数据处理线程无法获得所述目标数据资源对应的数据处理锁时,该数据处理线程维持其在线程队列中的位置进行等待直到下一次生成所述请求锁指令。
作为一种可选的实施方式,在本发明第一方面中,所述方法还包括:
对于任一数据资源,在任一所述数据处理线程被执行后并对该数据资源进行更新后,增加资源更新计数。
作为一种可选的实施方式,在本发明第一方面中,在所述执行该数据处理线程之后,所述方法还包括:
判断该数据处理线程对应的目标数据资源对应的资源更新计数是否大于零;
当判断结果为是时,不执行该数据处理线程对所述目标数据资源的更新操作;
当判断结果为否时,执行该数据处理线程对所述目标数据资源的更新操作。
作为一种可选的实施方式,在本发明第一方面中,所述方法还包括:
对于任一所述数据资源,间隔一个第二请求时间间隔后对该数据资源对应的所述资源更新计数进行清零。
作为一种可选的实施方式,在本发明第一方面中,所述数据资源为原始数据表的中间表数据。
作为一种可选的实施方式,在本发明第一方面中,所述数据处理线程为数据同步处理线程。
本发明第二方面公开了一种基于Zookeeper的线程调度装置,其包括:
线程生成模块,用于依次生成多个数据处理线程;
标识生成模块,用于针对每一所述数据处理线程,生成对应的创建标识;
每一所述创建标识对应的所述数据处理线程每隔一个第一请求时间间隔生成请求锁指令;所述请求锁指令用于向目标数据资源请求获取数据处理锁;
任一所述数据处理线程成功获得所述目标数据资源对应的数据处理锁后,执行该数据处理线程。
作为一种可选的实施方式,在本发明第二方面中,所述每一所述创建标识对应的所述数据处理线程每隔一个第一请求时间间隔生成请求锁指令的具体方式,包括:
检测每一所述创建标识对应的所述数据处理线程的对所述目标数据资源的访问操作;每一所述创建标识对应的所述数据处理线程的所述访问操作每隔一个第一请求时间间隔触发;
当第二次检测到该所述创建标识对应的所述数据处理线程的所述访问操作,为该所述创建标识对应的所述数据处理线程生成请求锁指令。
作为一种可选的实施方式,在本发明第二方面中,任一所述数据处理线程无法获得所述目标数据资源对应的数据处理锁时,该数据处理线程维持其在线程队列中的位置进行等待直到下一次生成所述请求锁指令。
作为一种可选的实施方式,在本发明第二方面中,所述装置还包括:
计数模块,用于对于任一数据资源,在任一所述数据处理线程被执行后并对该数据资源进行更新后,增加资源更新计数。
作为一种可选的实施方式,在本发明第二方面中,所述装置还包括:
判断模块,用于在所述该数据处理线程被执行之后,判断该数据处理线程对应的目标数据资源对应的资源更新计数是否大于零;
执行模块,用于在当判断结果为是时,不执行该数据处理线程对所述目标数据资源的更新操作,以及用于当判断结果为否时,执行该数据处理线程对所述目标数据资源的更新操作。
作为一种可选的实施方式,在本发明第二方面中,所述装置还包括:
清零模块,用于对于任一所述数据资源,间隔一个第二请求时间间隔后对该数据资源对应的所述资源更新计数进行清零。
作为一种可选的实施方式,在本发明第二方面中,所述数据资源为原始数据表的中间表数据。
作为一种可选的实施方式,在本发明第二方面中,所述数据处理线程为数据同步处理线程。
本发明第三方面公开了另一种基于Zookeeper的线程调度装置,所述装置包括:
存储有可执行程序代码的存储器;
与所述存储器耦合的处理器;
所述处理器调用所述存储器中存储的所述可执行程序代码,执行本发明实施例第一方面公开的基于Zookeeper的线程调度方法中的部分或全部步骤。
与现有技术相比,本发明实施例具有以下有益效果:
本发明实施例中,依次生成多个数据处理线程;针对每一所述数据处理线程,生成对应的创建标识;每一所述创建标识对应的所述数据处理线程每隔一个第一请求时间间隔生成请求锁指令;所述请求锁指令用于向目标数据资源请求获取数据处理锁;任一所述数据处理线程成功获得所述目标数据资源对应的数据处理锁后,执行该数据处理线程。可见,本发明能够触发多个线程分别每隔固定时间段进行请求获得锁,从而使得分布式多线程的模式下线程之间锁分配更加公平,且不会对多个线程进行阻塞。
附图说明
为了更清楚地说明本发明实施例中的技术方案,下面将对实施例描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
图1是本发明实施例公开的一种基于Zookeeper的线程调度方法的流程示意图;
图2是本发明实施例公开的一种基于Zookeeper的线程调度装置的结构示意图;
图3是本发明实施例公开的另一种基于Zookeeper的线程调度装置的结构示意图;
图4是本发明实施例公开的现有的Zookeeper的线程调度方式的示意图;
图5是本发明实施例公开的一种基于Zookeeper的线程调度装置的具体实施方案的示意图。
具体实施方式
为了使本技术领域的人员更好地理解本发明方案,下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有作出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
本发明的说明书和权利要求书及上述附图中的术语“第一”、“第二”等是用于区别不同对象,而不是用于描述特定顺序。此外,术语“包括”和“具有”以及它们任何变形,意图在于覆盖不排他的包含。例如包含了一系列步骤或单元的过程、方法、装置、产品或端没有限定于已列出的步骤或单元,而是可选地还包括没有列出的步骤或单元,或可选地还包括对于这些过程、方法、产品或端固有的其他步骤或单元。
在本文中提及“实施例”意味着,结合实施例描述的特定特征、结构或特性可以包含在本发明的至少一个实施例中。在说明书中的各个位置出现该短语并不一定均是指相同的实施例,也不是与其它实施例互斥的独立的或备选的实施例。本领域技术人员显式地和隐式地理解的是,本文所描述的实施例可以与其它实施例相结合。
本发明公开了一种基于Zookeeper的线程调度方法及装置,能够触发多个线程分别每隔固定时间段进行请求获得锁,从而使得分布式多线程的模式下线程之间锁分配更加公平,且不会对多个线程进行阻塞。以下分别进行详细说明。
实施例一
请参阅图1,图1是本发明实施例公开的一种基于Zookeeper的线程调度方法的流程示意图。其中,图1所描述的方法可以应用于相应的调度终端、调度设备或调度服务器中,且该服务器可以是本地服务器,也可以是云服务器。如图1所示,该基于Zookeeper的线程调度方法可以包括以下操作:
101、依次生成多个数据处理线程。
可选的,数据处理线程可以为数据同步处理线程。可选的,数据同步处理线程可以为针对原始数据表的中间表数据的数据同步线程。
102、针对每一数据处理线程,生成对应的创建标识。
103、每一创建标识对应的数据处理线程每隔一个第一请求时间间隔生成请求锁指令。
本发明实施例中,请求锁指令用于向目标数据资源请求获取数据处理锁。
104、任一数据处理线程成功获得目标数据资源对应的数据处理锁后,执行该数据处理线程。
可见,实施本发明实施例所描述的方法能够触发多个线程分别每隔固定时间段进行请求获得锁,从而使得分布式多线程的模式下线程之间锁分配更加公平,且不会对多个线程进行阻塞。
作为一种可选的实施方式,步骤103中的,每一创建标识对应的数据处理线程每隔一个第一请求时间间隔生成请求锁指令,包括:
检测每一创建标识对应的数据处理线程的对目标数据资源的访问操作;
其中,每一创建标识对应的数据处理线程的访问操作每隔一个第一请求时间间隔触发。
当第二次检测到该创建标识对应的数据处理线程的访问操作,为该创建标识对应的数据处理线程生成请求锁指令。
可选的,第一请求时间间隔为8秒,也可以为其他值,具体的,可以由操作人员根据实验值或经验值进行确定。
可见,通过实施本可选的实施方式,可以在第二次检测到该创建标识对应的数据处理线程的访问操作时,为该创建标识对应的数据处理线程生成请求锁指令,从而精确地获知该数据处理线程的请求锁需求,使得分布式多线程的模式下线程之间锁分配更加公平,且不会对多个线程进行阻塞。
作为一种可选的实施方式,该方法还包括:
任一数据处理线程无法获得目标数据资源对应的数据处理锁时,该数据处理线程维持其在线程队列中的位置进行等待直到下一次生成请求锁指令。
可见,通过实施本可选的实施方式,数据处理线程在无法获得数据处理锁时可以维持其在线程队列中的位置进行等待直到下一次生成请求锁指令,从而避免了如现有技术中需要将数据处理线程排到线程队列的队尾的做法所导致的排队延误的问题,使得分布式多线程的模式下线程之间锁分配更加公平,且不会对多个线程进行阻塞。
作为一种可选的实施方式,该方法还包括:
对于任一数据资源,在任一数据处理线程被执行后并对该数据资源进行更新后,增加资源更新计数。
可选的,可以采用计数器来实现增加资源更新计数的步骤。
可见,通过实施本可选的实施方式,可以在任一数据处理线程被执行后并对该数据资源进行更新后,增加资源更新计数,从而精确地计算数据资源被更新的次数,从而为后续的判断处理做准备。
作为一种可选的实施方式,上述步骤104中的,执行该数据处理线程之后,该方法还包括:
判断该数据处理线程对应的目标数据资源对应的资源更新计数是否大于零;
当判断结果为是时,不执行该数据处理线程对目标数据资源的更新操作;
当判断结果为否时,执行该数据处理线程对目标数据资源的更新操作。
可见,通过实施本可选的实施方式,可以在判断到该数据处理线程对应的目标数据资源对应的资源更新计数大于零时不执行该数据处理线程对目标数据资源的更新操作,从而保证该目标数据资源仅被一个数据处理线程进行更新,保证了目标数据资源不会出现多次更新的问题。
作为一种可选的实施方式,该方法还包括:
对于任一数据资源,间隔一个第二请求时间间隔后对该数据资源对应的资源更新计数进行清零。
可见,通过实施本可选的实施方式,可以间隔一个第二请求时间间隔后对该数据资源对应的资源更新计数进行清零,从而保证该目标数据资源在第二请求时间间隔这段时间内仅被一个数据处理线程进行更新,保证了目标数据资源不会出现多次更新的问题。
本实施例还公开了上述基于Zookeeper的线程调度方法的一个具体实施方案,该方案是用于数据集复用场景中,该场景中,设计好的数据集通过另存为中间表的方式,可以在其他数据集中复用,以实现更复杂数据集和查询性能的提升。但这一场景需要满足的需求包括:1、当原始表数据有更改时,另存为的中间表必须能同步数据更改。2、当中间表数据处于同步过程中,其所依赖的其它中间表不能同步。3、同个表的同步任务只能有一个执行,避免多任务执行带来的资源浪费和并发写入导致的数据错误或锁表带来的系统不可用。
但现有的Zookeeper的分布式锁在解决线程调度问题时,可以参照图4,其主要的步骤包括:
1、为多个线程创建临时有序节点;
2、判断节点值最小,则获取锁;
3、否则,阻塞线程,等待获取锁;
4、删除节点,释放锁,
但这一分布式锁存在的问题是,等待锁的方式会导致大量的线程阻塞,且若存在一些定时触发的线程任务时,可能出现前一个数据同步任务未处理完,后一个任务已经触发的情况。
为满足上述场景中的需求,本方案提出了一种解决方法,可以参照图5,其核心思路为针对每个线程,记录创建者,线程不再阻塞等待,而是每8s尝试获得锁,当创建者二次到来时判断是否获取锁,当获取到锁时,则执行该线程。同时本方案进一步的,还为当前资源设置被更新的计数器table_3_count,用于记录当前资源被更新的次数,并在该次数大于零时停止更新该资源以保证该资源不会被重复更新。
实施例二
请参阅图2,图2是本发明实施例公开的一种基于Zookeeper的线程调度装置的结构示意图。其中,图2所描述的装置可以应用于相应的调度终端、调度设备或调度服务器,且该服务器可以是本地服务器,也可以是云服务器,本发明实施例不做限定。如图2所示,该装置可以包括:
线程生成模块201,用于依次生成多个数据处理线程。
可选的,数据处理线程可以为数据同步处理线程。可选的,数据同步处理线程可以为针对原始数据表的中间表数据的数据同步线程。
标识生成模块202,用于针对每一数据处理线程,生成对应的创建标识。
其中,每一创建标识对应的数据处理线程每隔一个第一请求时间间隔生成请求锁指令。
本发明实施例中,请求锁指令用于向目标数据资源请求获取数据处理锁。
其中,任一数据处理线程成功获得目标数据资源对应的数据处理锁后,执行该数据处理线程。
可见,实施本发明实施例所描述的装置能够触发多个线程分别每隔固定时间段进行请求获得锁,从而使得分布式多线程的模式下线程之间锁分配更加公平,且不会对多个线程进行阻塞。
作为一种可选的实施方式,每一创建标识对应的数据处理线程每隔一个第一请求时间间隔生成请求锁指令的具体方式,包括:
检测每一创建标识对应的数据处理线程的对目标数据资源的访问操作;每一创建标识对应的数据处理线程的访问操作每隔一个第一请求时间间隔触发;
当第二次检测到该创建标识对应的数据处理线程的访问操作,为该创建标识对应的数据处理线程生成请求锁指令。
可选的,第一请求时间间隔为8秒,也可以为其他值,具体的,可以由操作人员根据实验值或经验值进行确定。
可见,通过实施本可选的实施方式,可以在第二次检测到该创建标识对应的数据处理线程的访问操作时,为该创建标识对应的数据处理线程生成请求锁指令,从而精确地获知该数据处理线程的请求锁需求,使得分布式多线程的模式下线程之间锁分配更加公平,且不会对多个线程进行阻塞。
作为一种可选的实施方式,任一数据处理线程无法获得目标数据资源对应的数据处理锁时,该数据处理线程维持其在线程队列中的位置进行等待直到下一次生成请求锁指令。
可见,通过实施本可选的实施方式,数据处理线程在无法获得数据处理锁时可以维持其在线程队列中的位置进行等待直到下一次生成请求锁指令,从而避免了如现有技术中需要将数据处理线程排到线程队列的队尾的做法所导致的排队延误的问题,使得分布式多线程的模式下线程之间锁分配更加公平,且不会对多个线程进行阻塞。
作为一种可选的实施方式,该装置还包括:
计数模块,用于对于任一数据资源,在任一数据处理线程被执行后并对该数据资源进行更新后,增加资源更新计数。
可选的,可以采用计数器来实现增加资源更新计数的步骤。
可见,通过实施本可选的实施方式,可以在任一数据处理线程被执行后并对该数据资源进行更新后,增加资源更新计数,从而精确地计算数据资源被更新的次数,从而为后续的判断处理做准备。
作为一种可选的实施方式,该装置还包括:
判断模块,用于在该数据处理线程被执行之后,判断该数据处理线程对应的目标数据资源对应的资源更新计数是否大于零;
执行模块,用于在当判断结果为是时,不执行该数据处理线程对目标数据资源的更新操作,以及用于当判断结果为否时,执行该数据处理线程对目标数据资源的更新操作。
可见,通过实施本可选的实施方式,可以在判断到该数据处理线程对应的目标数据资源对应的资源更新计数大于零时不执行该数据处理线程对目标数据资源的更新操作,从而保证该目标数据资源仅被一个数据处理线程进行更新,保证了目标数据资源不会出现多次更新的问题。
作为一种可选的实施方式,该装置还包括:
清零模块,用于对于任一数据资源,间隔一个第二请求时间间隔后对该数据资源对应的资源更新计数进行清零。
可见,通过实施本可选的实施方式,可以间隔一个第二请求时间间隔后对该数据资源对应的资源更新计数进行清零,从而保证该目标数据资源在第二请求时间间隔这段时间内仅被一个数据处理线程进行更新,保证了目标数据资源不会出现多次更新的问题。
本实施例还公开了上述基于Zookeeper的线程调度装置的一个具体实施方案,该方案是用于数据集复用场景中,该场景中,设计好的数据集通过另存为中间表的方式,可以在其他数据集中复用,以实现更复杂数据集和查询性能的提升。但这一场景需要满足的需求包括:1、当原始表数据有更改时,另存为的中间表必须能同步数据更改。2、当中间表数据处于同步过程中,其所依赖的其它中间表不能同步。3、同个表的同步任务只能有一个执行,避免多任务执行带来的资源浪费和并发写入导致的数据错误或锁表带来的系统不可用。
但现有的Zookeeper的分布式锁在解决线程调度问题时,可以参照图4,其主要的步骤包括:
1、为多个线程创建临时有序节点;
2、判断节点值最小,则获取锁;
3、否则,阻塞线程,等待获取锁;
4、删除节点,释放锁,
但这一分布式锁存在的问题是,等待锁的方式会导致大量的线程阻塞,且若存在一些定时触发的线程任务时,可能出现前一个数据同步任务未处理完,后一个任务已经触发的情况。
为满足上述场景中的需求,本方案提出了一种解决方法,可以参照图5,其核心思路为针对每个线程,记录创建者,线程不再阻塞等待,而是每8s尝试获得锁,当创建者二次到来时判断是否获取锁,当获取到锁时,则执行该线程。同时本方案进一步的,还为当前资源设置被更新的计数器table_3_count,用于记录当前资源被更新的次数,并在该次数大于零时停止更新该资源以保证该资源不会被重复更新。
实施例三
请参阅图3,图3是本发明实施例公开的又一种基于Zookeeper的线程调度装置的结构示意图。如图3所示,该装置可以包括:
存储有可执行程序代码的存储器301;
与存储器301耦合的处理器302;
处理器302调用存储器301中存储的可执行程序代码,执行本发明实施例一公开的基于Zookeeper的线程调度方法中的部分或全部步骤。
实施例四
本发明实施例公开了一种计算机存储介质,该计算机存储介质存储有计算机指令,该计算机指令被调用时,用于执行本发明实施例一公开的基于Zookeeper的线程调度方法中的部分或全部步骤。
以上所描述的装置实施例仅是示意性的,其中作为分离部件说明的模块可以是或者也可以不是物理上分开的,作为模块显示的部件可以是或者也可以不是物理模块,即可以位于一个地方,或者也可以分布到多个网络模块上。可以根据实际的需要选择其中的部分或者全部模块来实现本实施例方案的目的。本领域普通技术人员在不付出创造性的劳动的情况下,即可以理解并实施。
通过以上的实施例的具体描述,本领域的技术人员可以清楚地了解到各实施方式可借助软件加必需的通用硬件平台的方式来实现,当然也可以通过硬件。基于这样的理解,上述技术方案本质上或者说对现有技术做出贡献的部分可以以软件产品的形式体现出来,该计算机软件产品可以存储在计算机可读存储介质中,存储介质包括只读存储器(Read-Only Memory,ROM)、随机存储器(Random Access Memory,RAM)、可编程只读存储器(Programmable Read-only Memory,PROM)、可擦除可编程只读存储器(ErasableProgrammable Read Only Memory,EPROM)、一次可编程只读存储器(One-timeProgrammable Read-Only Memory,OTPROM)、电子抹除式可复写只读存储器(Electrically-Erasable Programmable Read-Only Memory,EEPROM)、只读光盘(CompactDisc Read-Only Memory,CD-ROM)或其他光盘存储器、磁盘存储器、磁带存储器、或者能够用于携带或存储数据的计算机可读的任何其他介质。
最后应说明的是:本发明实施例公开的一种基于Zookeeper的线程调度方法及装置所揭露的仅为本发明较佳实施例而已,仅用于说明本发明的技术方案,而非对其限制;尽管参照前述实施例对本发明进行了详细的说明,本领域的普通技术人员应当理解;其依然可以对前述各项实施例所记载的技术方案进行修改,或者对其中部分技术特征进行等同替换;而这些修改或替换,并不使相应的技术方案的本质脱离本发明各项实施例技术方案的精神和范围。
Claims (10)
1.一种基于Zookeeper的线程调度方法,其特征在于,所述方法包括:
依次生成多个数据处理线程;
针对每一所述数据处理线程,生成对应的创建标识;
每一所述创建标识对应的所述数据处理线程每隔一个第一请求时间间隔生成请求锁指令;所述请求锁指令用于向目标数据资源请求获取数据处理锁;
任一所述数据处理线程成功获得所述目标数据资源对应的数据处理锁后,执行该数据处理线程。
2.根据权利要求1所述的基于Zookeeper的线程调度方法,其特征在于,所述每一所述创建标识对应的所述数据处理线程每隔一个第一请求时间间隔生成请求锁指令,包括:
检测每一所述创建标识对应的所述数据处理线程的对所述目标数据资源的访问操作;每一所述创建标识对应的所述数据处理线程的所述访问操作每隔一个第一请求时间间隔触发;
当第二次检测到该所述创建标识对应的所述数据处理线程的所述访问操作,为该所述创建标识对应的所述数据处理线程生成请求锁指令。
3.根据权利要求1所述的基于Zookeeper的线程调度方法,其特征在于,所述方法还包括:
任一所述数据处理线程无法获得所述目标数据资源对应的数据处理锁时,该数据处理线程维持其在线程队列中的位置进行等待直到下一次生成所述请求锁指令。
4.根据权利要求1所述的基于Zookeeper的线程调度方法,其特征在于,所述方法还包括:
对于任一数据资源,在任一所述数据处理线程被执行后并对该数据资源进行更新后,增加资源更新计数。
5.根据权利要求4所述的基于Zookeeper的线程调度方法,其特征在于,在所述执行该数据处理线程之后,所述方法还包括:
判断该数据处理线程对应的目标数据资源对应的资源更新计数是否大于零;
当判断结果为是时,不执行该数据处理线程对所述目标数据资源的更新操作;
当判断结果为否时,执行该数据处理线程对所述目标数据资源的更新操作。
6.根据权利要求4所述的基于Zookeeper的线程调度方法,其特征在于,所述方法还包括:
对于任一所述数据资源,间隔一个第二请求时间间隔后对该数据资源对应的所述资源更新计数进行清零。
7.根据权利要求1-6任一项所述的基于Zookeeper的线程调度方法,其特征在于,所述数据资源为原始数据表的中间表数据。
8.根据权利要求1-6任一项所述的基于Zookeeper的线程调度方法,其特征在于,所述数据处理线程为数据同步处理线程。
9.一种基于Zookeeper的线程调度装置,其特征在于,所述装置包括:
线程生成模块,用于依次生成多个数据处理线程;
标识生成模块,用于针对每一所述数据处理线程,生成对应的创建标识;
每一所述创建标识对应的所述数据处理线程每隔一个第一请求时间间隔生成请求锁指令;所述请求锁指令用于向目标数据资源请求获取数据处理锁;
任一所述数据处理线程成功获得所述目标数据资源对应的数据处理锁后,执行该数据处理线程。
10.一种基于Zookeeper的线程调度装置,其特征在于,所述装置包括:
存储有可执行程序代码的存储器;
与所述存储器耦合的处理器;
所述处理器调用所述存储器中存储的所述可执行程序代码,执行如权利要求1-8任一项所述的基于Zookeeper的线程调度方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202110942706.XA CN113641477A (zh) | 2021-08-17 | 2021-08-17 | 基于Zookeeper的线程调度方法及装置 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202110942706.XA CN113641477A (zh) | 2021-08-17 | 2021-08-17 | 基于Zookeeper的线程调度方法及装置 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN113641477A true CN113641477A (zh) | 2021-11-12 |
Family
ID=78422342
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202110942706.XA Pending CN113641477A (zh) | 2021-08-17 | 2021-08-17 | 基于Zookeeper的线程调度方法及装置 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN113641477A (zh) |
Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP2007299417A (ja) * | 2001-09-28 | 2007-11-15 | Intel Corp | マルチプロセッサコンピュータでjavaスレッドによる同期を行うフレキシブルなアクセラレーション |
CN105700939A (zh) * | 2016-04-21 | 2016-06-22 | 北京京东尚科信息技术有限公司 | 一种分布式系统中多线程同步的方法和系统 |
US20160224373A1 (en) * | 2015-02-02 | 2016-08-04 | Oracle International Corporation | Fine-grained scheduling of work in runtime systems |
CN106980678A (zh) * | 2017-03-30 | 2017-07-25 | 温馨港网络信息科技(苏州)有限公司 | 基于zookeeper技术的数据分析方法及系统 |
CN108897628A (zh) * | 2018-05-25 | 2018-11-27 | 北京奇艺世纪科技有限公司 | 一种分布式锁的实现方法、装置及电子设备 |
-
2021
- 2021-08-17 CN CN202110942706.XA patent/CN113641477A/zh active Pending
Patent Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP2007299417A (ja) * | 2001-09-28 | 2007-11-15 | Intel Corp | マルチプロセッサコンピュータでjavaスレッドによる同期を行うフレキシブルなアクセラレーション |
US20160224373A1 (en) * | 2015-02-02 | 2016-08-04 | Oracle International Corporation | Fine-grained scheduling of work in runtime systems |
CN105700939A (zh) * | 2016-04-21 | 2016-06-22 | 北京京东尚科信息技术有限公司 | 一种分布式系统中多线程同步的方法和系统 |
CN106980678A (zh) * | 2017-03-30 | 2017-07-25 | 温馨港网络信息科技(苏州)有限公司 | 基于zookeeper技术的数据分析方法及系统 |
CN108897628A (zh) * | 2018-05-25 | 2018-11-27 | 北京奇艺世纪科技有限公司 | 一种分布式锁的实现方法、装置及电子设备 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN105700939B (zh) | 一种分布式系统中多线程同步的方法和系统 | |
CN106802826B (zh) | 一种基于线程池的业务处理方法及装置 | |
US6622155B1 (en) | Distributed monitor concurrency control | |
US20140047140A1 (en) | System and method for providing a linearizable request manager | |
CN110704173A (zh) | 任务调度方法、调度系统、电子设备及计算机存储介质 | |
CN112527489A (zh) | 一种任务调度方法、装置、设备及计算机可读存储介质 | |
JP2019071108A (ja) | コンカレントプライオリティキューにおいてシーケンサを用いるためのシステムおよび方法 | |
US11042409B2 (en) | Leader election with lifetime term | |
CN111427670A (zh) | 任务调度方法和系统 | |
CN106484542B (zh) | 一种处理分布式系统中重叠节点事件的方法与装置 | |
EP2664989A1 (en) | Task scheduling | |
CN109495528B (zh) | 分布式锁所有权调度方法和装置 | |
CN116991949B (zh) | 数据同步方法、装置、设备、服务器及可读存储介质 | |
CN113946427A (zh) | 用于多操作系统的任务处理方法、处理器及存储介质 | |
CN113641477A (zh) | 基于Zookeeper的线程调度方法及装置 | |
CN112667409A (zh) | 一种可重入的分布式排它锁实现方法 | |
CN114418282A (zh) | 车站场景管理方法、装置、设备及计算机程序产品 | |
CN112162840B (zh) | 一种基于中断重入机制的协程处理及管理方法 | |
CN114489970A (zh) | Kubernetes中利用Coscheduling插件实现队列排序的方法及系统 | |
CN115934287B (zh) | 应用系统多服务集群下定时任务调度方法 | |
CN116578380B (zh) | 一种数据采集工具的集群任务调度方法、设备及介质 | |
CN114780217B (zh) | 任务调度方法、装置、计算机设备以及介质 | |
CN112822250B (zh) | 一种大数据平台去中心化的调度和执行方法、装置 | |
CN107196873B (zh) | 一种分布式集群的业务请求发送方法及装置 | |
CN112612582A (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 |