CN110245025B - 一种基于Actor模型的数据采集方法、装置及存储介质 - Google Patents
一种基于Actor模型的数据采集方法、装置及存储介质 Download PDFInfo
- Publication number
- CN110245025B CN110245025B CN201910428815.2A CN201910428815A CN110245025B CN 110245025 B CN110245025 B CN 110245025B CN 201910428815 A CN201910428815 A CN 201910428815A CN 110245025 B CN110245025 B CN 110245025B
- Authority
- CN
- China
- Prior art keywords
- data
- task
- stage
- collectors
- data acquisition
- 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.)
- Active
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
- G06F9/524—Deadlock detection or avoidance
-
- 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/54—Interprogram communication
- G06F9/546—Message passing systems or structures, e.g. queues
Landscapes
- Engineering & Computer Science (AREA)
- Software Systems (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Debugging And Monitoring (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
本申请公开了一种基于Actor模型的数据采集方法、数据采集装置及计算机可读存储介质,应用于数据处理领域,其中方法包括:检测任务集群中是否存在新增的目标任务;在检测到任务集群中存在新增的目标任务的情况下,为目标任务创建Actor模型,Actor模型包括多个数据采集器;将多个数据采集器划分到多个阶段,并设定多个阶段的触发顺序;按照多个阶段的触发顺序,依次触发多个阶段的数据采集器采集数据;在检测到多个阶段的数据采集器全部采集完数据之后,在任务集群中删除目标任务。本申请中的多个数据采集器都为Actor并且设定了不同数据采集器的执行顺序,使得不需要锁便能调度多个数据采集器完成数据采集。
Description
技术领域
本申请涉及数据采集领域,尤其涉及一种基于Actor模型数据采集方法、装置及计算机可读存储介质。
背景技术
数据采集常常因为多线程或多进程并发访问某个临界资源而陷入死锁,这时可通过对该临界资源进行加锁,来建立线程或进程之间的互斥同步机制,以保障临界资源的完整性和一致性。单机的进程同步和线程同步有很多可用的互斥方案,比如互斥锁、信号量和条件变量等。但这些单机下的互斥方案在多机上是无法使用的,因为分布式系统的组件运行在不同的机器上,使得其不在统一的运行环境中。
分布式数据采集中,常常通过分布式锁解决对临界资源的互斥访问,比如Redis分布式锁和Zookeeper分布式锁的等。
但是分布式锁的实现比较复杂,且维护比较麻烦,需要较多维护成本,因此分布式锁不是一个解决分布式数据采集的死锁问题的理想方案,还是缺少了一种可以更高效的分布式数据采集方法。
发明内容
本申请实施例提供一种数据采集方法,可以不使用锁便实现分布式数据采集。
第一方面,本申请实施例提供了一种数据采集方法,该方法包括:
检测任务集群中是否存在新增的目标任务;
在检测到任务集群中存在新增的目标任务的情况下,为所述目标任务创建Actor模型,所述Actor模型包括多个数据采集器,所述数据采集器用于采集数据,所述多个数据采集器之间通过消息传递的方式通信;
将所述多个数据采集器划分到多个阶段,并设定所述多个阶段的触发顺序,每个阶段包含至少一个数据采集器,相同阶段的不同数据采集器位于不同的终端中,分别用于采集不同终端中的数据;
按照所述多个阶段的触发顺序,依次触发所述多个阶段的数据采集器采集数据;
在检测到所述多个阶段的所有数据采集器全部采集完数据之后,在所述任务集群中删除所述目标任务。
第二方面,本申请实施例提供了一种数据采集装置,该数据采集装置包括用于执行上述第一方面的数据采集方法的单元,该数据采集装置包括:
检测单元,用于检测任务集群中是否存在新增的目标任务;
创建单元,用于在检测到任务集群中存在新增的目标任务的情况下,为所述目标任务创建Actor模型,所述Actor模型包括多个数据采集器,所述数据采集器用于采集数据,所述多个数据采集器之间通过消息传递的方式通信;
划分单元,用于将所述多个数据采集器划分到多个阶段,并设定所述多个阶段的触发顺序,每个阶段包含至少一个数据采集器,相同阶段的不同数据采集器位于不同的终端中,分别用于采集不同终端中的数据;
执行单元,用于按照所述多个阶段的触发顺序,依次触发所述多个阶段的数据采集器采集数据;
删除单元,用于在检测到所述多个阶段的数据采集器全部采集完数据之后,在所述任务集群中删除所述目标任务。
第三方面,本申请实施例提供了另一种数据采集装置,包括处理器和存储器,所述处理器和存储器相互连接,其中,所述存储器用于存储支持数据采集装置执行上述数据采集方法的计算机程序,所述计算机程序包括程序指令,所述处理器被配置用于调用所述程序指令,用以执行上述第一方面至第一方面的任意一种实现方式的数据采集方法。
第四方面,本申请实施例提供了一种计算机可读存储介质,所述计算机可读存储介质存储有计算机程序,所述计算机程序包括程序指令,所述程序指令当被处理器执行,用以执行上述第一方面至第一方面的任意一种实现方式的数据采集方法。
本申请每当检测到任务集群中存在新的目标任务,就为该目标任务建立包括多个数据采集器的Actor模型,并利用多个数据采集器来完成目标任务所指示的数据采集任务,具体的,将上述多个数据采集器划分到多个阶段,并设置该多个阶段的执行顺序,然后再按照该执行顺序,依次触发该多个阶段的数据采集器采集数据,最后在检测到所有阶段的所有数据采集器都采集完数据之后,就在任务集群中删除该目标任务,可见,本申请所提供的数据采集方法中,由于多个数据采集器都是Actor,而Actor是通过信息传递的方式进行通信的,信息传递的好处就是不会产生数据竞争的问题,在处理任务的时候无需同步阻塞等待,并且本申请虽然不是通过Actor来调度上述多个数据采集器进行数据采集,但是本申请通过将上述多个数据采集器划分到不同的阶段,从而设定了上述数据采集器的执行顺序,因此进一步保证了数据采集过程中不会产生数据竞争和死锁,于是本申请不需要借助于锁便可以实现复杂的分布式数据采集,并且大大提高分布式数据采集的并发性能,可见,本申请提供了一种高效的数据采集方法。
附图说明
为了更清楚地说明本申请实施例技术方案,下面将对实施例描述中所需要使用的附图作简单地介绍。
图1是本申请实施例提供的一种数据采集方法的示意流程图;
图2是本申请另一实施例提供的一种数据采集方法的示意流程图;
图3是本申请实施例提供的一种数据采集装置的示意性框图;
图4是本申请实施例提供的一种数据采集装置的结构性框图。
具体实施方式
下面将结合本申请实施例中的附图,对本申请实施例中的技术方案进行清楚、完整地描述。
本申请主要应用于数据采集装置,该数据采集装置可以是传统数据采集装置、大型存储系统、台式电脑、笔记本电脑、平板电脑、掌上电脑、智能手机、便携式数字播放器、智能手表以及智能手环等等,本申请对此不做限制。
本申请实施例中描述的终端包括但不限于带通讯功能的设备、智能手机、平板电脑、笔记本电脑、台式电脑、便携式数字播放器、智能手环以及智能手表等。当终端向数据采集装置发送数据的时候,按照预设格式进行对数据的特性进行记录并传送,其中,数据的特性包括时间、地点、类型等。
参见图1,是本申请实施例提供一种数据采集方法的示意流程图,如图1所示数据采集方法可包括:
101:检测任务集群中是否存在新增的目标任务。
在本申请实施例中,检测任务集群中是否存在新增的任务,若存在新增的任务,则将该新增的任务作为目标任务。其中,任务集群指的是待处理的任务的集合,且该任务集群中的不同任务可能由不同的终端所提出,而任务集群中的任务可能是由多个终端共同处理的分布式任务,也可能是仅由一个终端处理的单机任务,检测的过程指的是,本端的数据采集装置定时检测任务集群中是否存在新增的任务,或者任务集群中新增一个任务,本端装置便能接收到用于指示任务集群中新增任务的消息。
在另一种可实施的方式中,上述目标任务不是任务集群中新增的任意任务,而是任务集群中新增的分布式任务,具体的,上述检测任务集群中是否存在新增的目标任务指的是,检测任务集群中的新增的任务,若确定该新增的任务为分布式任务,则确定检测到任务集群中存在新增的目标任务。
在本申请实施例中,上述检测任务集群中新增的任务为分布式任务的过程指的是,获取上述任务集群中新增的任务的类型,若该新增的任务的类型为分布式任务,则表示该新增的任务的类型为分布式任务,或者,获取上述新增的任务的难度等级,若确定该新增的任务的难度等级超过预设级别,则说明该新增的任务需要占用较多的计算资源,并确定该新增的任务为分布式任务,也即是将该难度级别超过预设级别的任务作为目标任务,并接下来采用分布式任务的处理方法对其进行处理。
可见,本申请实施例只有在确定任务集群新增了分布式任务的时候,才确定任务集群中有新增的目标任务,上述检测到的任务集群中新增的分布式任务即目标任务。
102:在检测到任务集群中存在新增的目标任务的情况下,为该目标任务创建Actor模型,Actor模型包括多个数据采集器。
在本申请实施例中,Actor模型为一个用于任务处理的模型,具体来说Actor模型是一个概念模型,用于处理并发计算,它定义了一系列系统组件应该如何动作和交互的通用规则,Actor模型可以用于完成任意类型的任务,但在本申请实施例中构建的Actor模型用于执行数据采集。Actor模型中包含了多个Actor,Actor在本申请实施例中被称为数据采集器,每个数据采集器是Actor模型中进行数据采集的最基本的单元,它能接收一个消息并且基于其执行数据采集。于是上述根据该目标任务的执行内容创建包含多个数据采集器的Actor模型指的是,对目标任务进行分解,然后基于分解之后的目标任务的采集任务,创建多个数据采集器来执行对应的采集任务,需要注意的是,数据采集器在采集数据时,多个数据采集器可能是并行执行的,但也不会造成资源竞争,因为数据采集器之间是通过消息传递的方式进行通信,于是不会造成资源竞争。
需要说明的是,由于本申请实施例采用的所有数据采集器都是Actor,而Actor之间是通过消息传递的方式进行通信,因此数据采集器进行数据采集的时候,不会产生资源竞争的问题。其中,消息传递的方式指的是在消息传递系统中,进程间的数据交换是以格式化的消息(Message)为单位的,Actors的一大重要特征在于Actors之间相互隔离,它们并不互相共享内存,一个Actor能维持一个私有的状态,并且这个状态不可能被另一个Actor所改变,而消息传递也保证了Actor之间的异步处理,因此Actor之间也不会存在数据竞争。若通信的进程之间不存在可直接访问的共享空间,则必须利用操作系统提供的消息传递方法实现进程通信,进程通过系统提供的发送消息和接收消息两个原语进行数据交换。简单来说,Actor之间通过消息传递的方式来进行资源共享,当Actor需要另一个Actor的资源的时候,只需要将消息发送给另一个Actor,但不关心另一个Actor什么时候处理,因此Actor之间的消息是异步传输的,类似邮件通信。具体的,在Actor模型里每个Actor都有地址,所以它们才能够相互发送消息,尽管许多Actor同时运行,但是一个Actor只能顺序地处理消息。也就是说其它三个Actor发送了给一个Actor分别发送了一条消息,这个Actor只能一次处理一条,如果需要并行处理三条消息,则需要三个Actor分别对这三条消息进行处理,并且如果Actor在处理消息的过程中又接收到一条新的消息,则该新的消息会被存储到Actor的邮箱Mailbox中,每个Actor对应有一个Mailbox。
可见,Actor通过消息传递的方式将不同Actor的可访问的资源进行了分隔,并保障了Actor之间的消息的异步处理,从而避免了使用锁来处理数据条件竞争(data race)的问题。消息传递机制最大的优点就是不会产生数据竞争状态(data race)。
103:将上述多个数据采集器划分到多个阶段,并设定该多个阶段的触发顺序。
在本申请实施例中,将上述多个数据采集器划分到多个阶段,并设定该多个阶段的触发顺序,每个阶段包含至少一个数据采集器,相同阶段的不同数据采集器位于不同的终端中,分别用于采集不同终端中的数据。
需要说明的是,由于相同阶段的不同数据采集器分别分布于不同的终端上,于是本申请实施例应用于分布式数据采集,可见,由于位于不同的终端上的数据采集器在采集数据的时候,只会占用其所在终端的计算资源,于是在一个终端集群中的多个终端共同处理一个分布式采集任务,相比单机处理,分布式采集可以大大提升了计算能力和计算速度。需要注意的是,由于本申请实施例采用了Actor模型中的Actor来作为数据采集器,才可以不需要分布式锁便能实现分布式数据采集,这是因为Actor只关注接收到的消息的内容,而不关注消息的发送方是本地的Actor还是终端上的Actor,于是只要保证多个Actor之间的消息能够顺利达到即可,也也允许了本申请实施例可以不及住锁便能在包含多个终端的终端集群中构建Actor模型,并实现分布式数据采集。
104:按照上述多个阶段的触发顺序,依次触发上述多个阶段的数据采集器采集数据。
在本申请实施例中,按照上述多个阶段的触发顺序,依次触发上述多个阶段的数据采集器采集数据。具体的,按照上述多个阶段的触发顺序,确定当前待触发阶段;若确定待触发阶段位于上述触发顺序的首位,或者确定接收到待触发阶段的前一阶段的所有数据采集器的完成采集的信息,则触发待触发阶段的所有数据采集器采集数据;在接收到待触发阶段的所有数据采集器的完成采集的信息的情况下,触发待触发阶段的下一阶段的所有数据采集器采集数据,直至接收到所述多个阶段的所有数据采集器的完成采集的信息。
举例来说,上述Actor模型包含三个阶段的数据采集器,按照执行顺序排序,该三个阶段分别为第一阶段、第二阶段和第三阶段,于是首先想第一阶段的所有数据采集器发送数据采集指令,使得该阶段的所有数据采集器并发执行数据采集,当第一阶段的所有数据采集器采集完数据之后,本端装置将会收到第一阶段的每个数据采集器发送的完成采集的信息,当接受到第一阶段的所有数据采集器的完成采集的信息之后,表示第一阶段的所有数据采集器完成数据采集,可以触发执行第二阶段的数据采集器,于是触发第二阶段的所有数据采集器并发执行数据采集,当接收到第二阶段的所有数据采集器的完成采集的信息之后,触发执行第三阶段的数据采集器执行数据采集,当接收到第三阶段的所有数据采集器的完成采集的信息之后,表示数据全部采集完成,即目标任务完成。
需要说明的是,本申请实施例虽然没有用Actor来作为调度节点来调度数据采集器进行数据采集,但是本申请通过将数据采集器划分到多个阶段,使得会产生数据竞争的数据采集器划分到不同的阶段,于是本申请即使不使用Actor作为调度节点,也可以实现分布式数据采集,并且也不会用到锁。
在另一种可实施的方式中,上一阶段的数据采集器采集到的数据可以传输给下一阶段的数据采集器,以供下一阶段的数据采集器使用。具体的,在上述触发待触发阶段的所有数据采集器采集数据之前,获取待触发阶段的前一阶段的所有数据采集器采集到的数据,并将待触发阶段的前一阶段的所有数据采集器采集到的数据保存到本地数据库中,然后接收到待触发阶段的目标数据采集器的数据请求指令,该数据请求指令用于请求所述本地数据库中的目标数据,于是在上述本地数据库中调取目标数据,并将该目标数据发送给目标数据采集器,最后在接收到待触发阶段的所有数据采集器的采集完成消息的情况下,将待触发阶段的所有数据采集器采集到的数据保存到上述本地数据库中。简单来说,就是每当一个数据采集器完成了数据采集之后,便将该数据采集器采集到的A数据保存到本地数据库中,然后在下一阶段的数据采集器请求该A数据的时候,便从本地数据库中提取该A数据发送给上述下一阶段的数据采集器。
可见,不同阶段的数据采集器之间是可以进行数据交流的,上一阶段采集到的数据可以供下一阶段的数据采集器使用,使得下一阶段的数据采集器更好完成数据采集。于是不同阶段之间的数据交流有利于提高数据采集的效率。
在另一种可实施的方式中,在检测到宕机的数据采集器的情况下,删除该宕机的数据采集器,并获取该宕机的数据采集器的初始化信息,然后利用该初始化信息创建新的数据采集器,以替代所述宕机的数据数据采集器。
在本申请实施例中,在检测到数据采集器宕机的情况下,按照该宕机的数据采集器的初始化信息创建的新的数据采集器,然后将该新的数据采集器替换上述宕机的数据采集器,然后新的数据采集器可以从头开始采集数据,或者按照宕机的数据采集器之前采集到的信息,以及采集的进度,新的数据采集器按照该采集的进度,继续执行采集。
在另一种可实施的方式中,上述Actor模型还包括至少一个监控节点,监控节点用于初始化宕机的数据采集器,于是在检测到宕机的数据采集器的时候,利用监控节点对宕机的数据采集器进行初始化,以控制宕机的数据采集器恢复正常。
本申请实施例描述了另一种解决数据采集器宕机问题的方法,即如果数据采集器宕机,则使用该监控设备对宕机的数据采集器进行初始化。具体的,在检测到数据采集器宕机之后,使用监控节点根据数据采集器的初始化信息对宕机的数据采集器进行初始化,以控制宕机的数据采集器恢复正常。或者,监控节点用于将宕机的数据采集器恢复到宕机前一个时刻的正常状态,具体的,在检测到上述数据采集器宕机之后,获取记录在数据库中的该宕机的数据采集器在宕机前一个时刻的状态信息,并使用监控节点根据上述数据采集器在宕机前一个时刻的状态信息对数据采集器进行恢复,使得数据采集器恢复到上述状态信息对应的正常状态。
在另一种可实施的方式中,在为目标任务创建Actor模型的时候,根据目标任务的重要程度决定是否在上述Actor模型中创建监控节点。具体的,在任务集群中检测到目标任务之后,获取该目标任务的标签,该标签用于指示目标任务的重要等级,若目标任务的重要等级超过了预设等级,则在创建Actor模型的时候,创建上述监控节点,若目标任务的重要等级超过了预设等级,则不创建上述监控节点。
105:在检测到上述多个阶段的所有数据采集器全部采集完数据之后,在上述任务集群中删除所述目标任务。
在本申请实施例中,在检测到上述目标任务完成之后,便在上述任务集群中删除上述目标任务,并检测和执行任务集群中的下一个目标任务。
在另一种可实施的方式中,上述在任务集群中删除目标任务之后,检测已创建的数据采集器的个数,并获取所述已创建的数据采集器的创建时间;若已创建的数据采集器的个数大于预设个数,则按照创建时间从早到晚的排序,依次删除已创建的数据采集器,直到剩下的已创建的数据采集器的个数小于或等于上述预设个数。
在本申请实施例中,系统中的数据采集器可能太多而导致本端装置存储空间不足或者系统运行缓慢,于是在完成目标任务之后,检测已创建的数据采集器的个数,如果已创建的数据采集器的个数超过预设个数,就对数据采集器进行删减,直到剩下的数据采集器的个数小于等于预设个数。其中,按照数据采集器的创建时间由早到晚顺序进行删除,这是因为早创建的数据采集器,相较于晚创建的数据采集器而言,被再次使用的几率更小。
上述删除已创建的数据采集器的详细过程为,检测已创建的数据采集器的个数,并获取该已创建的数据采集器的创建时间,若该已创建的数据采集器的个数大于预设个数,则确定该已创建的数据采集器中创建时间最早的时间节点,并删除该已创建的数据采集器中创建时间最早的数据采集器,然后若在删除该已创建的数据采集器中创建时间最晚的数据采集器之后,已创建的数据采集器的个数仍大于预设个数,则触发执行上述确定已创建的数据采集器中创建时间最早的数据采集器,至删除已创建的数据采集器中创建时间最早的数据采集器的步骤,直到已创建的数据采集器的个数在删除了创建时间最晚的数据采集器之后小于或等于预设个数。
本申请实施例每当检测到任务集群中存在新的目标任务,就为该目标任务建立包括多个数据采集器的Actor模型,并利用多个数据采集器来完成目标任务所指示的数据采集任务,具体的,将上述多个数据采集器划分到多个阶段,并设置该多个阶段的执行顺序,然后再按照该执行顺序,依次触发该多个阶段的数据采集器采集数据,最后在检测到所有阶段的所有数据采集器都采集完数据之后,就在任务集群中删除该目标任务,可见,本申请实施例所提供的数据采集方法中,由于多个数据采集器都是Actor,而Actor是通过信息传递的方式进行通信的,信息传递的好处就是不会产生数据竞争的问题,在处理任务的时候无需同步阻塞等待,并且本申请实施例虽然不是通过Actor来调度上述多个数据采集器进行数据采集,但是本申请实施例通过将上述多个数据采集器划分到不同的阶段,从而设定了上述数据采集器的执行顺序,因此进一步保证了数据采集过程中不会产生数据竞争和死锁,于是本申请实施例不需要借助于锁便可以实现复杂的分布式数据采集,并且大大提高分布式数据采集的并发性能,可见,本申请实施例提供了一种高效的数据采集方法。
参见图2,是本申请实施例提供另一种数据采集方法的示意流程图,如图2所示数据采集方法可包括:
201:检测任务集群中新增的任务。
在本申请实施例中,检测任务集群中是否存在新增的任务,具体的检测过程指的是,本端的数据采集装置定时检测任务集群中是否存在新增的任务,或者任务集群中新增一个任务,本端装置便能接收到用于指示任务集群中新增任务的消息。其中,任务集群指的是待处理的任务的集合,且该任务集群中的不同任务可能由不同的终端所提出,而任务集群中的任务可能是由多个终端共同处理的分布式任务,也可能是仅由一个终端处理的单机任务。
202:若确定上述新增的任务为分布式任务,则确定检测到上述任务集群中存在新增的目标任务。
在本申请实施例中,在检测到任务集群中的新增的任务之后,进一步确定该新增的任务是否为目标任务。具体的,确定该新增的任务是否为分布式任务,若是则确定检测到任务集群中存在新增的目标任务。
在本申请实施例中,上述检测任务集群中新增的任务为分布式任务的过程指的是,获取上述任务集群中新增的任务的类型,若该新增的任务的类型为分布式任务,则表示该新增的任务的类型为分布式任务,或者,获取上述新增的任务的难度等级,若确定该新增的任务的难度等级超过预设级别,则说明该新增的任务需要占用较多的计算资源,并确定该新增的任务为分布式任务,也即是将该难度级别超过预设级别的任务作为目标任务,并接下来采用分布式任务的处理方法对其进行处理。
可见,本申请实施例只有在确定任务集群新增了分布式任务的时候,才确定任务集群中有新增的目标任务,上述检测到的任务集群中新增的分布式任务即目标任务。
203:在检测到任务集群中存在新增的目标任务的情况下,为该目标任务创建Actor模型,Actor模型包括多个数据采集器。
在本申请实施例中,Actor模型为一个用于任务处理的模型,具体来说Actor模型是一个概念模型,用于处理并发计算,它定义了一系列系统组件应该如何动作和交互的通用规则,Actor模型可以用于完成任意类型的任务,但在本申请实施例中构建的Actor模型用于执行数据采集。Actor模型中包含了多个Actor,Actor在本申请实施例中被称为数据采集器,每个数据采集器是Actor模型中进行数据采集的最基本的单元,它能接收一个消息并且基于其执行数据采集。于是上述根据该目标任务的执行内容创建包含多个数据采集器的Actor模型指的是,对目标任务进行分解,然后基于分解之后的目标任务的采集任务,创建多个数据采集器来执行对应的采集任务,需要注意的是,数据采集器在采集数据时,多个数据采集器可能是并行执行的,但也不会造成资源竞争,因为数据采集器之间是通过消息传递的方式进行通信,于是不会造成资源竞争。
需要说明的是,由于本申请实施例采用的所有数据采集器都是Actor,而Actor之间是通过消息传递的方式进行通信,因此数据采集器进行数据采集的时候,不会产生资源竞争的问题。其中,消息传递的方式指的是在消息传递系统中,进程间的数据交换是以格式化的消息(Message)为单位的,Actors的一大重要特征在于Actors之间相互隔离,它们并不互相共享内存,一个Actor能维持一个私有的状态,并且这个状态不可能被另一个Actor所改变,而消息传递也保证了Actor之间的异步处理,因此Actor之间也不会存在数据竞争。若通信的进程之间不存在可直接访问的共享空间,则必须利用操作系统提供的消息传递方法实现进程通信,进程通过系统提供的发送消息和接收消息两个原语进行数据交换。简单来说,Actor之间通过消息传递的方式来进行资源共享,当Actor需要另一个Actor的资源的时候,只需要将消息发送给另一个Actor,但不关心另一个Actor什么时候处理,因此Actor之间的消息是异步传输的,类似邮件通信。具体的,在Actor模型里每个Actor都有地址,所以它们才能够相互发送消息,尽管许多Actor同时运行,但是一个Actor只能顺序地处理消息。也就是说其它三个Actor发送了给一个Actor分别发送了一条消息,这个Actor只能一次处理一条,如果需要并行处理三条消息,则需要三个Actor分别对这三条消息进行处理,并且如果Actor在处理消息的过程中又接收到一条新的消息,则该新的消息会被存储到Actor的邮箱Mailbox中,每个Actor对应有一个Mailbox。
可见,Actor通过消息传递的方式将不同Actor的可访问的资源进行了分隔,并保障了Actor之间的消息的异步处理,从而避免了使用锁来处理数据条件竞争(data race)的问题。消息传递机制最大的优点就是不会产生数据竞争状态(data race)。
204:将上述多个数据采集器划分到多个阶段,并设定该多个阶段的触发顺序。
在本申请实施例中,将上述多个数据采集器划分到多个阶段,并设定该多个阶段的触发顺序,每个阶段包含至少一个数据采集器,相同阶段的不同数据采集器位于不同的终端中,分别用于采集不同终端中的数据。
需要说明的是,由于相同阶段的不同数据采集器分别分布于不同的终端上,于是本申请实施例应用于分布式数据采集,可见,由于位于不同的终端上的数据采集器在采集数据的时候,只会占用其所在终端的计算资源,于是在一个终端集群中的多个终端共同处理一个分布式采集任务,相比单机处理,分布式采集可以大大提升了计算能力和计算速度。需要注意的是,由于本申请实施例采用了Actor模型中的Actor来作为数据采集器,才可以不需要分布式锁便能实现分布式数据采集,这是因为Actor只关注接收到的消息的内容,而不关注消息的发送方是本地的Actor还是终端上的Actor,于是只要保证多个Actor之间的消息能够顺利达到即可,也也允许了本申请实施例可以不及住锁便能在包含多个终端的终端集群中构建Actor模型,并实现分布式数据采集。
205:按照上述多个阶段的触发顺序,依次触发上述多个阶段的数据采集器采集数据。
在本申请实施例中,按照上述多个阶段的触发顺序,依次触发上述多个阶段的数据采集器采集数据。具体的,按照上述多个阶段的触发顺序,确定当前待触发阶段;若确定待触发阶段位于上述触发顺序的首位,或者确定接收到待触发阶段的前一阶段的所有数据采集器的完成采集的信息,则触发待触发阶段的所有数据采集器采集数据;在接收到待触发阶段的所有数据采集器的完成采集的信息的情况下,触发待触发阶段的下一阶段的所有数据采集器采集数据,直至接收到所述多个阶段的所有数据采集器的完成采集的信息。
举例来说,上述Actor模型包含三个阶段的数据采集器,按照执行顺序排序,该三个阶段分别为第一阶段、第二阶段和第三阶段,于是首先想第一阶段的所有数据采集器发送数据采集指令,使得该阶段的所有数据采集器并发执行数据采集,当第一阶段的所有数据采集器采集完数据之后,本端装置将会收到第一阶段的每个数据采集器发送的完成采集的信息,当接受到第一阶段的所有数据采集器的完成采集的信息之后,表示第一阶段的所有数据采集器完成数据采集,可以触发执行第二阶段的数据采集器,于是触发第二阶段的所有数据采集器并发执行数据采集,当接收到第二阶段的所有数据采集器的完成采集的信息之后,触发执行第三阶段的数据采集器执行数据采集,当接收到第三阶段的所有数据采集器的完成采集的信息之后,表示数据全部采集完成,即目标任务完成。
需要说明的是,本申请实施例虽然没有用Actor来作为调度节点来调度数据采集器进行数据采集,但是本申请通过将数据采集器划分到多个阶段,使得会产生数据竞争的数据采集器划分到不同的阶段,于是本申请即使不使用Actor作为调度节点,也可以实现分布式数据采集,并且也不会用到锁。
在另一种可实施的方式中,上一阶段的数据采集器采集到的数据可以传输给下一阶段的数据采集器,以供下一阶段的数据采集器使用。具体的,在上述触发待触发阶段的所有数据采集器采集数据之前,获取待触发阶段的前一阶段的所有数据采集器采集到的数据,并将待触发阶段的前一阶段的所有数据采集器采集到的数据保存到本地数据库中,然后接收到待触发阶段的目标数据采集器的数据请求指令,该数据请求指令用于请求所述本地数据库中的目标数据,于是在上述本地数据库中调取目标数据,并将该目标数据发送给目标数据采集器,最后在接收到待触发阶段的所有数据采集器的采集完成消息的情况下,将待触发阶段的所有数据采集器采集到的数据保存到上述本地数据库中。简单来说,就是每当一个数据采集器完成了数据采集之后,便将该数据采集器采集到的A数据保存到本地数据库中,然后在下一阶段的数据采集器请求该A数据的时候,便从本地数据库中提取该A数据发送给上述下一阶段的数据采集器。
可见,不同阶段的数据采集器之间是可以进行数据交流的,上一阶段采集到的数据可以供下一阶段的数据采集器使用,使得下一阶段的数据采集器更好完成数据采集。于是不同阶段之间的数据交流有利于提高数据采集的效率。
在另一种可实施的方式中,在检测到宕机的数据采集器的情况下,删除该宕机的数据采集器,并获取该宕机的数据采集器的初始化信息,然后利用该初始化信息创建新的数据采集器,以替代所述宕机的数据数据采集器。
在本申请实施例中,在检测到数据采集器宕机的情况下,按照该宕机的数据采集器的初始化信息创建的新的数据采集器,然后将该新的数据采集器替换上述宕机的数据采集器,然后新的数据采集器可以从头开始采集数据,或者按照宕机的数据采集器之前采集到的信息,以及采集的进度,新的数据采集器按照该采集的进度,继续执行采集。
在另一种可实施的方式中,上述Actor模型还包括至少一个监控节点,监控节点用于初始化宕机的数据采集器,于是在检测到宕机的数据采集器的时候,利用监控节点对宕机的数据采集器进行初始化,以控制宕机的数据采集器恢复正常。
本申请实施例描述了另一种解决数据采集器宕机问题的方法,即如果数据采集器宕机,则使用该监控设备对宕机的数据采集器进行初始化。具体的,在检测到数据采集器宕机之后,使用监控节点根据数据采集器的初始化信息对宕机的数据采集器进行初始化,以控制宕机的数据采集器恢复正常。或者,监控节点用于将宕机的数据采集器恢复到宕机前一个时刻的正常状态,具体的,在检测到上述数据采集器宕机之后,获取记录在数据库中的该宕机的数据采集器在宕机前一个时刻的状态信息,并使用监控节点根据上述数据采集器在宕机前一个时刻的状态信息对数据采集器进行恢复,使得数据采集器恢复到上述状态信息对应的正常状态。
在另一种可实施的方式中,在为目标任务创建Actor模型的时候,根据目标任务的重要程度决定是否在上述Actor模型中创建监控节点。具体的,在任务集群中检测到目标任务之后,获取该目标任务的标签,该标签用于指示目标任务的重要等级,若目标任务的重要等级超过了预设等级,则在创建Actor模型的时候,创建上述监控节点,若目标任务的重要等级超过了预设等级,则不创建上述监控节点。
206:在检测到上述多个阶段的所有数据采集器全部采集完数据之后,在上述任务集群中删除所述目标任务。
在本申请实施例中,由于本端通过检测所有数据采集器是否都执行完数据采集而可以感知到目标任务是否完成,于是可以检测到上述目标任务是否已完成,若在检测到上述目标任务完成,则在上述任务集群中删除上述目标任务,并检测和执行任务集群中的下一个目标任务。
207:检测已创建的数据采集器的个数,并获取该已创建的数据采集器的创建时间。
在本申请实施例中,在上述目标任务完成,检测上述已创建的数据采集器,统计数据采集器的个数,以及每个已创建的数据采集器的创建时间。基于创建时间从早到晚的顺序,对已创建的数据采集器进行排序。
208:若上述已创建的数据采集器的个数大于预设个数,则按照创建时间从早到晚的排序,依次删除上述已创建的数据采集器,直到剩下的已创建的数据采集器的个数小于或等于预设个数。
在本申请实施例中,系统中的数据采集器可能太多而导致本端装置存储空间不足或者系统运行缓慢,于是在完成目标任务之后,检测已创建的数据采集器的个数,如果已创建的数据采集器的个数超过预设个数,就对数据采集器进行删减,直到剩下的数据采集器的个数小于等于预设个数。其中,按照数据采集器的创建时间由早到晚顺序进行删除,这是因为早创建的数据采集器,相较于晚创建的数据采集器而言,被再次使用的几率更小。
上述删除已创建的数据采集器的详细过程为,检测已创建的数据采集器的个数,并获取该已创建的数据采集器的创建时间,若该已创建的数据采集器的个数大于预设个数,则确定该已创建的数据采集器中创建时间最早的时间节点,并删除该已创建的数据采集器中创建时间最早的数据采集器,然后若在删除该已创建的数据采集器中创建时间最晚的数据采集器之后,已创建的数据采集器的个数仍大于预设个数,则触发执行上述确定已创建的数据采集器中创建时间最早的数据采集器,至删除已创建的数据采集器中创建时间最早的数据采集器的步骤,直到已创建的数据采集器的个数在删除了创建时间最晚的数据采集器之后小于或等于预设个数。
本申请实施例相对于上一申请实施例来说更加的详细,且详细描述了在只有当在任务集群中新增的任务是分布式任务才能执行上述分布式数据采集方法,此外,还详细描述了在目标任务完成之后,若已创建的数据采集器超过预设个数,就对多余的数据采集器进行清除,清除创建时间较早的数据采集器,使得删除之后已创建的数据采集器的个数小于等于预设个数。因此本申请实施例一方面只适用于分布式任务,另一方面,本申请实施例通过在目标任务完成之后及时得对多余的数据采集器进行清除,来保障了本装置的系统的顺畅运行,并且保障了下一个目标任务的处理。总的来说数据采集的效率进一步被提高了。
需要说明的是,上文对各个实施例的描述倾向于强调各个实施例之间的不同之处,其相同或相似之处可以互相参考,为了简洁,本文不再赘述。
本申请实施例还提供一种数据采集装置,该数据采集装置用于执行前述任一项的数据采集方法的单元。具体地,参见图3,是本申请实施例提供的一种数据采集装置的示意框图。本实施例的数据采集装置包括:检测单元301、创建单元302、划分单元303、执行单元304以及删除单元305。具体的:
检测单元301,用于检测任务集群中是否存在新增的目标任务;
创建单元302,用于在检测到任务集群中存在新增的目标任务的情况下,为上述目标任务创建Actor模型,上述Actor模型包括多个数据采集器,上述数据采集器用于采集数据,上述多个数据采集器之间通过消息传递的方式通信;
划分单元303,用于将上述多个数据采集器划分到多个阶段,并设定上述多个阶段的触发顺序,每个阶段包含至少一个数据采集器,相同阶段的不同数据采集器位于不同的终端中,分别用于采集不同终端中的数据;
执行单元304,用于按照上述多个阶段的触发顺序,依次触发上述多个阶段的数据采集器采集数据;
删除单元305,用于在检测到上述多个阶段的数据采集器全部采集完数据之后,在上述任务集群中删除上述目标任务。
在另一种可实施的方式中,上述数据采集装置还包括确定单元306,用于按照上述多个阶段的触发顺序,确定当前待触发阶段;上述执行单元304,具体用于若确定上述待触发阶段位于上述触发顺序的首位,或者确定接收到上述待触发阶段的前一阶段的所有数据采集器的完成采集的信息,则触发上述待触发阶段的所有数据采集器采集数据;上述执行单元304,还用于在接收到上述待触发阶段的所有数据采集器的完成采集的信息的情况下,触发上述待触发阶段的下一阶段的所有数据采集器采集数据,直至接收到上述多个阶段的所有数据采集器的完成采集的信息。
在另一种可实施的方式中,上述数据采集装置还包括获取单元307,用于在上述触发上述待触发阶段的所有数据采集器采集数据之前,获取上述待触发阶段的前一阶段的所有数据采集器采集到的数据;上述数据采集装置还包括保存单元308,用于将上述待触发阶段的前一阶段的所有数据采集器采集到的数据保存到本地数据库中;上述数据采集装置还包括保存单元308,用于接收到上述待触发阶段的目标数据采集器的数据请求指令,上述数据请求指令用于请求上述本地数据库中的目标数据;上述获取单元307,还用于上述在上述本地数据库中调取上述目标数据;上述数据采集装置还包括发送单元310,用于将上述目标数据发送给上述目标数据采集器;上述保存单元308还用于在接收到上述待触发阶段的所有数据采集器的采集完成消息的情况下,将上述待触发阶段的所有数据采集器采集到的数据保存到上述本地数据库中。
在另一种可实施的方式中,上述检测单元301,还用于检测上述任务集群中新增的任务;上述确定单元306,还用于确定上述新增的任务为分布式任务,以及确定检测到上述任务集群中存在新增的目标任务。
在另一种可实施的方式中,上述检测单元301,还用于检测已创建的数据采集器的个数;上述获取单元307,还用于获取上述已创建的数据采集器的创建时间;上述删除单元305,还用于若上述已创建的数据采集器的个数大于预设个数,则按照上述创建时间从早到晚的排序,依次删除上述已创建的数据采集器,直到剩下的已创建的数据采集器的个数小于或等于上述预设个数。
在另一种可实施的方式中,上述检测单元301还用于检测宕机的数据采集器;上述删除单元305,还用于删除上述宕机的数据采集器;上述获取单元307,还用于获取上述宕机的数据采集器的初始化信息;上述数据采集装置还包括替换单元311,利用上述初始化信息创建新的数据采集器,以替代上述宕机的数据数据采集器。
在另一种可实施的方式中,上述Actor模型还包括至少一个监控节点,上述监控节点用于初始化宕机的数据采集器,上述检测单元301,还用于检测宕机的数据采集器;上述数据采集装置还包括恢复单元312,用于利用上述监控节点对上述宕机的数据采集器进行初始化,以控制上述宕机的数据采集器恢复正常。
本申请实施例每当检测单元检测到任务集群中存在新的目标任务,创建单元就为该目标任务建立包括多个数据采集器的Actor模型,并执行单元利用多个数据采集器来完成目标任务所指示的数据采集任务,具体的,划分单元将上述多个数据采集器划分到多个阶段,并设置该多个阶段的执行顺序,然后执行单元再按照该执行顺序,依次触发该多个阶段的数据采集器采集数据,最后在检测单元检测到所有阶段的所有数据采集器都采集完数据之后,删除单元就在任务集群中删除该目标任务,可见,本申请实施例所提供的数据采集方法中,由于多个数据采集器都是Actor,而Actor是通过信息传递的方式进行通信的,信息传递的好处就是不会产生数据竞争的问题,在处理任务的时候无需同步阻塞等待,并且本申请实施例虽然不是通过Actor来调度上述多个数据采集器进行数据采集,但是本申请实施例通过将上述多个数据采集器划分到不同的阶段,从而设定了上述数据采集器的执行顺序,因此进一步保证了数据采集过程中不会产生数据竞争和死锁,于是本申请实施例不需要借助于锁便可以实现复杂的分布式数据采集,并且大大提高分布式数据采集的并发性能,可见,本申请实施例提供了一种高效的数据采集方法。
参见图4,是本申请另一实施例提供的一种数据采集装置示意框图。如图所示的本实施例中的数据采集装置可以包括:一个或多个处理器410和存储器420。上述处理器410和存储器420通过总线430连接。存储器420用于存储计算机程序,计算机程序包括程序指令,处理器410用于执行存储器420存储的程序指令。具体的:
处理器410,用于执行检测单元301的功能,用于检测任务集群中是否存在新增的目标任务;还用于执行创建单元302的功能,用于在检测到任务集群中存在新增的目标任务的情况下,为上述目标任务创建Actor模型,上述Actor模型包括多个数据采集器,上述数据采集器用于采集数据,上述多个数据采集器之间通过消息传递的方式通信;还用执行划分单元303的功能,用于将上述多个数据采集器划分到多个阶段,并设定上述多个阶段的触发顺序,每个阶段包含至少一个数据采集器,相同阶段的不同数据采集器位于不同的终端中,分别用于采集不同终端中的数据;还用于执行执行单元304的功能,用于按照上述多个阶段的触发顺序,依次触发上述多个阶段的数据采集器采集数据;还用于执行删除单元305的功能,用于在检测到上述多个阶段的数据采集器全部采集完数据之后,在上述任务集群中删除上述目标任务。
在另一种可实施的方式中,上述处理器410,还用于执行确定单元306的功能,用于按照上述多个阶段的触发顺序,确定当前待触发阶段;还用于若确定上述待触发阶段位于上述触发顺序的首位,或者确定接收到上述待触发阶段的前一阶段的所有数据采集器的完成采集的信息,则触发上述待触发阶段的所有数据采集器采集数据;还用于在接收到上述待触发阶段的所有数据采集器的完成采集的信息的情况下,触发上述待触发阶段的下一阶段的所有数据采集器采集数据,直至接收到上述多个阶段的所有数据采集器的完成采集的信息。
在另一种可实施的方式中,上述处理器410还用于执行获取单元307的功能,用于在上述触发上述待触发阶段的所有数据采集器采集数据之前,获取上述待触发阶段的前一阶段的所有数据采集器采集到的数据;上述处理器410还用于保存单元308,用于将上述待触发阶段的前一阶段的所有数据采集器采集到的数据保存到本地数据库中;还用于接收到上述待触发阶段的目标数据采集器的数据请求指令,上述数据请求指令用于请求上述本地数据库中的目标数据;还用于上述在上述本地数据库中调取上述目标数据;上述数据采集装置还包括通信单元430,用于执行发送单元310的功能,用于将上述目标数据发送给上述目标数据采集器;上述上述处理器410还用于在接收到上述待触发阶段的所有数据采集器的采集完成消息的情况下,将上述待触发阶段的所有数据采集器采集到的数据保存到上述本地数据库中。
在另一种可实施的方式中,上述处理器410,还用于检测上述任务集群中新增的任务;上述处理器410,还用于确定上述新增的任务为分布式任务,以及确定检测到上述任务集群中存在新增的目标任务。
在另一种可实施的方式中,上述处理器410,还用于检测已创建的数据采集器的个数;上述处理器410,还用于获取上述已创建的数据采集器的创建时间;上述处理器410,还用于若上述已创建的数据采集器的个数大于预设个数,则按照上述创建时间从早到晚的排序,依次删除上述已创建的数据采集器,直到剩下的已创建的数据采集器的个数小于或等于上述预设个数。
在另一种可实施的方式中,上述处理器410还用于检测宕机的数据采集器;上述处理器410,还用于删除上述宕机的数据采集器;上述处理器410,还用于获取上述宕机的数据采集器的初始化信息;上述处理器410还用于执行替换单元311的功能,利用上述初始化信息创建新的数据采集器,以替代上述宕机的数据数据采集器。
在另一种可实施的方式中,上述Actor模型还包括至少一个监控节点,上述监控节点用于初始化宕机的数据采集器,上述处理器410还用于检测宕机的数据采集器;上述处理器410还用于执行恢复单元312的功能,用于利用上述监控节点对上述宕机的数据采集器进行初始化,以控制上述宕机的数据采集器恢复正常。
应当理解,在本申请实施例中,所称处理器410可以是中央处理单元(CentralProcessing Unit,CPU),该处理器还可以是其他通用处理器、数字信号处理器(DigitalSignal Processor,DSP)、专用集成电路(Application Specific Integrated Circuit,ASIC)、现成可编程门阵列(Field-Programmable Gate Array,FPGA)或者其他可编程逻辑器件、分立门或者晶体管逻辑器件、分立硬件组件等。通用处理器可以是微处理器或者该处理器也可以是任何常规的处理器等。
该存储器420可以包括只读存储器和随机存取存储器,并向处理器410提供指令和数据。存储器420的一部分还可以包括非易失性随机存取存储器。例如,存储器420还可以存储设备类型的信息。
具体实现中,本申请实施例中所描述的处理器410可执行本申请实施例提供的数据采集方法的第一实施例和第二实施例中所描述的实现方式,也可执行本申请实施例所描述的数据采集装置的实现方式,在此不再赘述。
在本申请的另一实施例中提供一种计算机可读存储介质,计算机可读存储介质存储有计算机程序,计算机程序包括程序指令,程序指令被处理器执行。
计算机可读存储介质可以是前述任一实施例的数据采集装置的内部存储单元,例如数据采集装置的硬盘或内存。计算机可读存储介质也可以是数据采集装置的外部存储设备,例如数据采集装置上配备的插接式硬盘,智能存储卡(Smart Media Card,SMC),安全数字(Secure Digital,SD)卡,闪存卡(Flash Card)等。进一步地,计算机可读存储介质还可以既包括数据采集装置的内部存储单元也包括外部存储设备。计算机可读存储介质用于存储计算机程序以及数据采集装置所需的其他程序和数据。计算机可读存储介质还可以用于暂时地存储已经输出或者将要输出的数据。
本领域普通技术人员可以意识到,结合本文中所公开的实施例描述的各示例的单元及算法步骤,能够以电子硬件、计算机软件或者二者的结合来实现,为了清楚地说明硬件和软件的可互换性,在上述说明中已经按照功能一般性地描述了各示例的组成及步骤。这些功能究竟以硬件还是软件方式来执行,取决于技术方案的特定应用和设计约束条件。专业技术人员可以对每个特定的应用来使用不同数据采集方法来实现所描述的功能,但是这种实现不应认为超出本申请的范围。
所属领域的技术人员可以清楚地了解到,为了描述的方便和简洁,上述描述的数据采集装置和单元的具体工作过程,可以参考前述数据采集方法实施例中的对应过程,在此不再赘述。
在本申请所提供的几个实施例中,应该理解到,所揭露的数据采集装置和数据采集方法,可以通过其它的方式实现。例如,以上所描述的装置实施例仅仅是示意性的,例如,单元的划分,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式,例如多个单元或组件可以结合或者可以集成到另一个系统,或一些特征可以忽略,或不执行。另外,所显示或讨论的相互之间的耦合或直接耦合或通信连接可以是通过一些接口、装置或单元的间接耦合或通信连接,也可以是电的,机械的或其它的形式连接。
作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部单元来实现本申请实施例方案的目的。
另外,在本申请各个实施例中的各功能单元可以集成在一个处理单元中,也可以是各个单元单独物理存在,也可以是两个或两个以上单元集成在一个单元中。上述集成的单元既可以采用硬件的形式实现,也可以采用软件功能单元的形式实现。
集成的单元如果以软件功能单元的形式实现并作为独立的产品销售或使用时,可以存储在一个计算机可读取存储介质中。基于这样的理解,本申请的技术方案本质上或者说对现有技术做出贡献的部分,或者该技术方案的全部或部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质中,包括若干指令用以使得一台计算机设备(可以是个人计算机,数据采集装置,或者网络设备等)执行本申请各个实施例方法的全部或部分步骤。而前述的存储介质包括:U盘、移动硬盘、只读存储器(ROM,Read-OnlyMemory)、随机存取存储器(RAM,Random Access Memory)、磁碟或者光盘等各种可以存储程序代码的介质。
Claims (9)
1.一种基于Actor模型的数据采集方法,其特征在于,包括:
检测任务集群中是否存在新增的目标任务;
在检测到任务集群中存在新增的目标任务的情况下,为所述目标任务创建Actor模型,所述Actor模型包括多个数据采集器,所述数据采集器用于采集数据,所述多个数据采集器之间通过消息传递的方式通信;
将所述多个数据采集器划分到多个阶段,并设定所述多个阶段的触发顺序,每个阶段包含至少一个数据采集器,相同阶段的不同数据采集器位于不同的终端中,分别用于采集不同终端中的数据;
按照所述多个阶段的触发顺序,确定当前待触发阶段;
若确定所述待触发阶段位于所述触发顺序的首位,或者确定接收到所述待触发阶段的前一阶段的所有数据采集器的完成采集的信息,则触发所述待触发阶段的所有数据采集器采集数据,所述完成采集的信息用于指示所述数据采集器完成了数据采集;
在接收到所述待触发阶段的所有数据采集器的完成采集的信息的情况下,触发所述待触发阶段的下一阶段的所有数据采集器采集数据,直至接收到所述多个阶段的所有数据采集器的完成采集的信息;
在检测到所述多个阶段的所有数据采集器全部采集完数据之后,在所述任务集群中删除所述目标任务。
2.根据权利要求1所述的方法,其特征在于,在所述触发所述待触发阶段的所有数据采集器采集数据之前,所述方法还包括:
获取所述待触发阶段的前一阶段的所有数据采集器采集到的数据,并将所述待触发阶段的前一阶段的所有数据采集器采集到的数据保存到本地数据库中;
接收到所述待触发阶段的目标数据采集器的数据请求指令,所述数据请求指令用于请求所述本地数据库中的目标数据;
在所述本地数据库中调取所述目标数据,并将所述目标数据发送给所述目标数据采集器;
在接收到所述待触发阶段的所有数据采集器的采集完成消息的情况下,将所述待触发阶段的所有数据采集器采集到的数据保存到所述本地数据库中。
3.根据权利要求1所述的方法,其特征在于,所述检测任务集群中是否存在新增的目标任务,包括:
检测所述任务集群中新增的任务;
若确定所述新增的任务为分布式任务,则确定检测到所述任务集群中存在新增的目标任务。
4.根据权利要求1所述的方法,其特征在于,所述在所述任务集群中删除所述目标任务之后,还包括:
检测已创建的数据采集器的个数,并获取所述已创建的数据采集器的创建时间;
若所述已创建的数据采集器的个数大于预设个数,则按照所述创建时间从早到晚的排序,依次删除所述已创建的数据采集器,直到剩下的已创建的数据采集器的个数小于或等于所述预设个数。
5.根据权利要求1所述的方法,其特征在于,所述方法还包括:
在检测到宕机的数据采集器的情况下,删除所述宕机的数据采集器;
获取所述宕机的数据采集器的初始化信息;
利用所述初始化信息创建新的数据采集器,以替代所述宕机的数据采集器。
6.根据权利要求1所述的方法,其特征在于,所述Actor模型还包括至少一个监控节点,所述监控节点用于初始化宕机的数据采集器,所述方法还包括:
若检测到宕机的数据采集器,则利用所述监控节点对所述宕机的数据采集器进行初始化,以控制所述宕机的数据采集器恢复正常。
7.一种数据采集装置,其特征在于,包括:
检测单元,用于检测任务集群中是否存在新增的目标任务;
创建单元,用于在检测到任务集群中存在新增的目标任务的情况下,为所述目标任务创建Actor模型,所述Actor模型包括多个数据采集器,所述数据采集器用于采集数据,所述多个数据采集器之间通过消息传递的方式通信;
划分单元,用于将所述多个数据采集器划分到多个阶段,并设定所述多个阶段的触发顺序,每个阶段包含至少一个数据采集器,相同阶段的不同数据采集器位于不同的终端中,分别用于采集不同终端中的数据;
执行单元,用于按照所述多个阶段的触发顺序,确定当前待触发阶段;若确定所述待触发阶段位于所述触发顺序的首位,或者确定接收到所述待触发阶段的前一阶段的所有数据采集器的完成采集的信息,则触发所述待触发阶段的所有数据采集器采集数据,所述完成采集的信息用于指示所述数据采集器完成了数据采集;在接收到所述待触发阶段的所有数据采集器的完成采集的信息的情况下,触发所述待触发阶段的下一阶段的所有数据采集器采集数据,直至接收到所述多个阶段的所有数据采集器的完成采集的信息;
删除单元,用于在检测到所述多个阶段的数据采集器全部采集完数据之后,在所述任务集群中删除所述目标任务。
8.一种数据采集装置,其特征在于,包括处理器和存储器,所述处理器和存储器相互连接,其中,所述存储器用于存储计算机程序,所述计算机程序包括程序指令,所述处理器被配置用于调用所述程序指令,用以执行如权利要求1-6任一项所述的方法。
9.一种计算机可读存储介质,其特征在于,所述计算机可读存储介质存储有计算机程序,所述计算机程序包括程序指令,所述程序指令当被处理器执行时使所述处理器执行如权利要求1-6任一项所述的方法。
Priority Applications (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201910428815.2A CN110245025B (zh) | 2019-05-20 | 2019-05-20 | 一种基于Actor模型的数据采集方法、装置及存储介质 |
PCT/CN2019/102705 WO2020232870A1 (zh) | 2019-05-20 | 2019-08-27 | 一种基于Actor模型的数据采集方法、装置及存储介质 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201910428815.2A CN110245025B (zh) | 2019-05-20 | 2019-05-20 | 一种基于Actor模型的数据采集方法、装置及存储介质 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN110245025A CN110245025A (zh) | 2019-09-17 |
CN110245025B true CN110245025B (zh) | 2022-05-10 |
Family
ID=67884718
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201910428815.2A Active CN110245025B (zh) | 2019-05-20 | 2019-05-20 | 一种基于Actor模型的数据采集方法、装置及存储介质 |
Country Status (2)
Country | Link |
---|---|
CN (1) | CN110245025B (zh) |
WO (1) | WO2020232870A1 (zh) |
Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN104063448A (zh) * | 2014-06-18 | 2014-09-24 | 华东师范大学 | 一种视频领域相关的分布式微博数据抓取系统 |
CN104965761A (zh) * | 2015-07-21 | 2015-10-07 | 华中科技大学 | 一种基于gpu/cpu混合架构的流程序多粒度划分与调度方法 |
CN106649124A (zh) * | 2016-12-28 | 2017-05-10 | 桂林电子科技大学 | 一种基于Actor模型的并行动态符号执行方法和系统 |
CN108475360A (zh) * | 2015-12-31 | 2018-08-31 | 微软技术许可有限责任公司 | 分布式计算依赖管理系统 |
CN109191103A (zh) * | 2018-07-27 | 2019-01-11 | 阿里巴巴集团控股有限公司 | 一种数据梳理方法及装置 |
Family Cites Families (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US9142024B2 (en) * | 2008-12-31 | 2015-09-22 | Lucasfilm Entertainment Company Ltd. | Visual and physical motion sensing for three-dimensional motion capture |
US9553944B2 (en) * | 2010-12-29 | 2017-01-24 | Oracle International Corporation | Application server platform for telecom-based applications using an actor container |
CN107135156A (zh) * | 2017-06-07 | 2017-09-05 | 努比亚技术有限公司 | 调用链数据采集方法、移动终端及计算机可读存储介质 |
CN109766326A (zh) * | 2019-01-07 | 2019-05-17 | 重庆邮电大学 | 一种以语义化的方式进行智能家居中多智能体任务规划的方法 |
-
2019
- 2019-05-20 CN CN201910428815.2A patent/CN110245025B/zh active Active
- 2019-08-27 WO PCT/CN2019/102705 patent/WO2020232870A1/zh active Application Filing
Patent Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN104063448A (zh) * | 2014-06-18 | 2014-09-24 | 华东师范大学 | 一种视频领域相关的分布式微博数据抓取系统 |
CN104965761A (zh) * | 2015-07-21 | 2015-10-07 | 华中科技大学 | 一种基于gpu/cpu混合架构的流程序多粒度划分与调度方法 |
CN108475360A (zh) * | 2015-12-31 | 2018-08-31 | 微软技术许可有限责任公司 | 分布式计算依赖管理系统 |
CN106649124A (zh) * | 2016-12-28 | 2017-05-10 | 桂林电子科技大学 | 一种基于Actor模型的并行动态符号执行方法和系统 |
CN109191103A (zh) * | 2018-07-27 | 2019-01-11 | 阿里巴巴集团控股有限公司 | 一种数据梳理方法及装置 |
Non-Patent Citations (1)
Title |
---|
Spark性能数据收集分析系统的设计与实现;吴雯祺;《中国优秀博硕士学位论文全文数据库(硕士)信息科技辑(月刊)》;20160215(第02期);第I138-815页 * |
Also Published As
Publication number | Publication date |
---|---|
WO2020232870A1 (zh) | 2020-11-26 |
CN110245025A (zh) | 2019-09-17 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN110231995B (zh) | 一种基于Actor模型的任务调度方法、装置及存储介质 | |
CN106802826B (zh) | 一种基于线程池的业务处理方法及装置 | |
US11392414B2 (en) | Cooperation-based node management protocol | |
WO2019223599A1 (zh) | 数据采集系统、方法、节点设备及存储介质 | |
CN112905390A (zh) | 日志数据备份方法、装置、设备及存储介质 | |
CN112363972B (zh) | 支持多cpu间通信的电子设备及方法 | |
CN110245025B (zh) | 一种基于Actor模型的数据采集方法、装置及存储介质 | |
CN114444715A (zh) | 图数据处理方法、装置、系统、电子设备及可读存储介质 | |
CN110955461B (zh) | 计算任务的处理方法、装置、系统、服务器和存储介质 | |
CN106599222B (zh) | 一种流式并行处理日志的方法和设备 | |
CN111831408A (zh) | 异步任务处理方法、装置、电子设备及介质 | |
CN113254253B (zh) | 一种数据处理方法、系统及设备 | |
CN113268395B (zh) | 业务数据的处理方法、处理装置及终端 | |
CN115174090A (zh) | 区块链共识方法及装置 | |
CN115221116A (zh) | 一种数据写入方法、装置、设备及可读存储介质 | |
CN112395081B (zh) | 一种资源在线自动回收方法、系统、服务器以及存储介质 | |
CN107766442B (zh) | 一种海量数据关联规则挖掘方法及系统 | |
US9509780B2 (en) | Information processing system and control method of information processing system | |
CN112417015A (zh) | 数据分发方法和装置、存储介质及电子装置 | |
CN111752911A (zh) | 一种基于Flume的数据传输方法、系统、终端及存储介质 | |
CN112540985B (zh) | 基于分布式计算框架的全局排序输出系统及其方法 | |
CN110046192B (zh) | 请求信息的序号生成系统和方法 | |
CN115951985A (zh) | 一种任务执行方法及装置 | |
CN116541450A (zh) | 一种跨系统流程环节串接方法及装置 | |
CN113268200A (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 |