CN106815064A - 环状数据处理架构的检测方法和装置 - Google Patents
环状数据处理架构的检测方法和装置 Download PDFInfo
- Publication number
- CN106815064A CN106815064A CN201510850292.2A CN201510850292A CN106815064A CN 106815064 A CN106815064 A CN 106815064A CN 201510850292 A CN201510850292 A CN 201510850292A CN 106815064 A CN106815064 A CN 106815064A
- Authority
- CN
- China
- Prior art keywords
- node
- data processing
- moment
- heartbeat
- beats
- 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
-
- 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
Abstract
本申请公开了一种环状数据处理架构的检测方法和装置。其中,该方法包括:检测多个数据处理节点是否均处于空闲状态,其中,多个数据处理节点为构成环状数据处理架构的节点;在检测到多个数据处理节点均处于空闲状态的情况下,控制心跳节点停止计数,其中,心跳节点为环状数据处理架构中用于记录多个数据处理节点处理数据的条数的节点;在停止计数时心跳节点关闭,并通过心跳节点依次控制多个数据处理节点关闭。本申请解决了现有技术中环状数据处理架构容易陷入死锁状态的技术问题。
Description
技术领域
本申请涉及计算机领域,具体而言,涉及一种环状数据处理架构的检测方法和装置。
背景技术
数据处理架构(TPL Dataflow)是微软提供的进行流式处理的框架,适合需要高并发、高性能的应用程序。TPL Dataflow中最基础的组件是处理块(Block),其中,每个处理块(Block)又可以成为节点,Block相当于一个处理单元,每个Block定义了如何进行数据处理的逻辑。将多个Block链接起来,就组成了系统处理管道,只需要在管道开始处输入数据,接下来整个管道自动开始运行,从一个Block开始执行自己的处理逻辑,处理完成后将得到的数据投递到下一个或多个Block,最终完成整个管道的处理。
参见图1,分词程序的处理管道的输入可以是多个文件,首先通过文件读取Block读取文件,并将文件传递至下一层Block(即,图1中分行Block);分行Block再将文件传递至下一层Block(即,分词Block);分词Block再将文件传递至单词计数Block。其中,文件读取Block,分行Block,分词Block和单词计数Block构成一个完整的数据处理管道。
通过处理块构建的数据处理架构可以为环状,如图2所示,请求标记Block和链接分析Block构成一个环状的数据处理架构。在该环状数据处理架构中,请求标记Block对链接分析Block发起请求,将请求内容投递给链接分析Block。链接分析Block分析请求内容中存在的链接,将链接投递给请求标记Block,其中,当请求标记Block和链接分析Block之间没有任何待传递消息时,由于两个Block都在等待对方完成对消息的处理,因此,整个环状数据处理架构陷入死锁状态。
针对上述的问题,目前尚未提出有效的解决方案。
发明内容
本申请实施例提供了一种环状数据处理架构的检测方法和装置,以至少解决现有技术中环状数据处理架构容易陷入死锁状态的技术问题。
根据本申请实施例的一个方面,提供了一种环状数据处理架构的检测方法,该方法包括:检测多个数据处理节点是否均处于空闲状态,其中,所述多个数据处理节点为构成环状数据处理架构的节点;在检测到所述多个数据处理节点均处于空闲状态的情况下,控制心跳节点停止计数,其中,所述心跳节点为所述环状数据处理架构中用于记录所述多个数据处理节点处理数据的条数的节点;在停止计数时控制所述心跳节点关闭,并通过所述心跳节点依次控制所述多个数据处理节点关闭。
进一步地,检测多个数据处理节点是否均处于空闲状态包括:记录所述心跳节点在第一时刻的心跳数;经过预设时间后再次记录所述心跳节点在第二时刻的心跳数和所述多个数据处理节点在所述第二时刻的缓存消息的数量;判断所述第二时刻的心跳数是否等于所述第一时刻的心跳数,并判断所述第二时刻的数量是否为零;在判断出所述第二时刻的心跳数等于所述第一时刻的心跳数且所述第二时刻的数量为零的情况下,确定每个所述节点均处于空闲状态。
进一步地,所述多个数据处理节点中包括批数据处理节点,在检测到所述多个数据处理节点均处于空闲状态的情况下,并且在控制心跳节点停止计数之前,所述方法还包括:启动所述批数据处理节点;经过预设时间检测所述批数据处理节点是否处于空闲状态,其中,在检测到所述批数据处理节点处于所述空闲状态的情况下,则执行所述控制心跳节点停止计数的步骤。
进一步地,检测所述批数据处理节点是否处于空闲状态包括:记录所述心跳节点在第一时刻的心跳数;经过预设时间后再次记录所述心跳节点在第二时刻的心跳数和所述批数据处理节点在所述第二时刻的缓存消息的数量;判断所述第二时刻的心跳数是否等于所述第一时刻的心跳数,并判断所述第二时刻的数量是否为零;在判断出所述第二时刻的心跳数等于所述第一时刻的心跳数且判断出所述第二时刻的数量为零的情况下,确定每个所述批数据处理节点处于空闲状态。
进一步地,在检测所述多个数据处理节点中每个节点是否均处于空闲状态之前,所述方法还包括:接收检测指令,并根据所述检测指令检测所述多个数据处理节点是否处于空闲状态。
根据本申请实施例的另一方面,还提供了一种环状数据处理架构的检测装置,该装置包括:第一检测单元,用于检测多个数据处理节点是否均处于空闲状态,其中,所述多个数据处理节点为构成环状数据处理架构的节点;第一控制单元,用于在检测到所述多个数据处理节点均处于空闲状态的情况下,控制心跳节点停止计数,其中,所述心跳节点为所述环状数据处理架构中用于记录所述多个数据处理节点处理数据的条数的节点;第二控制单元,用于在停止计数时控制所述心跳节点关闭,并通过所述心跳节点依次控制所述多个数据处理节点关闭。
进一步地,所述第一检测单元包括:第一记录模块,用于记录所述心跳节点在第一时刻的心跳数;第二记录模块,用于经过预设时间后再次记录所述心跳节点在第二时刻的心跳数和所述多个数据处理节点在所述第二时刻的缓存消息的数量;第一判断模块,用于判断所述第二时刻的心跳数是否等于所述第一时刻的心跳数,并判断所述第二时刻的数量是否为零;第一确定模块,用于在判断出所述第二时刻的心跳数等于所述第一时刻的心跳数且所述第二时刻的数量为零的情况下,确定每个所述节点均处于空闲状态。
进一步地,所述多个数据处理节点中包括批数据处理节点,所述装置还包括:启动单元,用于在所述第一检测单元检测到所述多个数据处理节点均处于空闲状态的情况下,并且在所述第一控制单元控制心跳节点停止计数之前,启动所述批数据处理节点;第二检测单元,用于经过预设时间检测所述批数据处理节点是否处于空闲状态,其中,在检测到所述批数据处理节点处于所述空闲状态的情况下,调用所述第二控制单元控制心跳节点停止计数。
进一步地,所述第二检测单元包括:第三记录模块,用于记录所述心跳节点在第一时刻的心跳数;第四记录模块,用于经过预设时间后再次记录所述心跳节点在第二时刻的心跳数和所述批数据处理节点在所述第二时刻的缓存消息的数量;第二判断模块,用于判断所述第二时刻的心跳数是否等于所述第一时刻的心跳数,并判断所述第二时刻的数量是否为零;第二确定模块,用于在判断出所述第二时刻的心跳数等于所述第一时刻的心跳数且判断出所述第二时刻的数量为零的情况下,确定每个所述批数据处理节点处于空闲状态。
进一步地,所述装置还包括:接收单元,用于在所述第一检测单元检测所述多个数据处理节点中每个节点是否均处于空闲状态之前,接收检测指令,并根据所述检测指令检测所述多个数据处理节点是否处于空闲状态。
在本申请实施例中,采用检测多个数据处理节点是否均处于空闲状态,其中,所述多个数据处理节点为构成所述环状数据处理架构的节点;在检测到所述多个数据处理节点均处于空闲状态的情况下,控制心跳节点停止计数,其中,所述心跳节点为所述环状数据处理架构中用于记录所述多个数据处理节点处理数据的条数的节点;在停止计数时所述心跳节点关闭,并通过所述心跳节点依次控制所述多个数据处理节点关闭的方式。通过在检测到环状数据处理架构中的多个数据处理节点均处于空闲状态的情况下,心跳节点停止计数,即心跳阶段关闭,当心跳节点关闭时,控制多个数据处理节点依次关闭,相对于现有技术中环状数据处理架构中的多个数据处理节点之间在没有消息传递时,会进入死锁状态,本申请通过在环状数据处理架构中添加心跳节点,并根据该心跳节点依次控制多个数据处理节点关闭,达到了避免环状数据处理架构进入死锁状态的目的,进而解决了现有技术中环状数据处理架构容易陷入死锁状态的技术问题,从而实现了当环状数据处理架构处于空闲状态下,不会进入死锁状态的技术效果。
附图说明
此处所说明的附图用来提供对本申请的进一步理解,构成本申请的一部分,本申请的示意性实施例及其说明用于解释本申请,并不构成对本申请的不当限定。在附图中:
图1是根据现有技术的一种数据处理架构的示意图;
图2是根据现有技术的一种环状数据处理架构的示意图;
图3是根据本申请实施例的一种环状数据处理架构的检测方法的流程图;
图4是根据本申请可选实施例的一种多个数据处理节点处于空闲状态的检测方法的流程图;
图5是根据本申请可选实施例的一种环状数据处理架构的检测方法的流程图;
图6是根据本申请可选实施例的一种环状数据处理架构的示意图;以及
图7是根据本申请实施例的一种环状数据处理架构的检测装置的示意图。
具体实施方式
为了使本技术领域的人员更好地理解本申请方案,下面将结合本申请实施例中的附图,对本申请实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本申请一部分的实施例,而不是全部的实施例。基于本申请中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都应当属于本申请保护的范围。
需要说明的是,本申请的说明书和权利要求书及上述附图中的术语“第一”、“第二”等是用于区别类似的对象,而不必用于描述特定的顺序或先后次序。应该理解这样使用的数据在适当情况下可以互换,以便这里描述的本申请的实施例能够以除了在这里图示或描述的那些以外的顺序实施。此外,术语“包括”和“具有”以及他们的任何变形,意图在于覆盖不排他的包含,例如,包含了一系列步骤或单元的过程、方法、系统、产品或设备不必限于清楚地列出的那些步骤或单元,而是可包括没有清楚地列出的或对于这些过程、方法、产品或设备固有的其它步骤或单元。
根据本申请实施例,提供了一种环状数据处理架构的检测方法的方法实施例,需要说明的是,在附图的流程图示出的步骤可以在诸如一组计算机可执行指令的计算机系统中执行,并且,虽然在流程图中示出了逻辑顺序,但是在某些情况下,可以以不同于此处的顺序执行所示出或描述的步骤。
图3是根据本申请实施例的一种环状数据处理架构的检测方法的流程图,如图3所示,该方法包括如下步骤S102至步骤S106:
步骤S102,检测多个数据处理节点是否均处于空闲状态,其中,多个数据处理节点为构成环状数据处理架构的节点。
在本申请实施例中,数据处理节点可以为处理块Block,用于对数据进行相应的处理,并且,多个数据处理节点中的每个数据处理节点可以为具有宿主的子节点,也即,多个数据处理节点之间具有层级关系。其中,当多个数据处理节点处于空闲状态时,表示该环状数据处理架构处于空闲状态。
步骤S104,在检测到多个数据处理节点均处于空闲状态的情况下,控制心跳节点停止计数,其中,心跳节点为环状数据处理架构中用于记录多个数据处理节点处理数据的条数的节点。
具体地,该心跳节用于记录多个数据处理节点处理数据的条数,例如,当任意数据处理节点中处理完一条数据时,该心跳节点可以做“+1”处理,直至多个数据处理节点中所有的数据全部处理完(即,空闲状态),该心跳节点停止计数。
步骤S106,在停止计数时控制心跳节点关闭,并通过心跳节点依次控制多个数据处理节点关闭。
具体地,心跳节点可以设置为该环状数据处理架构的第一个节点,当心跳节点停止计数时,可以表示为该环状数据处理架构中的每个数据处理节点均处于空闲状态,此时,心跳节点可以向下一级节点发送一个指令或消息,以通知下一级节点可以关闭,下一级节点在接收到该指令或消息后关闭,并依此通知环状数据处理架构中的节点关闭,进而避免了该环状数据处理架构进入死锁状态。
在本申请实施例中,通过在检测到环状数据处理架构中的多个数据处理节点均处于空闲状态的情况下,心跳节点停止计数,即心跳阶段关闭,当心跳节点关闭时,控制多个数据处理节点依次关闭,相对于现有技术中环状数据处理架构中的多个数据处理节点之间在没有消息传递时,会进入死锁状态,本申请通过在环状数据处理架构中添加心跳节点,并根据该心跳节点依次控制多个数据处理节点关闭,达到了避免环状数据处理架构进入死锁状态的目的,进而解决了现有技术中环状数据处理架构容易陷入死锁状态的技术问题,从而实现了当环状数据处理架构处于空闲状态下,不会进入死锁状态的技术效果。
可选地,检测多个数据处理节点是否均处于空闲状态包括如下步骤S1021至步骤S1027:
步骤S1021,记录心跳节点在第一时刻的心跳数。
步骤S1023,经过预设时间后再次记录心跳节点在第二时刻的心跳数和多个数据处理节点在第二时刻的缓存消息的数量。
步骤S1025,判断第二时刻的心跳数是否等于第一时刻的心跳数,并判断第二时刻的数量是否为零。
步骤S1027,在判断出第二时刻的心跳数等于第一时刻的心跳数且第二时刻的数量为零的情况下,确定每个节点均处于空闲状态。
在本申请实施例中,第一时刻t1的心跳数记为h1,第二时刻t2的心跳数记为h2,第二时刻t2缓存消息的数量记为bufferCount2。
心跳数h1即为心跳节点在t1时刻的计数值,可以理解为环状数据处理架构在数据处理开始的时刻直至t1时刻,所有数据处理节点处理数据的条数;心跳数h2即为心跳节点在t2时刻的计数值,可以理解为环状数据处理架构在数据处理开始的时刻直至t2时刻,所有数据处理节点处理数据的条数。
在上述实施例中,t1时刻可以为环状数据处理架构中每个数据处理节点均未对数据进行处理的时刻,然后记录该t1时刻的心跳数h1。经过预设时间之后,再次记录t2时刻的心跳数h1和多个数据处理节点在t2时刻的缓存消息的数量bufferCount2,并将h1与h2进行比较,并判断t2时刻记录的bufferCount2是否为零。若判断出h1=h2,且bufferCount2=0,则确定该环状数据处理架构中每一个数据处理节点均处于空闲状态,此时,即可确定环状数据处理架构完成对所有数据的处理。
若判断出h1≠h2,或者bufferCount2≠0的情况下,表明该环状数据处理架构未处于空闲状态,因此,经过一段时间后,返回并继续执行步骤S1021至步骤S1027,直至检测出h1=h2且bufferCount2=0时,返回true,并结束该检测流程。
在本申请实施例中,经过预设时间再次检测心跳数h2,并检测缓存消息的数量bufferCount2是为了避免在第一时刻之后,数据处理节点还会对数据进行处理,进而导致环状数据处理架构在未完成对数据处理的情况下,关闭该环状数据处理架构中的每个数据处理节点。
可选地,多个数据处理节点中包括批数据处理节点,在检测到多个数据处理节点均处于空闲状态的情况下,并且在控制心跳节点停止计数之前,环状数据处理架构的检测方法还包括如下步骤S1至步骤S3:
步骤S1,启动批数据处理节点。
步骤S3,经过预设时间检测批数据处理节点是否处于空闲状态,其中,在检测到批数据处理节点处于空闲状态的情况下,则执行步骤S104的控制心跳节点停止计数。
在本申请实施例中,多个数据处理节点中可以包括批数据处理节点,其中,该批数据处理节点为批量对数据进行处理的节点。例如,任意一个批数据处理节点每一次处理的数据量为10条,若该节点接收到的数据量不满10条,则该批数据处理节点不会对接收到的数据进行处理。此时,需启动所有批数据处理节点,然后经过预设时间之后,检测批处理节点是否处于空闲状态。
其中,检测批数据处理节点是否处于空闲状态包括如下步骤S31至步骤S37:
步骤S31,记录心跳节点在第一时刻的心跳数。
步骤S33,经过预设时间后再次记录心跳节点在第二时刻的心跳数和批数据处理节点在第二时刻的缓存消息的数量。
步骤S35,判断第二时刻的心跳数是否等于第一时刻的心跳数,并判断第二时刻的数量是否为零。
步骤S37,在判断出第二时刻的心跳数等于第一时刻的心跳数且判断出第二时刻的数量为零的情况下,确定每个批数据处理节点处于空闲状态。
在本申请实施例中,第一时刻t1'的心跳数记为h3,第二时刻的心跳数记为h4,第二时刻t2'缓存消息的数量记为bufferCount2'。
心跳数h3即为心跳节点在t1'时刻的计数值,可以理解为环状数据处理架构在数据处理开始的时刻直至t1'时刻,所有数据处理节点(包括批数据处理节点)处理数据的条数;心跳数h2即为心跳节点在t2'时刻的计数值,可以理解为环状数据处理架构在数据处理开始的时刻直至t2'时刻,所有数据处理节点(包括批数据处理节点)处理数据的条数。
需要说明的是,上述实施例中的第一时刻t1'与步骤S1021中第一时刻t1为不相同的时刻,相应地,上述实施例中的第二时刻t2'与步骤S1023中第二时刻t2也为不相同的时刻。
在上述实施例中,t1'时刻可以为环状数据处理架构中每个批数据处理节点均未对数据进行处理的时刻,然后记录该t1'时刻的心跳数h3。经过预设时间之后,再次记录t2'时刻的心跳数h3和多个批数据处理节点在t2'时刻的缓存消息的数量bufferCount2',并将h3与h4进行比较,并判断t2'时刻记录的bufferCount2'是否为零。若判断出h3=h4,且bufferCount2'=0,则确定该环状数据处理架构中每一个批数据处理节点均处于空闲状态,此时,即可确定环状数据处理架构完成对所有数据的处理。
若判断出h3≠h4,或者bufferCount2'≠0的情况下,表明该环状数据处理架构未处于空闲状态,因此,经过一段时间后,返回并继续执行步骤S31至步骤S37,直至检测出h3=h4且bufferCount2'=0时,返回true,并结束该流程。
在本申请实施例中,经过预设时间再次检测心跳数h4,并检测缓存消息的数量bufferCount是为了避免在t1'时刻之后,批数据处理节点还会对数据进行处理,进而导致环状数据处理架构在未完成对数据处理的情况下,关闭该环状数据处理架构中的每个批数据处理节点。
可选地,在检测多个数据处理节点中每个节点是否均处于空闲状态之前,环状数据处理架构的检测方法还包括步骤:接收检测指令,并根据检测指令检测多个数据处理节点是否处于空闲状态。具体地,在检测多个数据处理节点是否处于空闲状态之前,用户可以进行相关的前置任务,例如,点击打开与该环状数据处理架构处理数据需要应用到的数据库,还可以点击打开该环状数据处理架构待处理的文件等。当完成全部前置任务时,服务器即接收到检测多个数据处理节点是否处于空闲状态的指令,并开始检测。
图4是根据本申请可选实施例的一种多个数据处理节点处于空闲状态的检测方法的流程图,如图4所示,该方法包括如下步骤S202至步骤S214:
步骤S202,判断多个数据处理节点是否正在处理数据,其中,该数据处理节点还可以为批数据处理节点。若判断出正在处理数据,则执行步骤S204;若判断出未处理数据,则执行步骤S214,即返回false。
步骤S204,记录心跳节点在第一时刻的心跳数h1。
步骤S206,经过预设时间再次记录心跳节点在第二时刻的心跳数h2。
步骤S208,记录多个数据处理节点在第二时刻的缓存消息的数量bufferCount2。
步骤S210,判断h1=h2且bufferCount2=0是否成立。其中,若判断出成立的情况下,执行步骤S212;若判断出不成立的情况下,返回执行步骤S214,即返回false。
步骤S212,返回true,并确定多个数据处理节点处于空闲状态。
在本可选实施例中,在环状数据处理架构中定义一个心跳节点,该心跳节点不对数据进行任何处理,仅记录多个数据处理节点处理的数据条数。当服务器检测到多个数据处理节点均未进行数据处理的情况下,开始记录该时刻(即,第一时刻)的心跳数h1。经过预设时间之后,再次记录第二时刻的心跳数h2,并记录第二时刻缓存消息的数量bufferCount2。然后判断h1=h2且bufferCount2=0是否成立,若判断出成立,则表明环状数据处理架构中每个数据处理节点均为空闲状态。此时,表明该环状数据处理架构完成对所有数据的处理,控制心跳节点将停止计数,并发送相应的消息至心跳节点的下一层节点Block1,以通知Block1可以关闭,Block1还可以发送相应的消息至Block1的下一层节点Block2,以通知Block2可以关闭,同样地,通过该方法依次控制多个数据处理节点关闭。
通过上述方法检测环状数据处理架构处于空闲状态的时机,避免了环状数据处理架构由于环中消息为空的情况下,环中每个数据处理节点因为相互引用的作用,而一直无法完成,最终进入死锁的状态。
图5是根据本申请可选实施例的一种环状数据处理架构的检测方法的流程图,如图5所示,该方法包括如下步骤S302至步骤S312:
步骤S302,接收检测指令。在检测环状数据处理架构是否处于空闲状态之前,需要传递检测指令,即前置任务完成的指令,其中,前置任务可以为点击打开与该环状数据处理架构处理数据需要应用到的数据库,还可以点击打开该环状数据处理架构待处理的文件等。
步骤S304,判断多个数据处理节点是否处于空闲状态,具体地,调用检测多个数据处理节点处于空闲状态的方法。其中,若检测到多个数据处理节点均完成数据处理时,即处于空闲状态,执行步骤S306;若检测到多个数据处理节点未完成数据处理,即未处于空闲状态,继续执行步骤S304调用检测多个数据处理节点处于空闲状态的方法。
循环调用检测环状数据处理架构空闲方法,即上述步骤S202至步骤S214所描述的方法,来检测环状数据处理架构是否处于空闲状态,直到返回true,即环状数据处理架构中没有处理的消息。其中,每次循环前等待一段时间,防止太多无用的循环以及节省处理消耗。
步骤S306,启动批数据处理节点。检查到多个数据处理节点中包括批数据处理节点的情况下,即使批数据处理节点中的数据条数没有达到该批数据处理节点的数据量(BatchSize),也同样启动所有批数据处理节点,进行数据的处理。
步骤S308,判断批数据处理节点是否处于空闲状态,具体地,调用检测批数据处理节点处于空闲状态的方法。其中,若检测到批数据处理节点均完成数据处理时,即处于空闲状态,执行步骤S310;若检测到批数据处理节点未完成数据处理时,即未处于空闲状态,继续执行步骤S308调用检测批数据处理节点处于空闲状态的方法。
循环调用检测环状数据处理架构空闲方法,通过上述步骤S202至步骤S214检测批数据处理节点是否处于空闲状态。当检测多批数据处理节点处于空闲状态时,表明环状数据处理架构都空闲,没有需要处理的消息,可以关闭。
步骤S310,心跳节点关闭。
步骤S312,多个数据处理节点依次关闭。当心跳节点关闭时,多个数据处理节点依次关闭,避免了环状数据处理架构进入死锁状态。
本申请实施例还提供了一种环状数据处理架构的装置,该检测装置主要用于执行本申请实施例上述内容所提供的环状数据处理架构的检测方法,以下对本申请实施例所提供的环状数据处理架构的检测装置做具体介绍。
图6是根据本申请可选实施例的一种环状数据处理架构的示意图,如图6所示,在该环状数据处理架构中包括请求标记节点和链接分析节点(即,数据处理节点)和心跳节点。其中,心跳节点设置在该环状数据处理架构的第一个节点的位置。
如图6所示,请求标记节点提交数据至链接分析节点。当数据提交完成后,开始使用上述本申请实施例提供的环状数据处理架构提供的检测方法检测环状数据处理架构处理数据完成的时机。在环状数据处理架构中所有数据处理节点都处理完成后,即每个数据处理节点没有缓存的消息后,且心跳节点心跳不再增加之后,此时环状数据处理架构可以完成了。此时,心跳节点停止计数,即心跳节点完成,并依次控制请求标记节点关闭,最后链接分析节点完成和链接分析节点关闭。最终整个环状数据处理架构处理完成。由于没有批数据处理节点,因此,无需启动批数据处理节点。
图7是根据本申请实施例的一种环状数据处理架构的检测装置的示意图,如图7所示,该IP范围的比较装置主要包括第一检测单元10、第一控制单元20和第二控制单元30,其中:
第一检测单元10,用于检测多个数据处理节点是否均处于空闲状态,其中,前置任务多个数据处理节点为构成前置任务环状数据处理架构的节点。
在本申请实施例中,数据处理节点可以为处理块Block,用于对数据进行相应的处理,并且,多个数据处理节点中的每个数据处理节点可以为具有宿主的子节点,也即,多个数据处理节点之间具有层级关系。其中,当多个数据处理节点处于空闲状态时,表示该环状数据处理架构处于空闲状态。
第一控制单元20,用于在检测到前置任务多个数据处理节点均处于空闲状态的情况下,控制心跳节点停止计数,其中,前置任务心跳节点为前置任务环状数据处理架构中用于记录前置任务多个数据处理节点处理数据的条数的节点。
具体地,该心跳节用于记录多个数据处理节点处理数据的条数,例如,当任意数据处理节点中处理完一条数据时,该心跳节点可以做“+1”处理,直至多个数据处理节点中所有的数据全部处理完(即,空闲状态),该心跳节点停止计数。
第二控制单元30,用于在停止计数时控制前置任务心跳节点关闭,并通过前置任务心跳节点依次控制前置任务多个数据处理节点关闭。
具体地,心跳节点可以设置为该环状数据处理架构的第一个节点。当心跳节点停止计数时,可以表示为该环状数据处理架构中的每个数据处理节点均处于空闲状态,此时,心跳节点可以向下一级节点发送一个指令或消息,以通知下一级节点可以关闭,下一级节点在接收到该指令或消息后关闭,并依此通知环状数据处理架构中的节点关闭,进而避免了该环状数据处理架构进入死锁状态。
在本申请实施例中,通过在检测到环状数据处理架构中的多个数据处理节点均处于空闲状态的情况下,心跳节点停止计数,即心跳阶段关闭,当心跳节点关闭时,控制多个数据处理节点依次关闭,相对于现有技术中环状数据处理架构中的多个数据处理节点之间在没有消息传递时,会进入死锁状态,本申请通过在环状数据处理架构中添加心跳节点,并根据该心跳节点依次控制多个数据处理节点关闭,达到了避免环状数据处理架构进入死锁状态的目的,进而解决了现有技术中环状数据处理架构容易陷入死锁状态的技术问题,从而实现了当环状数据处理架构处于空闲状态下,不会进入死锁状态的技术效果。
可选地,第一检测单元包括:第一记录模块,用于记录心跳节点在第一时刻的心跳数;第二记录模块,用于经过预设时间后再次记录心跳节点在第二时刻的心跳数和多个数据处理节点在第二时刻的缓存消息的数量;第一判断模块,用于判断第二时刻的心跳数是否等于第一时刻的心跳数,并判断第二时刻的数量是否为零;第一确定模块,用于在判断出第二时刻的心跳数等于第一时刻的心跳数且第二时刻的数量为零的情况下,确定每个节点均处于空闲状态。
在环状数据处理架构中定义一个心跳节点,该心跳节点不对数据进行任何处理,仅记录多个数据处理节点处理的数据条数。当服务器检测到多个数据处理节点均未进行数据处理的情况下,通过第一记录模块记录该时刻(即,第一时刻)的心跳数h1。经过预设时间之后,通过第二记录模块再次记录第二时刻的心跳数h2,并记录第二时刻缓存消息的数量bufferCount2。然后通过第一判断模块判断h1=h2且bufferCount2=0是否成立,若判断出成立,则通过第一确定模块确定出环状数据处理架构中每个数据处理节点均为空闲状态。此时,表明该环状数据处理架构完成对所有数据的处理,控制心跳节点将停止计数,并发送相应的消息至心跳节点的下一层节点Block1,以通知Block1可以关闭,Block1还可以发送相应的消息至Block1的下一层节点Block2,以通知Block2可以关闭,同样地,通过该方法依次控制多个数据处理节点关闭。
可选地,多个数据处理节点中包括批数据处理节点,装置还包括:启动单元,用于在第一检测单元检测到多个数据处理节点均处于空闲状态的情况下,并且在第一控制单元控制心跳节点停止计数之前,启动批数据处理节点;第二检测单元,用于经过预设时间检测批数据处理节点是否处于空闲状态,其中,在检测到批数据处理节点处于空闲状态的情况下,调用第二控制单元控制心跳节点停止计数。
在本申请实施例中,多个数据处理节点中可以包括批数据处理节点,其中,该批数据处理节点为批量对数据进行处理的节点。例如,任意一个批数据处理节点每一次处理的数据量为10条,若该节点接收到的数据量不满10条,则该批数据处理节点不会对接收到的数据进行处理。此时,通过启动单元启动所有批数据处理节点,然后经过预设时间之后,再通过第二检测单元检测批处理节点是否处于空闲状态。
可选地,前置任务第二检测单元包括:第三记录模块,用于记录心跳节点在第一时刻的心跳数;第四记录模块,用于经过预设时间后再次记录前置任务心跳节点在第二时刻的心跳数和前置任务批数据处理节点在前置任务第二时刻的缓存消息的数量;第二判断模块,用于判断前置任务第二时刻的心跳数是否等于前置任务第一时刻的心跳数,并判断前置任务第二时刻的数量是否为零;第二确定模块,用于在判断出前置任务第二时刻的心跳数等于前置任务第一时刻的心跳数且判断出前置任务第二时刻的数量为零的情况下,确定每个前置任务批数据处理节点处于空闲状态。
在环状数据处理架构中定义一个心跳节点,该心跳节点不对数据进行任何处理,仅记录多个数据处理节点处理的数据条数。当服务器检测到多个数据处理节点均未进行数据处理的情况下,通过第三记录模块记录该时刻(即,第一时刻)的心跳数h1。经过预设时间之后,通过第四记录模块再次记录第二时刻的心跳数h2,并记录第二时刻缓存消息的数量bufferCount2。然后通过第二判断模块判断h1=h2且bufferCount2=0是否成立,若判断出成立,通过第二确定模块确定出环状数据处理架构中每个数据处理节点均为空闲状态。此时,表明该环状数据处理架构完成对所有数据的处理,控制心跳节点将停止计数,并发送相应的消息至心跳节点的下一层节点Block1,以通知Block1可以关闭,Block1还可以发送相应的消息至Block1的下一层节点Block2,以通知Block2可以关闭,同样地,通过该方法依次控制多个数据处理节点关闭。
可选地,装置还包括:接收单元,用于在前置任务第一检测单元检测前置任务多个数据处理节点中每个节点是否均处于空闲状态之前,接收检测指令,并根据前置任务检测指令检测前置任务多个数据处理节点是否处于空闲状态。具体地,在检测多个数据处理节点是否处于空闲状态之前,用户可以进行相关的前置任务,例如,点击打开与该环状数据处理架构处理数据需要应用到的数据库,还可以点击打开该环状数据处理架构待处理的文件等。当完成全部前置任务时,服务器即接收到检测多个数据处理节点是否处于空闲状态的指令,并开始检测。
所述环状数据处理架构的检测装置包括处理器和存储器,上述第一检测单元10、第一控制单元20和第二控制单元30等均作为程序单元存储在存储器中,由处理器执行存储在存储器中的上述程序单元来实现相应的功能。
处理器中包含内核,由内核去存储器中调取相应的程序单元。内核可以设置一个或以上,通过调整内核参数避免环状数据处理架构进入死锁状态,进而解决了现有技术中环状数据处理架构容易陷入死锁状态的技术问题。
存储器可能包括计算机可读介质中的非永久性存储器,随机存取存储器(RAM)和/或非易失性内存等形式,如只读存储器(ROM)或闪存(flash RAM),存储器包括至少一个存储芯片。
本申请还提供了一种计算机程序产品,当在数据处理设备上执行时,适于执行初始化有如下方法步骤的程序代码:检测多个数据处理节点是否均处于空闲状态,其中,所述多个数据处理节点为构成所述环状数据处理架构的节点;在检测到所述多个数据处理节点均处于空闲状态的情况下,控制心跳节点停止计数,其中,所述心跳节点为所述环状数据处理架构中用于记录所述多个数据处理节点处理数据的条数的节点;在停止计数时所述心跳节点关闭,并通过所述心跳节点依次控制所述多个数据处理节点关闭。
上述本申请实施例序号仅仅为了描述,不代表实施例的优劣。
在本申请的上述实施例中,对各个实施例的描述都各有侧重,某个实施例中没有详述的部分,可以参见其他实施例的相关描述。
在本申请所提供的几个实施例中,应该理解到,所揭露的技术内容,可通过其它的方式实现。其中,以上所描述的装置实施例仅仅是示意性的,例如前置任务单元的划分,可以为一种逻辑功能划分,实际实现时可以有另外的划分方式,例如多个单元或组件可以结合或者可以集成到另一个系统,或一些特征可以忽略,或不执行。另一点,所显示或讨论的相互之间的耦合或直接耦合或通信连接可以是通过一些接口,单元或模块的间接耦合或通信连接,可以是电性或其它的形式。
前置任务作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个单元上。可以根据实际的需要选择其中的部分或者全部单元来实现本实施例方案的目的。
另外,在本申请各个实施例中的各功能单元可以集成在一个处理单元中,也可以是各个单元单独物理存在,也可以两个或两个以上单元集成在一个单元中。上述集成的单元既可以采用硬件的形式实现,也可以采用软件功能单元的形式实现。
前置任务集成的单元如果以软件功能单元的形式实现并作为独立的产品销售或使用时,可以存储在一个计算机可读取存储介质中。基于这样的理解,本申请的技术方案本质上或者说对现有技术做出贡献的部分或者该技术方案的全部或部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质中,包括若干指令用以使得一台计算机设备(可为个人计算机、服务器或者网络设备等)执行本申请各个实施例前置任务方法的全部或部分步骤。而前述的存储介质包括:U盘、只读存储器(ROM,Read-Only Memory)、随机存取存储器(RAM,Random Access Memory)、移动硬盘、磁碟或者光盘等各种可以存储程序代码的介质。
以上前置任务仅是本申请的优选实施方式,应当指出,对于本技术领域的普通技术人员来说,在不脱离本申请原理的前提下,还可以做出若干改进和润饰,这些改进和润饰也应视为本申请的保护范围。
Claims (10)
1.一种环状数据处理架构的检测方法,其特征在于,包括:
检测多个数据处理节点是否均处于空闲状态,其中,所述多个数据处理节点为构成环状数据处理架构的节点;
在检测到所述多个数据处理节点均处于空闲状态的情况下,控制心跳节点停止计数,其中,所述心跳节点为所述环状数据处理架构中用于记录所述多个数据处理节点处理数据的条数的节点;
在停止计数时控制所述心跳节点关闭,并通过所述心跳节点依次控制所述多个数据处理节点关闭。
2.根据权利要求1所述的方法,其特征在于,检测多个数据处理节点是否均处于空闲状态包括:
记录所述心跳节点在第一时刻的心跳数;
经过预设时间后再次记录所述心跳节点在第二时刻的心跳数和所述多个数据处理节点在所述第二时刻的缓存消息的数量;
判断所述第二时刻的心跳数是否等于所述第一时刻的心跳数,并判断所述第二时刻的数量是否为零;
在判断出所述第二时刻的心跳数等于所述第一时刻的心跳数且所述第二时刻的数量为零的情况下,确定每个所述节点均处于空闲状态。
3.根据权利要求1所述的方法,其特征在于,所述多个数据处理节点中包括批数据处理节点,在检测到所述多个数据处理节点均处于空闲状态的情况下,并且在控制心跳节点停止计数之前,所述方法还包括:
启动所述批数据处理节点;
经过预设时间检测所述批数据处理节点是否处于空闲状态,其中,在检测到所述批数据处理节点处于所述空闲状态的情况下,则执行所述控制心跳节点停止计数的步骤。
4.根据权利要求3所述的方法,其特征在于,检测所述批数据处理节点是否处于空闲状态包括:
记录所述心跳节点在第一时刻的心跳数;
经过预设时间后再次记录所述心跳节点在第二时刻的心跳数和所述批数据处理节点在所述第二时刻的缓存消息的数量;
判断所述第二时刻的心跳数是否等于所述第一时刻的心跳数,并判断所述第二时刻的数量是否为零;
在判断出所述第二时刻的心跳数等于所述第一时刻的心跳数且判断出所述第二时刻的数量为零的情况下,确定每个所述批数据处理节点处于空闲状态。
5.根据权利要求1所述的方法,其特征在于,在检测所述多个数据处理节点中每个节点是否均处于空闲状态之前,所述方法还包括:
接收检测指令,并根据所述检测指令检测所述多个数据处理节点是否处于空闲状态。
6.一种环状数据处理架构的检测装置,其特征在于,包括:
第一检测单元,用于检测多个数据处理节点是否均处于空闲状态,其中,所述多个数据处理节点为构成环状数据处理架构的节点;
第一控制单元,用于在检测到所述多个数据处理节点均处于空闲状态的情况下,控制心跳节点停止计数,其中,所述心跳节点为所述环状数据处理架构中用于记录所述多个数据处理节点处理数据的条数的节点;
第二控制单元,用于在停止计数时控制所述心跳节点关闭,并通过所述心跳节点依次控制所述多个数据处理节点关闭。
7.根据权利要求6所述的装置,其特征在于,所述第一检测单元包括:
第一记录模块,用于记录所述心跳节点在第一时刻的心跳数;
第二记录模块,用于经过预设时间后再次记录所述心跳节点在第二时刻的心跳数和所述多个数据处理节点在所述第二时刻的缓存消息的数量;
第一判断模块,用于判断所述第二时刻的心跳数是否等于所述第一时刻的心跳数,并判断所述第二时刻的数量是否为零;
第一确定模块,用于在判断出所述第二时刻的心跳数等于所述第一时刻的心跳数且所述第二时刻的数量为零的情况下,确定每个所述节点均处于空闲状态。
8.根据权利要求6所述的装置,其特征在于,所述多个数据处理节点中包括批数据处理节点,所述装置还包括:
启动单元,用于在所述第一检测单元检测到所述多个数据处理节点均处于空闲状态的情况下,并且在所述第一控制单元控制心跳节点停止计数之前,启动所述批数据处理节点;
第二检测单元,用于经过预设时间检测所述批数据处理节点是否处于空闲状态,其中,在检测到所述批数据处理节点处于所述空闲状态的情况下,调用所述第二控制单元控制心跳节点停止计数。
9.根据权利要求8所述的装置,其特征在于,所述第二检测单元包括:
第三记录模块,用于记录所述心跳节点在第一时刻的心跳数;
第四记录模块,用于经过预设时间后再次记录所述心跳节点在第二时刻的心跳数和所述批数据处理节点在所述第二时刻的缓存消息的数量;
第二判断模块,用于判断所述第二时刻的心跳数是否等于所述第一时刻的心跳数,并判断所述第二时刻的数量是否为零;
第二确定模块,用于在判断出所述第二时刻的心跳数等于所述第一时刻的心跳数且判断出所述第二时刻的数量为零的情况下,确定每个所述批数据处理节点处于空闲状态。
10.根据权利要求6所述的装置,其特征在于,所述装置还包括:
接收单元,用于在所述第一检测单元检测所述多个数据处理节点中每个节点是否均处于空闲状态之前,接收检测指令,并根据所述检测指令检测所述多个数据处理节点是否处于空闲状态。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201510850292.2A CN106815064B (zh) | 2015-11-27 | 2015-11-27 | 环状数据处理架构的检测方法和装置 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201510850292.2A CN106815064B (zh) | 2015-11-27 | 2015-11-27 | 环状数据处理架构的检测方法和装置 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN106815064A true CN106815064A (zh) | 2017-06-09 |
CN106815064B CN106815064B (zh) | 2020-02-07 |
Family
ID=59155404
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201510850292.2A Active CN106815064B (zh) | 2015-11-27 | 2015-11-27 | 环状数据处理架构的检测方法和装置 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN106815064B (zh) |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
WO2021081196A1 (en) * | 2019-10-22 | 2021-04-29 | Advanced Micro Devices, Inc. | Ring transport employing clock wake suppression |
Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101557339A (zh) * | 2008-04-09 | 2009-10-14 | 华为技术有限公司 | 一种数据传输方法、数据处理节点以及数据传输系统 |
CN101661385A (zh) * | 2008-08-29 | 2010-03-03 | 佛山市顺德区顺达电脑厂有限公司 | 数据处理装置及数据处理方法 |
CN103744723A (zh) * | 2014-01-24 | 2014-04-23 | 深圳联友科技有限公司 | 一种线程池的管理方法和管理系统 |
CN104243531A (zh) * | 2013-06-21 | 2014-12-24 | 华为技术有限公司 | 一种数据处理的方法、装置及系统 |
-
2015
- 2015-11-27 CN CN201510850292.2A patent/CN106815064B/zh active Active
Patent Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101557339A (zh) * | 2008-04-09 | 2009-10-14 | 华为技术有限公司 | 一种数据传输方法、数据处理节点以及数据传输系统 |
CN101661385A (zh) * | 2008-08-29 | 2010-03-03 | 佛山市顺德区顺达电脑厂有限公司 | 数据处理装置及数据处理方法 |
CN104243531A (zh) * | 2013-06-21 | 2014-12-24 | 华为技术有限公司 | 一种数据处理的方法、装置及系统 |
CN103744723A (zh) * | 2014-01-24 | 2014-04-23 | 深圳联友科技有限公司 | 一种线程池的管理方法和管理系统 |
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
WO2021081196A1 (en) * | 2019-10-22 | 2021-04-29 | Advanced Micro Devices, Inc. | Ring transport employing clock wake suppression |
US11829196B2 (en) | 2019-10-22 | 2023-11-28 | Advanced Micro Devices, Inc. | Ring transport employing clock wake suppression |
Also Published As
Publication number | Publication date |
---|---|
CN106815064B (zh) | 2020-02-07 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN104067282B (zh) | 状态机晶格中的计数器操作 | |
CN104426885B (zh) | 异常账号提供方法及装置 | |
CN112669155B (zh) | 基于区块链的交易分发执行方法、装置服务器及存储介质 | |
CN107870845A (zh) | 面向微服务架构应用的管理方法及系统 | |
CN110399383A (zh) | 应用于服务器的数据处理方法、装置、计算设备、介质 | |
CN108304426A (zh) | 标识的获取方法及装置 | |
CN110442712A (zh) | 风险的确定方法、装置、服务器和文本审理系统 | |
KR20170012019A (ko) | 복수의 cpu 및 복수의 gpu를 지원하는 컴퓨팅 환경에서의 연산 방법 | |
CN109344611A (zh) | 应用的访问控制方法、终端设备及介质 | |
CN111414374A (zh) | 一种区块链交易并发处理方法、装置及设备 | |
CN107644081A (zh) | 数据去重方法及装置 | |
CN105913235A (zh) | 一种客户转账关系分析方法及系统 | |
CN108629560A (zh) | 任务派发方法、电子设备及存储介质 | |
CN109543459A (zh) | 一种数据存证方法及设备 | |
CN107463555A (zh) | 删除中间层数据的方法、系统和装置 | |
CN106844338B (zh) | 基于属性间依赖关系的网络表格的实体列的检测方法 | |
CN106815064A (zh) | 环状数据处理架构的检测方法和装置 | |
CN111162918A (zh) | 业务开通管理方法和装置 | |
CN110516258A (zh) | 数据校验方法及装置、存储介质、电子装置 | |
CN110262950A (zh) | 基于多项指标的异动检测方法和装置 | |
CN109284268A (zh) | 一种快速解析日志的方法、系统及电子设备 | |
CN109254791A (zh) | 开发数据的管理方法、计算机可读存储介质和终端设备 | |
CN107562469A (zh) | 一种标题栏数据展示方法及系统 | |
CN110210215A (zh) | 一种病毒检测的方法以及相关装置 | |
Wever et al. | Active coevolutionary learning of requirements specifications from examples |
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 | ||
CB02 | Change of applicant information |
Address after: 100083 No. 401, 4th Floor, Haitai Building, 229 North Fourth Ring Road, Haidian District, Beijing Applicant after: Beijing Guoshuang Technology Co.,Ltd. Address before: 100086 Cuigong Hotel, 76 Zhichun Road, Shuangyushu District, Haidian District, Beijing Applicant before: Beijing Guoshuang Technology Co.,Ltd. |
|
CB02 | Change of applicant information | ||
GR01 | Patent grant | ||
GR01 | Patent grant |