CN114625546A - 一种数据处理方法及装置 - Google Patents
一种数据处理方法及装置 Download PDFInfo
- Publication number
- CN114625546A CN114625546A CN202011463399.9A CN202011463399A CN114625546A CN 114625546 A CN114625546 A CN 114625546A CN 202011463399 A CN202011463399 A CN 202011463399A CN 114625546 A CN114625546 A CN 114625546A
- Authority
- CN
- China
- Prior art keywords
- data
- task
- message
- data consumer
- message queue
- 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
- 238000003672 processing method Methods 0.000 title claims abstract description 16
- 238000005192 partition Methods 0.000 claims abstract description 67
- 238000000034 method Methods 0.000 claims abstract description 53
- 238000012545 processing Methods 0.000 claims abstract description 51
- 238000009826 distribution Methods 0.000 claims abstract description 34
- 238000004590 computer program Methods 0.000 claims description 9
- 238000003860 storage Methods 0.000 claims description 6
- 230000008569 process Effects 0.000 description 24
- 238000010586 diagram Methods 0.000 description 12
- 230000006870 function Effects 0.000 description 4
- 238000012986 modification Methods 0.000 description 3
- 230000004048 modification Effects 0.000 description 3
- 230000000717 retained effect Effects 0.000 description 2
- 238000004458 analytical method Methods 0.000 description 1
- 230000001143 conditioned effect Effects 0.000 description 1
- 230000008878 coupling Effects 0.000 description 1
- 238000010168 coupling process Methods 0.000 description 1
- 238000005859 coupling reaction Methods 0.000 description 1
- 238000005516 engineering process Methods 0.000 description 1
- 238000004519 manufacturing process Methods 0.000 description 1
- 230000003287 optical effect Effects 0.000 description 1
- 238000012546 transfer Methods 0.000 description 1
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/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)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
本发明实施例提供一种数据处理方法及装置,该方法包括:数据消费者从数据消费者对应的消息队列中获取任务;数据消费者对应的消息队列为消息分区中多个消息队列中的一个,每个消息队列对应一个数据消费者;各数据消费者并发执行;数据消费者确定任务为标识任务时,停止从数据消费者对应的消息队列中获取任务;标识任务在数据生产者分发时,按照分发顺序设置在作为先决条件的数据任务的前后,且写入消息分区中的每个消息队列;数据消费者在确定各数据消费者均停止从消息分区中获取任务时,重新从数据消费者对应的消息队列中获取任务。如此,保留数据任务的全局有序信息,提高数据任务处理的准确率。
Description
技术领域
本申请涉及网络技术领域,尤其涉及一种数据处理方法及装置。
背景技术
在异构数据库之间的实时数据同步场景中(如将关系型数据库MySQL/Oracle中的数据,实时同步到非关系型的数据库ES、HDFS、HBase等数据库中),常需引进消息队列中间件作为数据的中转平台,通过消息队列中间件来降低系统各个功能模块的耦合性、消减流量峰值、并通过异步并发处理来提高系统的总体性能。例如,将关系型数据库所有的数据变动记录到日志文件中,实时解析日志文件的内容,并将获得的多个解析结果分发至多个消息队列中,由非关系型数据库实时消费消息队列中的数据。但该方法只能保证一个消息队列中的各解析结果是有序的,例如,解析结果1、2、3、4、5、6分发至两个消息队列,消息队列1中得到的解析结果为1、3、5;消息队列1中得到的解析结果为2、4、6。也就是说,该方法只能保证局部有序,而多个消息队列中的所有解析结果失去了全局有序信息。也因此,当多个解析结果中包含先决条件时,全局无序的解析结果可能会导致消费错误。例如,若多个解析结果中包含DML(Data Manipulation Language,数据操作语言)、DDL(Data DefinitionLanguage,数据定义语言)两类解析结果,其中,DDL解析结果为增加C2列,DML解析结果为在C2列中增加A2,这种情况下,‘增加C2列’一定要在‘在C2列中增加A2’之前消费,否则会出现消费错误。
因此,现在亟需一种数据处理方法及装置,保证并发处理任务时,仍然保留多个任务的全局有序信息,提高任务处理的准确率。
发明内容
本发明实施例提供一种数据处理方法及装置,保证并发处理任务时,仍然保留多个任务的全局有序信息,提高任务处理的准确率。
第一方面,本发明实施例提供一种数据处理方法,该方法包括:
数据消费者从所述数据消费者对应的消息队列中获取任务;所述数据消费者对应的消息队列为消息分区中多个消息队列中的一个,每个消息队列对应一个数据消费者;各数据消费者并发执行;所述数据消费者确定所述任务为标识任务时,停止从所述数据消费者对应的消息队列中获取任务;所述标识任务在数据生产者分发时,按照分发顺序设置在作为先决条件的数据任务的前后,且写入所述消息分区中的每个消息队列;所述数据消费者在确定各数据消费者均停止从所述消息分区中获取任务时,重新从所述数据消费者对应的消息队列中获取任务。
上述方法中,数据消费者在获取标识任务时,停止继续获取任务。而由于标识任务在数据生产者分发时,按照分发顺序设置在作为先决条件的数据任务的前后,且写入消息分区中的每个消息队列。则在处理该作为先决条件的数据任务之前,所有的数据消费者已经全部获取到标识任务,并停止获取任务。也就是说,在数据生产者获取到的数据任务顺序中,作为先决条件的数据任务前的所有数据任务处理完成,则所有数据消费者停止获取并处理任务,等待作为先决条件的数据任务处理完成后,再继续处理。如此,可以保存在数据生产者获取到的数据任务顺序中的,先决条件任务和被决条件任务之间的顺序信息。例如,若第一消息队列中的当前待消费任务为DDL任务,与该DDL任务相关的DML任务在第二消息队列中,且若当前第二消息队列中的DML任务会在DDL任务之前处理完成;这种情况则会导致DML任务处理错误。因此,在DML任务处理之前将第二消息队列锁定,等待第一消息队列中的DDL任务处理完成后,再令第二消息队列处理DML任务,保留数据任务的全局有序信息,提高数据任务处理的准确率。
可选的,所述数据消费者确定所述任务为标识任务时,停止从所述数据消费者对应的消息队列中获取任务,包括:所述数据消费者确定所述任务为标识任务时,对所述数据消费者对应的消息队列设置队列锁;所述队列锁用于指示所述数据消费者停止从所述数据消费者对应的消息队列中获取任务;所述数据消费者确定各数据消费者均停止从所述消息分区中获取任务,包括:所述数据消费者确定所述消息分区中的各消息队列均处于锁定状态。
上述方法中,数据消费者确定获取的任务为标识任务时,对数据消费者对应的消息队列设置队列锁,以使数据消费者停止从对应的消息队列中获取任务。如此,保证作为先决条件的数据任务在作为被决条件的数据任务之前处理。防止没有设置队列锁,数据消费者仍然从对应的消息队列中获取任务,导致的作为被决条件的数据任务在作为先决条件的数据任务之前处理,而产生的处理错误。
可选的,对所述数据消费者对应的消息队列设置队列锁之后,还包括:
所述数据消费者增加队列锁的计数值;所述数据消费者确定所述消息分区中的各消息队列均处于锁定状态,包括:所述数据消费者确定所述计数值符合所述各消息队列的数量。
上述方法中,对数据消费者对应的消息队列设置队列锁之后,数据消费者增加队列锁的计数值。如此,数据消费者可以获知,在计数值的变化,当计数值达到消息队列总数后,则释放队列锁,使得数据消费者可以继续从对应的消息队列获取任务并处理,保证任务处理速度。
可选的,所述作为先决条件的数据任务为DDL数据定义语言类任务。
上述方法中,若作为先决条件的数据任务为DDL数据定义语言类任务,则可以保证DML数据操作语言类任务在对应的DDL数据定义语言类任务之后处理。保证对应数据任务处理的准确率。
第二方面,本发明实施例提供一种数据处理方法,该方法包括:
数据生产者确定各任务的分发顺序,其中,作为先决条件的数据任务的前后均设置有标识任务;所述标识任务用于指示数据消费者在获取到所述任务标识时,停止从所述数据消费者对应的消息队列中获取任务;
所述数据生产者按照所述分发顺序,依次将所述各任务分发至消息分区中对应的消息队列;其中,所述标识任务会分发至所述消息分区中的每个消息队列;每个消息队列对应一个数据消费者。
上述方法中,在作为先决条件的数据任务前后位置插入标识任务,在按顺序分发任务时,将标识任务发送至所有消息队列。如此,当出现作为被决条件的数据任务,在作为先决条件的数据任务之前处理的情况时;在处理作为被决条件的数据任务之前,通过标识任务锁定其它消息队列;等待该作为先决条件的数据任务所在数据消费者获取到标识任务,同样被锁定后;再将所有锁定消息队列的队列锁释放。如此,保证作为先决条件的数据任务被先行处理。增加任务处理的准确性。
可选的,所述数据生产者按照所述分发顺序,依次将所述各任务分发至消息分区中对应的消息队列,包括:所述数据生产者按照所述分发顺序,依次将同一类型或同一主键的各任务分发至同一消息队列。
上述方法中,数据生产者将同一类型或同一主键的各任务分发至同一消息队列。如此,使得同一类型或同一主键的任务之间保留任务顺序。进一步,当同一类型或同一主键的多个任务为更新任务时,保证任务更新的顺序,使得保证最终更新结果的准确性。
第三方面,本发明实施例提供一种数据处理装置,该装置包括:
获取模块,用于从所述数据消费者对应的消息队列中获取任务;所述数据消费者对应的消息队列为消息分区中多个消息队列中的一个,每个消息队列对应一个数据消费者;各数据消费者并发执行;
确定模块,用于确定所述任务为标识任务时,停止从所述数据消费者对应的消息队列中获取任务;所述标识任务在数据生产者分发时,按照分发顺序设置在作为先决条件的数据任务的前后,且写入所述消息分区中的每个消息队列;
所述获取模块还用于,数据消费者在确定各数据消费者均停止从所述消息分区中获取任务时,重新从所述数据消费者对应的消息队列中获取任务。
第四方面,本发明实施例提供一种数据处理装置,该装置包括:
确定模块,用于确定各任务的分发顺序,其中,作为先决条件的数据任务的前后均设置有标识任务;所述标识任务用于指示数据消费者在获取到所述任务标识时,停止从所述数据消费者对应的消息队列中获取任务;
分发模块,用于按照所述分发顺序,依次将所述各任务分发至消息分区中对应的消息队列;其中,所述标识任务会分发至所述消息分区中的每个消息队列;每个消息队列对应一个数据消费者。
第五方面,本申请实施例还提供一种计算设备,包括:存储器,用于存储程序;处理器,用于调用所述存储器中存储的程序,按照获得的程序执行如第一方面和第二方面的各种可能的设计中所述的方法。
第六方面,本申请实施例还提供一种计算机可读非易失性存储介质,包括计算机可读程序,当计算机读取并执行所述计算机可读程序时,使得计算机执行如第一方面和第二方面的各种可能的设计中所述的方法。
本申请的这些实现方式或其他实现方式在以下实施例的描述中会更加简明易懂。
附图说明
为了更清楚地说明本发明实施例中的技术方案,下面将对实施例描述中所需要使用的附图作简要介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域的普通技术人员来讲,在不付出创造性劳动性的前提下,还可以根据这些附图获得其他的附图。
图1为本发明实施例提供的一种数据处理的架构示意图;
图2为本发明实施例提供的一种数据处理方法的流程示意图;
图3为本发明实施例提供的一种任务分发的示意图;
图4为本发明实施例提供的一种数据处理方法的流程示意图;
图5为本发明实施例提供的一种数据处理方法的流程示意图;
图6为本发明实施例提供的一种数据处理装置示意图;
图7为本发明实施例提供的一种数据处理装置示意图。
具体实施方式
为了使本发明的目的、技术方案和优点更加清楚,下面将结合附图对本发明作进一步地详细描述,显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其它实施例,都属于本发明保护的范围。
本发明实施例提供了一种数据处理的系统架构,如图1所示,其中,数据生产者101生成具有一定顺序的多个数据任务,并判断这多个数据任务中是否包含作为先决条件的数据任务,若存在作为先决条件的数据任务,则在该作为先决条件的数据任务前后插入标识任务;之后,将插入标识任务的多个数据任务按照顺序分发至消息分区102中的各消息队列中,在分发任务过程中,分发标识任务时,将一个标识任务发送至消息分区中的每个消息队列。消费分区103中的各数据消费者从消息分区102中对应的消息队列中获取任务进行处理,当获取的任务为标识任务时,数据消费者停止从对应的消息队列中获取任务,并对该数据消费者对应的消息队列设置队列锁,增加队列锁的计数值;当消费分区103中的数据消费者确定消息分区102中的各消息队列均处于锁定状态时,也可以是为计数值符合各消息队列的数量时,释放队列锁;消费分区103中的各数据消费者继续获取并处理对应消息队列中的任务。
基于此,本申请实施例提供了一种数据处理方法的流程,如图2所示,包括:
步骤201、数据消费者从所述数据消费者对应的消息队列中获取任务;所述数据消费者对应的消息队列为消息分区中多个消息队列中的一个,每个消息队列对应一个数据消费者;各数据消费者并发执行;
步骤202、所述数据消费者确定所述任务为标识任务时,停止从所述数据消费者对应的消息队列中获取任务;所述标识任务在数据生产者分发时,按照分发顺序设置在作为先决条件的数据任务的前后,且写入所述消息分区中的每个消息队列;
此处,作为先决条件的数据任务为对于有一定顺序的多个数据任务中的,某一个或多个数据任务执行的条件;例如,作为先决条件的数据任务为在某个表格中增加一个列,而该作为先决条件的数据任务后的该一个或多个数据任务为在该列下写入数据或更新数据。这里该作为先决条件的数据任务后的该一个或多个数据任务可以是作为被决条件的数据任务。标识任务用来标识数据消费者停止从该数据消费者对应的消息队列中获取任务,其可以是一个符号、文字、数字等,具体不做限定;例如,@、#、*、1、0等等。其中,若多个数据任务的顺序为A1、#1、B1、A2、C1、C2,且#1为作为先决条件的数据任务;则数据生产者将标识任务@插入在作为先决条件的数据任务的前后,得到A1、@、#1、@、B1、A2、C1、C2;数据生产者按照插入标识任务@后的多任务的顺序,将各任务分发至各消息队列,但当分发标识任务@时,会将该标识任务@发送至各消息队列,如图3所示。
步骤203、所述数据消费者在确定各数据消费者均停止从所述消息分区中获取任务时,重新从所述数据消费者对应的消息队列中获取任务。
上述方法中,数据消费者在获取标识任务时,停止继续获取任务。而由于标识任务在数据生产者分发时,按照分发顺序设置在作为先决条件的数据任务的前后,且写入消息分区中的每个消息队列。则在处理该作为先决条件的数据任务之前,所有的数据消费者已经全部获取到标识任务,并停止获取任务。也就是说,在数据生产者获取到的数据任务顺序中,作为先决条件的数据任务前的所有数据任务处理完成,则所有数据消费者停止获取并处理任务,等待作为先决条件的数据任务处理完成后,再继续处理。如此,可以保存在数据生产者获取到的数据任务顺序中的,先决条件任务和被决条件任务之间的顺序信息。例如,若第一消息队列中的当前待消费任务为DDL任务,与该DDL任务相关的DML任务在第二消息队列中,且若当前第二消息队列中的DML任务会在DDL任务之前处理完成;这种情况则会导致DML任务处理错误。因此,在DML任务处理之前将第二消息队列锁定,等待第一消息队列中的DDL任务处理完成后,再令第二消息队列处理DML任务,保留数据任务的全局有序信息,提高数据任务处理的准确率。
本申请实施例提供了一种消息队列锁定方法,所述数据消费者确定所述任务为标识任务时,停止从所述数据消费者对应的消息队列中获取任务,包括:所述数据消费者确定所述任务为标识任务时,对所述数据消费者对应的消息队列设置队列锁;所述队列锁用于指示所述数据消费者停止从所述数据消费者对应的消息队列中获取任务;所述数据消费者确定各数据消费者均停止从所述消息分区中获取任务,包括:所述数据消费者确定所述消息分区中的各消息队列均处于锁定状态。也就是说,数据消费者获取到标识任务,则为该数据消费者对应的消费队列设置队列锁,使得数据消费者停止从该数据消费者对应的消息队列中获取任务。由于数据生产者在分发任务时,为按顺序分发,且在分发标识任务时,将标识任务分发至消息分区中的所有消息队列。如此,当消息分区中的各消息队列均处于锁定状态时,则代表作为先决条件的数据任务之前的任务已经处理完,作为先决条件的数据任务之后的任务未处理;此时释放队列锁,则消息分区中作为先决条件的数据任务所在的消息队列对应的数据消费者,会获取到该作为先决条件的数据任务,而其他的数据消费者获取到的仍然为标识任务,继续为对应消息队列设置队列锁;如此,防止其他的数据消费者获取到作为先决条件的数据任务对应的作为被决条件的数据任务,而导致的作为被决条件的数据任务在作为先决条件的数据任务之前处理,使得处理出现错误。在图3的示例中,消息队列1对应的数据消费者1、消息队列2对应的数据消费者2、消息队列3对应的数据消费者3处理任务的顺序可以如下表1所示:
表1
其中,第一轮:
数据消费者1获取到数据任务A1,并对其进行处理;
数据消费者2获取到标识任务@,并对其对应的消息队列2设置队列锁,使得消息队列2为锁定状态,数据消费者2停止从消息队列2中获取任务;
数据消费者3获取到标识任务@,并对其对应的消息队列3设置队列锁,使得消息队列3为锁定状态,数据消费者3停止从消息队列3中获取任务;
第二轮:
数据消费者1获取到标识任务@,并对其对应的消息队列1设置队列锁,使得消息队列1为锁定状态,数据消费者1停止从消息队列1中获取任务,在此过程中,数据消费者2对应的消息队列2和数据消费者3对应的消息队列3都处于锁定状态;
数据消费者确定各数据消费者均停止从消息分区中获取任务,对消息分区中各消息队列解锁释放,各消息队列对应的数据消费者继续获取任务并处理;
第三轮:
数据消费者1获取到标识任务@,并对其对应的消息队列1设置队列锁,使得消息队列1为锁定状态,数据消费者1停止从消息队列1中获取任务;
数据消费者2获取到作为先决条件的数据任务#1,并对其进行处理;
数据消费者3获取到标识任务@,并对其对应的消息队列3设置队列锁,使得消息队列3为锁定状态,数据消费者1停止从消息队列3中获取任务;
第四轮:
数据消费者2获取到标识任务@,并对其对应的消息队列2设置队列锁,使得消息队列2为锁定状态,数据消费者2停止从消息队列2中获取任务,在此过程中,数据消费者1对应的消息队列1和数据消费者3对应的消息队列3都处于锁定状态;
数据消费者确定各数据消费者均停止从消息分区中获取任务,对消息分区中各消息队列解锁释放,各消息队列对应的数据消费者继续获取任务并处理;
第五轮:
数据消费者1获取到数据任务A2,并对其进行处理;
数据消费者2获取到数据任务C1,并对其进行处理;
数据消费者3获取到数据任务B1,并对其进行处理;
第六轮:
数据消费者1对应的消息队列1为空,获取不到数据任务,完成任务处理;
数据消费者2获取到数据任务C2,并对其进行处理;
数据消费者3对应的消息队列3为空,获取不到数据任务,完成任务处理;
如此,上述数据消费者的任务处理流程中,数据任务处理顺序为A1、#1、【B1、A2、C1】、C2,若A2为作为先决条件的数据任务#1的作为被决条件的数据任务,则上述方法可以保证A2在#1后被处理,有效防止数据任务处理错误,提高准确率。这里需要说明的是,上述第一轮、第二轮等仅限于便于描述,并没有对数据消费者任务处理的周期等条件做限制。
本申请实施例提供了一种数据处理方法,对所述数据消费者对应的消息队列设置队列锁之后,还包括:所述数据消费者增加队列锁的计数值;所述数据消费者确定所述消息分区中的各消息队列均处于锁定状态,包括:所述数据消费者确定所述计数值符合所述各消息队列的数量。也就是说,在上一个示例的第一轮中,数据消费者1获取到数据任务A1,并对其进行处理;数据消费者2获取到标识任务@,并对其对应的消息队列2设置队列锁,此处还要在计数值上加1,此时计数值为1。数据消费者3获取到标识任务@,并对其对应的消息队列3设置队列锁,此处在计数值上再加1,此时计数值为2。如此,当计数值为当前消息分区中的消息队列总数,在本示例中,消息队列总数为3,也就是计数值为3时,释放消息分区中各消息队列的队列锁。
本申请实施例提供了一种先决条件数据任务,所述作为先决条件的数据任务为DDL数据定义语言类任务。也就是说,作为先决条件的数据任务为DDL数据定义语言类任务,作为被决条件的数据任务可以为DML数据操作语言。
基于上述流程,本申请实施例提供了一种数据处理方法的流程,如图4所示,包括:
步骤401、数据生产者确定各任务的分发顺序,其中,作为先决条件的数据任务的前后均设置有标识任务;所述标识任务用于指示数据消费者在获取到所述任务标识时,停止从所述数据消费者对应的消息队列中获取任务;
步骤402、所述数据生产者按照所述分发顺序,依次将所述各任务分发至消息分区中对应的消息队列;其中,所述标识任务会分发至所述消息分区中的每个消息队列;每个消息队列对应一个数据消费者。
上述方法中,在作为先决条件的数据任务前后位置插入标识任务,在按顺序分发任务时,将标识任务发送至所有消息队列。如此,当出现作为被决条件的数据任务,在作为先决条件的数据任务之前处理的情况时;在处理作为被决条件的数据任务之前,通过标识任务锁定其它消息队列;等待该作为先决条件的数据任务所在数据消费者获取到标识任务,同样被锁定后;再将所有锁定消息队列的队列锁释放。如此,保证作为先决条件的数据任务被先行处理。增加任务处理的准确性。
本申请实施例提供了一种数据任务分发方法,所述数据生产者按照所述分发顺序,依次将所述各任务分发至消息分区中对应的消息队列,包括:所述数据生产者按照所述分发顺序,依次将同一类型或同一主键的各任务分发至同一消息队列。也就是说,数据生产者按照各任务的顺序分发时,将同一类型或同一主键的各任务分发至同一消息队列。在上一个示例中,若C1、C2为同一类型或同一主键的数据任务,C1为将表3的第一行第一列的内容写为D,C2为在表3的第一行第一列写入E;也就是,C2的数据相当于对C1的数据进行更新。若不将同一类型或同一主键的各任务分发至同一消息队列,导致C2在C1前处理完成,则会使得表3的第一行第一列的内容最终结果为旧的结果,影响数据准确性。因此,将同一类型或同一主键的各任务分发至同一消息队列可以保证同一类型或同一主键的各任务的处理顺序,保证最后结果的正确性。
基于上述流程,本申请实施例提供了一种数据处理方法的流程,如图5所示,包括:
步骤501、数据生产者生成具有顺序的多个数据任务。
步骤502、数据生产者确定具有顺序的多个数据任务中包含作为先决条件的数据任务。
步骤503、数据生产者在该作为先决条件的数据任务前后插入标识任务,获得具有顺序的多个任务。
步骤504、数据生产者按照该多个任务的顺序分发任务,将同一类型或同一主键的任务分发至相同的消息队列;当分发的任务为标识任务时,将该标识任务发送至消息分区中的所有消息队列。
步骤505、数据消费者从对应的消息队列获取任务。
步骤506、数据消费者判断获取的任务类型,当该任务为标识任务,执行步骤507,当该任务为数据任务,执行步骤509。
步骤507、数据消费者为该消息队列设置队列锁,在计数值上加1,停止从消息分区中该消息队列获取任务。
步骤508、确定计数值为当前消息队列的数量时,对各消息队列解锁;数据消费者在确定各数据消费者均停止从消息分区中获取任务时,重新从该数据消费者对应的消息队列中获取任务。
步骤509、数据消费者对该数据任务进行处理。
步骤510、该多个任务处理完成。
基于同样的构思,本发明实施例提供一种数据处理装置,图6为本申请实施例提供的一种数据处理装置示意图,如图6示,包括:
获取模块601,用于从所述数据消费者对应的消息队列中获取任务;所述数据消费者对应的消息队列为消息分区中多个消息队列中的一个,每个消息队列对应一个数据消费者;各数据消费者并发执行;
确定模块602,用于确定所述任务为标识任务时,停止从所述数据消费者对应的消息队列中获取任务;所述标识任务在数据生产者分发时,按照分发顺序设置在作为先决条件的数据任务的前后,且写入所述消息分区中的每个消息队列;
所述获取模块601还用于,数据消费者在确定各数据消费者均停止从所述消息分区中获取任务时,重新从所述数据消费者对应的消息队列中获取任务。
可选的,所述确定模块602具体用于,确定所述任务为标识任务时,对所述数据消费者对应的消息队列设置队列锁;所述队列锁用于指示所述数据消费者停止从所述数据消费者对应的消息队列中获取任务;
所述确定模块602还用于,确定所述消息分区中的各消息队列均处于锁定状态。
可选的,所述确定模块602还用于,增加队列锁的计数值;
所述确定模块602还用于,确定所述计数值符合所述各消息队列的数量。
可选的,所述作为先决条件的数据任务为DDL数据定义语言类任务。
基于同样的构思,本发明实施例提供一种数据处理装置,图7为本申请实施例提供的一种数据处理装置示意图,如图7示,包括:
确定模块701,用于确定各任务的分发顺序,其中,作为先决条件的数据任务的前后均设置有标识任务;所述标识任务用于指示数据消费者在获取到所述任务标识时,停止从所述数据消费者对应的消息队列中获取任务;
分发模块702,用于按照所述分发顺序,依次将所述各任务分发至消息分区中对应的消息队列;其中,所述标识任务会分发至所述消息分区中的每个消息队列;每个消息队列对应一个数据消费者。
可选的,所述分发模块702具体用于,按照所述分发顺序,依次将同一类型或同一主键的各任务分发至同一消息队列。
本领域内的技术人员应明白,本申请的实施例可提供为方法、系统、或计算机程序产品。因此,本申请可采用完全硬件实施例、完全软件实施例、或结合软件和硬件方面的实施例的形式。而且,本申请可采用在一个或多个其中包含有计算机可用程序代码的计算机可用存储介质(包括但不限于磁盘存储器、CD-ROM、光学存储器等)上实施的计算机程序产品的形式。
本申请是参照根据本申请的方法、设备(系统)、和计算机程序产品的流程图和/或方框图来描述的。应理解可由计算机程序指令实现流程图和/或方框图中的每一流程和/或方框、以及流程图和/或方框图中的流程和/或方框的结合。可提供这些计算机程序指令到通用计算机、专用计算机、嵌入式处理机或其他可编程数据处理设备的处理器以产生一个机器,使得通过计算机或其他可编程数据处理设备的处理器执行的指令产生用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的装置。
这些计算机程序指令也可存储在能引导计算机或其他可编程数据处理设备以特定方式工作的计算机可读存储器中,使得存储在该计算机可读存储器中的指令产生包括指令装置的制造品,该指令装置实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能。
这些计算机程序指令也可装载到计算机或其他可编程数据处理设备上,使得在计算机或其他可编程设备上执行一系列操作步骤以产生计算机实现的处理,从而在计算机或其他可编程设备上执行的指令提供用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的步骤。
显然,本领域的技术人员可以对本申请进行各种改动和变型而不脱离本申请的精神和范围。这样,倘若本申请的这些修改和变型属于本申请权利要求及其等同技术的范围之内,则本申请也意图包含这些改动和变型在内。
Claims (10)
1.一种数据处理方法,其特征在于,包括:
数据消费者从所述数据消费者对应的消息队列中获取任务;所述数据消费者对应的消息队列为消息分区中多个消息队列中的一个,每个消息队列对应一个数据消费者;各数据消费者并发执行;
所述数据消费者确定所述任务为标识任务时,停止从所述数据消费者对应的消息队列中获取任务;所述标识任务在数据生产者分发时,按照分发顺序设置在作为先决条件的数据任务的前后,且写入所述消息分区中的每个消息队列;
所述数据消费者在确定各数据消费者均停止从所述消息分区中获取任务时,重新从所述数据消费者对应的消息队列中获取任务。
2.如权利要求1中所述的方法,其特征在于,所述数据消费者确定所述任务为标识任务时,停止从所述数据消费者对应的消息队列中获取任务,包括:
所述数据消费者确定所述任务为标识任务时,对所述数据消费者对应的消息队列设置队列锁;所述队列锁用于指示所述数据消费者停止从所述数据消费者对应的消息队列中获取任务;
所述数据消费者确定各数据消费者均停止从所述消息分区中获取任务,包括:
所述数据消费者确定所述消息分区中的各消息队列均处于锁定状态。
3.如权利要求1中所述的方法,其特征在于,
对所述数据消费者对应的消息队列设置队列锁之后,还包括:
所述数据消费者增加队列锁的计数值;
所述数据消费者确定所述消息分区中的各消息队列均处于锁定状态,包括:
所述数据消费者确定所述计数值符合所述各消息队列的数量。
4.如权利要求1-3中任一所述的方法,其特征在于,所述作为先决条件的数据任务为DDL数据定义语言类任务。
5.一种数据处理方法,其特征在于,包括:
数据生产者确定各任务的分发顺序,其中,作为先决条件的数据任务的前后均设置有标识任务;所述标识任务用于指示数据消费者在获取到所述任务标识时,停止从所述数据消费者对应的消息队列中获取任务;
所述数据生产者按照所述分发顺序,依次将所述各任务分发至消息分区中对应的消息队列;其中,所述标识任务会分发至所述消息分区中的每个消息队列;每个消息队列对应一个数据消费者。
6.如权利要求5中所述的方法,其特征在于,所述数据生产者按照所述分发顺序,依次将所述各任务分发至消息分区中对应的消息队列,包括:
所述数据生产者按照所述分发顺序,依次将同一类型或同一主键的各任务分发至同一消息队列。
7.一种数据处理装置,其特征在于,包括:
获取模块,用于从所述数据消费者对应的消息队列中获取任务;所述数据消费者对应的消息队列为消息分区中多个消息队列中的一个,每个消息队列对应一个数据消费者;各数据消费者并发执行;
确定模块,用于确定所述任务为标识任务时,停止从所述数据消费者对应的消息队列中获取任务;所述标识任务在数据生产者分发时,按照分发顺序设置在作为先决条件的数据任务的前后,且写入所述消息分区中的每个消息队列;
所述获取模块还用于,数据消费者在确定各数据消费者均停止从所述消息分区中获取任务时,重新从所述数据消费者对应的消息队列中获取任务。
8.一种数据处理装置,其特征在于,包括:
确定模块,用于确定各任务的分发顺序,其中,作为先决条件的数据任务的前后均设置有标识任务;所述标识任务用于指示数据消费者在获取到所述任务标识时,停止从所述数据消费者对应的消息队列中获取任务;
分发模块,用于按照所述分发顺序,依次将所述各任务分发至消息分区中对应的消息队列;其中,所述标识任务会分发至所述消息分区中的每个消息队列;每个消息队列对应一个数据消费者。
9.一种计算机可读存储介质,其特征在于,所述计算机可读存储介质存储有程序,当所述程序在计算机上运行时,使得计算机实现执行权利要求1至4、5或6中任一项所述的方法。
10.一种计算机设备,其特征在于,包括:
存储器,用于存储计算机程序;
处理器,用于调用所述存储器中存储的计算机程序,按照获得的程序执行如权利要求1至4、5或6任一权利要求所述的方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202011463399.9A CN114625546A (zh) | 2020-12-11 | 2020-12-11 | 一种数据处理方法及装置 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202011463399.9A CN114625546A (zh) | 2020-12-11 | 2020-12-11 | 一种数据处理方法及装置 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN114625546A true CN114625546A (zh) | 2022-06-14 |
Family
ID=81894751
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202011463399.9A Pending CN114625546A (zh) | 2020-12-11 | 2020-12-11 | 一种数据处理方法及装置 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN114625546A (zh) |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN115174682A (zh) * | 2022-06-17 | 2022-10-11 | 中国银联股份有限公司 | 数据分流方法、系统、中心、装置及计算机可读存储介质 |
Citations (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
WO2005098623A2 (en) * | 2004-04-02 | 2005-10-20 | Emulex Design & Manufacturing Corporation | Prerequisite-based scheduler |
EP2693337A1 (en) * | 2012-08-02 | 2014-02-05 | Amadeus S.A.S. | Method, system and computer program products for sequencing asynchronous messages in a distributed and parallel environment |
CN104428754A (zh) * | 2012-08-02 | 2015-03-18 | 艾玛迪斯简易股份公司 | 在分布式并行环境中对异步消息排序的方法、系统和计算机程序产品 |
CN110968431A (zh) * | 2018-09-28 | 2020-04-07 | 阿里巴巴集团控股有限公司 | 一种消息处理方法、装置及设备 |
CN110990132A (zh) * | 2019-11-01 | 2020-04-10 | 浙江大搜车软件技术有限公司 | 异步任务处理方法、装置、计算机设备和存储介质 |
CN111683140A (zh) * | 2020-06-05 | 2020-09-18 | 北京百度网讯科技有限公司 | 用于分发消息的方法和装置 |
-
2020
- 2020-12-11 CN CN202011463399.9A patent/CN114625546A/zh active Pending
Patent Citations (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
WO2005098623A2 (en) * | 2004-04-02 | 2005-10-20 | Emulex Design & Manufacturing Corporation | Prerequisite-based scheduler |
EP2693337A1 (en) * | 2012-08-02 | 2014-02-05 | Amadeus S.A.S. | Method, system and computer program products for sequencing asynchronous messages in a distributed and parallel environment |
CN104428754A (zh) * | 2012-08-02 | 2015-03-18 | 艾玛迪斯简易股份公司 | 在分布式并行环境中对异步消息排序的方法、系统和计算机程序产品 |
CN110968431A (zh) * | 2018-09-28 | 2020-04-07 | 阿里巴巴集团控股有限公司 | 一种消息处理方法、装置及设备 |
CN110990132A (zh) * | 2019-11-01 | 2020-04-10 | 浙江大搜车软件技术有限公司 | 异步任务处理方法、装置、计算机设备和存储介质 |
CN111683140A (zh) * | 2020-06-05 | 2020-09-18 | 北京百度网讯科技有限公司 | 用于分发消息的方法和装置 |
Non-Patent Citations (2)
Title |
---|
大浪不惊涛: "如何保证消息队列消息的顺序性", pages 1 - 3, Retrieved from the Internet <URL:https://www.cnblogs.com/cnndevelop/p/12081697.html> * |
裴鹏飞: "支持事务的分布式消息队列中间件的设计与实现", 《中国优秀硕士学位论文全文数据库 信息科技辑》, 20 April 2018 (2018-04-20), pages 1 - 70 * |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN115174682A (zh) * | 2022-06-17 | 2022-10-11 | 中国银联股份有限公司 | 数据分流方法、系统、中心、装置及计算机可读存储介质 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN110888727B (zh) | 并发无锁队列实现方法、装置及存储介质 | |
US10353749B2 (en) | Lock-free dual queue with condition synchronization and time-outs | |
CN110231995B (zh) | 一种基于Actor模型的任务调度方法、装置及存储介质 | |
US9658905B2 (en) | Information processing apparatus and method for carrying out multi-thread processing | |
US20130160028A1 (en) | Method and apparatus for low latency communication and synchronization for multi-thread applications | |
US8719845B2 (en) | Sharing and synchronization of objects | |
US9245011B2 (en) | Data model versioning for document databases | |
CN108572876B (zh) | 一种读写锁的实现方法及装置 | |
CN111711623B (zh) | 一种数据校验的方法及装置 | |
US20040199916A1 (en) | Systems and methods for multi-tasking, resource sharing, and execution of computer instructions | |
CN112669155A (zh) | 基于区块链的交易分发执行方法、装置服务器及存储介质 | |
CN105074656B (zh) | 管理并发谓词表达式的方法和装置 | |
CN112181748A (zh) | 基于环形队列的并发测试方法、装置、设备及存储介质 | |
CN104063355A (zh) | 对服务器集群进行配置的方法及配置中心服务器 | |
CN114625546A (zh) | 一种数据处理方法及装置 | |
CN112347143A (zh) | 多数据流处理方法、装置、终端及存储介质 | |
US20180033115A1 (en) | Capturing Commands in a Multi-Engine Graphics Processing Unit | |
CN109710698B (zh) | 一种数据汇聚方法、装置、电子设备及介质 | |
US9038077B1 (en) | Data transfer protection in a multi-tasking modeling environment | |
US9135058B2 (en) | Method for managing tasks in a microprocessor or in a microprocessor assembly | |
US20240176647A1 (en) | Blockchain request prescreening for parallel request processing | |
CN116954704A (zh) | 一种代码分支合并方法、装置、计算机设备以及存储介质 | |
US20070174571A1 (en) | Binding a protected application program to shell code | |
CN113657084A (zh) | 一种自动读取Excel内容的方法及系统 | |
US7380174B2 (en) | Variable writing through a fixed programming interface |
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 |