CN111159236A - 数据处理方法、装置、电子设备及存储介质 - Google Patents
数据处理方法、装置、电子设备及存储介质 Download PDFInfo
- Publication number
- CN111159236A CN111159236A CN201911340622.8A CN201911340622A CN111159236A CN 111159236 A CN111159236 A CN 111159236A CN 201911340622 A CN201911340622 A CN 201911340622A CN 111159236 A CN111159236 A CN 111159236A
- Authority
- CN
- China
- Prior art keywords
- data
- task
- queue
- thread
- processed
- 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
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/20—Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
- G06F16/24—Querying
- G06F16/245—Query processing
- G06F16/2455—Query execution
- G06F16/24552—Database cache management
-
- 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
- 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
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2209/00—Indexing scheme relating to G06F9/00
- G06F2209/54—Indexing scheme relating to G06F9/54
- G06F2209/548—Queue
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Software Systems (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Databases & Information Systems (AREA)
- Computational Linguistics (AREA)
- Data Mining & Analysis (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
本申请公开了数据处理方法、装置、电子设备及存储介质,所述方法将数据任务分成数据查询子任务和数据处理子任务分别执行,采用分布式任务队列缓存接收到的数据任务,并通过数据查询线程获取数据任务、进行数据查询,以完成数据查询子任务,采用分布式数据队列缓存数据查询线程查询到的待处理数据,并通过数据处理线程获取待处理数据进行数据处理,以完成数据处理子任务。通过本申请方法,数据查询线程和数据处理线程只需要单独执行数据查询和数据处理,对于每个线程来说,都大大降低其执行耗时,因此可以保证对任务队列中数据任务消化速度,进而任务队列中的数据任务无需等待较长时间,因此可以使服务端对客户端的数据处理请求做出较快响应。
Description
技术领域
本申请涉及数据处理技术领域,尤其涉及一种数据处理方法、装置、电子设备及存储介质。
背景技术
在信息时代,互联网中服务端可交互的客户端数量越来越多,当客户端向服务端发起数据处理请求时,其对服务端的响应速度的要求也越来越高。
通常,服务端接收到客户端发起的数据处理请求后,将请求消息添加到任务队列中,等待执行;而对于任务队列中的数据处理任务,服务端调用相应服务来创建任务线程,以通过任务线程来执行任务队列中的数据处理任务;在当前处理任务完成后,再从任务队列中领取下一个数据处理任务进行处理。
然而,由于对于每个数据处理任务,相应的任务线程都需要依次完成数据的查询和处理操作,因此耗时较长,导致任务队列中的处理任务等待时间较长,造成服务端响应较慢的效果,从而极易引发服务重启,而一旦服务重启,则会造成任务丢失。
发明内容
本申请提供一种数据处理方法、装置、电子设备及存储介质,以降低处理单个数据任务的耗时,提高服务端对客户端的响应速度。
第一方面,本申请提供一种数据处理方法,所述方法包括:
通过数据查询线程,从目标任务队列中获取目标任务,并查询所述目标任务对应的待处理数据,所述目标任务队列为分布式任务队列中的任意一个任务队列,每个所述任务队列包括至少一个接收到的数据任务;
通过数据处理线程,从目标数据队列中获取目标数据,并处理所述目标数据,以完成相应的数据任务,所述目标数据队列为分布式数据队列中的任意一个数据队列,每个所述数据队列包括至少一个由所述数据查询线程查询到的待处理数据。
进一步,所述方法还包括:
将所述数据查询线程查询到的待处理数据添加到所述分布式数据队列中。
进一步,所述将数据查询线程查询到的待处理数据添加到所述分布式数据队列之前,所述方法还包括:
获取所述待处理数据的数据标识和对应的任务标识;
根据所述数据标识判断所述分布式数据队列中是否存在与所述待处理数据相同的数据;
如果所述分布式数据队列中存在与所述待处理数据相同的数据,则判断相同的两个待处理数据所分别对应的任务标识是否一致;
如果所述相同的两个待处理数据所分别对应的任务标识一致,则丢弃所述待处理数据;
如果所述分布式数据队列中不存在与所述待处理数据相同的数据,则将所述待处理数据添加到所述分布式数据队列中。
进一步,所述方法还包括:
接收数据任务;
将接收到的所述数据任务添加到所述分布式任务队列中。
进一步,所述将接收到的所述数据任务添加到所述分布式任务队列之前,所述方法还包括:
获取所述数据任务的任务标识;
根据所述任务标识判断所述数据任务在所述分布式任务队列中是否存在;
如果所述数据任务在所述分布式任务队列中不存在,则将所述数据任务添加到所述分布式任务队列中。
进一步,所述查询目标任务对应的待处理数据,包括:
根据所述目标任务执行至少两次查询;
当相邻两次查询的查询结果存在变化时,则执行下一次查询;
当相邻两次查询或者连续多次查询的查询结果保持不变时,确定最后一次查询到的数据为所述目标任务对应的待处理数据。
进一步,所述处理所述目标数据,包括:
通过所述数据处理线程处理所述目标数据,以执行所述目标数据对应的数据任务;
根据所述数据处理线程的返回值确定所述数据任务是否执行完成。
进一步,所述方法还包括:
监测正在运行的线程的线程个数,所述正在运行的线程包括所述数据查询线程和/或所述数据处理线程;
当监测到正在运行的线程的线程个数达到预设个数时,停止开启新的所述数据查询线程和数据处理线程,直到所述线程个数低于所述预设个数时,恢复对新的数据查询线程和数据处理线程的开启。
进一步,所述方法还包括:
监测正在运行的每个线程的处理速度,所述正在运行的线程包括所述数据查询线程和/或所述数据处理线程;
当监测到正在运行的线程的处理速度达到预设速度时,控制所述线程暂停运行,直到进入到下一个时间块时,控制所述线程恢复运行。
第二方面,本申请还提供一种数据处理装置,所述装置包括:
数据查询模块,用于通过数据查询线程,从目标任务队列中获取目标任务,并查询所述目标任务对应的待处理数据,所述目标任务队列为分布式任务队列中的任意一个任务队列,每个所述任务队列包括至少一个接收到的数据任务;
数据处理模块,用于通过数据处理线程,从目标数据队列中获取目标数据,并处理所述目标数据,以完成相应的数据任务,所述目标数据队列为分布式数据队列中的任意一个数据队列,每个所述数据队列包括至少一个由所述数据查询线程查询到的待处理数据。
进一步,所述装置还包括:
数据缓存模块,用于将所述数据查询线程查询到的待处理数据添加到所述分布式数据队列中。
进一步,所述装置还包括数据去重模块;
所述数据去重模块,用于获取所述待处理数据的数据标识和对应的任务标识;
根据所述数据标识判断所述分布式数据队列中是否存在与所述待处理数据相同的数据;
如果所述分布式数据队列中存在与所述待处理数据相同的数据,则判断相同的两个待处理数据所分别对应的任务标识是否一致;
如果所述相同的两个待处理数据所分别对应的任务标识一致,则丢弃所述待处理数据;
如果所述分布式数据队列中不存在与所述待处理数据相同的数据,则将所述待处理数据添加到所述分布式数据队列中。
进一步,所述装置还包括:
任务接收模块,用于任务接收数据任务;
任务缓存模块,用于将接收到的所述数据任务添加到所述分布式任务队列中。
进一步,所述装置还包括任务去重模块;
所述任务去重模块,用于获取所述数据任务的任务标识;
根据所述任务标识判断所述数据任务在所述分布式任务队列中是否存在;
如果所述数据任务在所述分布式任务队列中不存在,则将所述数据任务添加到所述分布式任务队列中。
进一步,所述数据查询模块,包括:
数据查询单元,用于通过数据查询线程根据所述目标任务执行至少两次查询;
结果确认单元,用于判断相邻两次查询或者连续多个查询的查询结果是否存在变化;
当相邻两次查询的查询结果存在变化时,则所述数据查询单元执行下一次查询;当相邻两次查询或者连续多次查询的查询结果保持不变时,确定最后一次查询到的数据为所述目标任务对应的待处理数据。
进一步,所述数据处理模块,包括:
数据处理单元,用于通过所述数据处理线程处理所述目标数据,以执行所述目标数据对应的数据任务;
结果确认单元,用于根据所述数据处理线程的返回值确定所述数据任务是否执行完成。
进一步,所述装置还包括限流模块,所述限流模块用于:
监测正在运行的线程的线程个数,所述正在运行的线程包括所述数据查询线程和/或所述数据处理线程;
当监测到正在运行的线程的线程个数达到预设个数时,停止开启新的所述数据查询线程和数据处理线程,直到所述线程个数低于所述预设个数时,恢复对新的数据查询线程和数据处理线程的开启。
进一步,所述装置还包括限速模块,所述限速模块用于:
监测正在运行的每个线程的处理速度,所述正在运行的线程包括所述数据查询线程和/或所述数据处理线程;
当监测到正在运行的线程的处理速度达到预设速度时,控制所述线程暂停运行,直到进入到下一个时间块时,控制所述线程恢复运行。
第三方面,本申请还提供一种电子设备,包括:
存储器,用于存储程序指令;
处理器,用于调用并执行所述存储器中的程序指令,以实现第一方面任一项所述的方法。
第四方面,本申请还提供一种存储介质,所述存储介质中存储有计算机程序,当第二方面任一项所述装置的至少一个处理器执行所述计算机程序时,所述装置执行第一方面任一项所述的方法。
由以上技术方案可知,本申请实施例提供一种数据处理方法、装置、电子设备及存储介质,所述方法将数据任务分成两部分执行,分别为数据查询子任务和数据处理子任务,采用分布式任务队列缓存接收到的数据任务,并通过数据查询线程获取数据任务、进行数据查询,以完成数据查询子任务,采用分布式数据队列缓存数据查询线程查询到的待处理数据,并通过数据处理线程获取待处理数据进行数据处理,以完成数据处理子任务。通过本申请方法,数据查询线程和数据处理线程只需要单独执行数据查询和数据处理,对于每个线程来说,都大大降低其执行耗时,因此可以保证对任务队列中数据任务消化速度,进而任务队列中的数据任务无需等待较长时间,因此可以使服务端对客户端的数据处理请求做出较快响应。
附图说明
为了更清楚地说明本申请的技术方案,下面将对实施例中所需要使用的附图作简单地介绍,显而易见地,对于本领域普通技术人员而言,在不付出创造性劳动性的前提下,还可以根据这些附图获得其他的附图。
图1为本申请根据一示例性实施例示出的客户端与服务端的数据交互示意图;
图2为本申请根据一示例性实施例示出的数据处理过程示意图;
图3为本申请根据一示例性实施例示出的数据处理方法流程图;
图4为本申请根据一示例性实施例示出的另一数据处理方法流程图;
图5为本申请根据一示例性实施例示出的另一数据处理方法流程图;
图6为本申请根据一示例性实施例示出的数据处理装置框图;
图7为本申请根据一示例性实施例示出的电子设备结构示意图。
具体实施方式
为了使本技术领域的人员更好地理解本申请中的技术方案,下面将结合本申请实施例中的附图,对本申请实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本申请一部分实施例,而不是全部的实施例。基于本申请中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都应当属于本申请保护的范围。
图1为本申请根据一示例性实施例示出的客户端与服务端的数据交互示意图。如图1所示,互联网中存在多个服务节点(即服务端)和可以与一个或多个服务端进行数据交互的客户端。多个客户端可以同时向一个服务端发起数据处理请求,如数据的读取、写入等等,而对于每个服务端而言,需要对多个客户端发起的数据处理请求执行相应的数据处理,并返回执行结果给客户端。
为了降低处理单个数据任务的耗时,提高服务端对客户端的响应速度,本申请实施例提供一种数据处理方法,该方法将数据任务分成两部分执行,分别为数据查询子任务和数据处理子任务,采用分布式任务队列缓存接收到的数据任务,并通过数据查询线程获取数据任务、进行数据查询,以完成数据查询子任务,采用分布式数据队列缓存数据查询线程查询到的待处理数据,并通过数据处理线程获取待处理数据进行数据处理,以完成数据处理子任务。通过本申请方法,数据查询线程和数据处理线程只需要单独执行数据查询和数据处理,对于每个线程来说,都大大降低其执行耗时,因此可以保证对任务队列中数据任务消化速度,进而任务队列中的数据任务无需等待较长时间,因此可以使服务端对客户端的数据处理请求做出较快响应。
本申请实施例提供的数据处理方法可以应用于服务端的数据存储系统,可以由数据存储系统中的数据处理框架/装置执行。本申请实施例涉及的数据任务可以是系统中各个功能模块接收到的数据处理任务。数据处理框架/装置可以为接收到的数据任务提供线程池服务,即执行各个功能模块发来的数据任务。
图2为本申请根据一示例性实施例示出的数据处理过程示意图,图3为本申请根据一示例性实施例示出的数据处理方法流程图,结合图2和图3,该方法可以包括:
步骤100,通过数据查询线程,从目标任务队列中获取目标任务,并查询所述目标任务对应的待处理数据,所述目标任务队列为分布式任务队列中的任意一个任务队列,每个所述任务队列包括至少一个接收到的数据任务。
需要说明的是,分布式任务队列包括多个预置的任务队列,当接收到数据任务时,将数据任务添加到分布式任务队列中相应的任务队列中,例如,按照数据任务的任务类型将数据任务添加到对应的任务队列中。
另外,为了避免由于任务队列中存在重复的数据任务,而造成同一数据任务的重复执行,浪费计算处理资源,在将接收到的数据任务添加到任务队列之前,还可以执行图4所示步骤,以避免将同一的数据任务重复添加到同一或者不同的任务队列中:
步骤010,获取待添加的数据任务的任务标识;该待添加的数据任务即为接收到的数据任务。
步骤020,根据该待添加的数据任务的任务标识判断该待添加的数据任务是否在各个任务队列中均不存在;如果是,则执行步骤030,如果否,则执行步骤040。
步骤030,如果该待添加的数据任务在各个任务队列中均不存在,则将所述数据任务添加到所述任务队列中。
步骤040,如果该待添加的数据任务在至少一个任务队列中存在,则丢弃该添加的数据任务。
由此可见,在将接收到的数据任务添加到任务队列之前,通过步骤010-040,可以避免将同一的数据任务重复添加到同一或者不同的任务队列中,进而避免任务队列中存在重复的数据任务,避免重复执行同一数据任务。
线程是程序执行流的最小单元,即执行本申请数据任务的最小单元。在步骤100中,数据查询线程用于根据数据任务执行相应的数据查询操作,进而查询得到数据任务对应的待处理数据。另外,可以同时调用多个线程对各个任务队列中的数据任务进行处理,以实现多线程并行处理,提高数据处理速度。
在步骤100中,对于每个数据查询线程,当其被调用时,该数据查询线程从目标任务队列中获取目标任务,并根据目标任务数据查询该目标任务对应的待处理数据,以完成数据查询子任务。其中,目标任务队列为分布式任务队列中的任意一个任务队列,目标任务则为目标任务队列中接收时间最早的数据任务。
另外,为了确保数据查询子任务被成功执行,被调用的数据查询线程需要根据目标任务执行至少两次查询。每次查询得到查询结果后,将本次查询结果与上一次查询结果进行比对,当相邻两次查询的查询结果存在变化时,继续执行下一次查询,当相邻两次或者连续多次查询的查询结果保持不变时,确定最后一次查询到的数据为该目标任务对应的待处理数据。
本实施例中,在执行步骤100之后,还需要将所述数据查询线程查询到的待处理数据添加到分布式数据队列中。其中,分布式数据队列包括多个数据队列,每个数据队列包括至少一个通过步骤100查询到的待处理数据。
其中,为了避免由于数据队列中存在重复的待处理数据,以造成对数据的重复处理,可以在将待处理数据添加到数据队列之前,执行图5所示步骤,其中,重复的待处理数据是指同一数据任务对应的相同的待处理数据。
参阅图5,在步骤110中,获取该待添加的待处理数据的数据标识和对应的任务标识。其中,待处理数据对应的任务标识为待处理数据对应的数据任务的任务标识。
在步骤120中,对于分布式数据队列中的每个数据队列,根据该数据标识判断数据队列中是否存在与该待添加的待处理数据相同的数据;如果是,则执行步骤130,如果否,则执行重复执行步骤120,直到针对每个数据队列均完成判断后,结束流程。
在步骤130中,如果某个数据队列中存在与该待添加的待处理数据相同的数据,则判断该相同的两个数据所分别对应的任务标识是否一致;如果是,则执行步骤140,如果否,则执行步骤150。
在步骤140中,如果该相同的两个数据所分别对应的任务标识一致,说明该两个数据为同一数据任务对应的相同的待处理数据,则丢弃该待添加的待处理数据。
在步骤150中,如果该相同的两个数据所分别对应的任务标识一致,说明该两个数据虽为相同的数据,但其各自对应的数据任务不同,则将该待添加的待处理数据添加到相应的数据队列中。
由此可见,在将查询到的待处理数据添加到数据队列之前,通过执行步骤110-150,可以避免将同一数据任务对应的相同的待处理数据添加到同一或者不同的数据队列中,进而避免数据队列中存在重复的待处理数据,避免对数据的重复处理。
步骤200,通过数据处理线程,从目标数据队列中获取目标数据,并处理所述目标数据,以完成相应的数据任务,所述目标数据队列为分布式数据队列中的任意一个数据队列,每个所述数据队列包括至少一个由所述数据查询线程查询到的待处理数据。
数据处理线程用于根据数据任务对数据任务对应的待处理数据进行处理。除此之外,为了确保数据处理子任务被成功执行,本申请实施例中,根据数据处理线程的返回值确定该数据任务是否执行完成。
其中,数据处理线程的返回值具体可以为数据处理线程对应的回调函数的返回值,例如,如果回调函数的返回值为“TRUE”,则确认数据处理子任务被成功执行,进而相应的数据任务执行完成;如果回调函数的返回值为“FALSE”,则确认数据处理子任务执行失败,进而相应的数据任务未完成。
由以上实施例可知,本申请提供的数据处理方法,该方法将数据任务分成两部分执行,分别为数据查询子任务和数据处理子任务,采用分布式任务队列缓存接收到的数据任务,并通过数据查询线程获取数据任务、进行数据查询,以完成数据查询子任务,采用分布式数据队列缓存数据查询线程查询到的待处理数据,并通过数据处理线程获取待处理数据进行数据处理,以完成数据处理子任务。通过本申请方法,数据查询线程和数据处理线程只需要单独执行数据查询和数据处理,对于每个线程来说,都大大降低其执行耗时,因此可以保证对任务队列中数据任务消化速度,进而任务队列中的数据任务无需等待较长时间,因此可以使服务端对客户端的数据处理请求做出较快响应。
为了进一步保证服务端数据处理性能的稳定性,在数据处理过程中,监测正在运行的线程的线程个数,该正在运行的线程包括数据查询线程和/或数据处理线程;当监测到正在运行的线程的线程个数达到预设个数时,停止开启新的线程,直到正在运行的线程的线程个数低于相应的预设个数时,恢复对新的线程的开启。
具体实现时,可以分别对正在运行的数据查询线程和数据处理线程的线程个数进行监测,当监测到任意一类线程的线程个数达到相应的预设个数时,则停止开启新的该类线程,直到该类线程的线程个数低于相应的预设个数时,则恢复对该类线程的开启。
当然,也可以对正在运行的数据查询线程和数据处理线程的总线程个数进行监测,当监测到总线程个数达到预设个数时,则停止开始任意种类的新的线程,直到总线程个数低于预设个数时,则恢复对新线程的开启。
为了进一步保证服务端数据处理性能的稳定性,在数据处理过程中,监测正在运行的每个线程的处理速度,所述正在运行的线程包括所述数据查询线程和/或所述数据处理线程;当监测到正在运行的线程的处理速度达到预设速度时,控制所述线程暂停运行,直到进入到下一个时间块时,控制所述线程恢复运行。
通过对服务端同时运行的线程的线程数和每个线程的处理速度进行限制,可以防止由于对任务线程的调用量激增而对服务端性能造成冲击,从而可以保证服务端数据处理性能的稳定性。
根据上述实施例提供的数据处理方法,本申请实施例还提供一种数据处理装置,如图6所示,该装置可以包括:
数据查询模块610,用于通过数据查询线程,从目标任务队列中获取目标任务,并查询所述目标任务对应的待处理数据,所述目标任务队列为分布式任务队列中的任意一个任务队列,每个所述任务队列包括至少一个接收到的数据任务;
数据处理模块620,用于通过数据处理线程,从目标数据队列中获取目标数据,并处理所述目标数据,以完成相应的数据任务,所述目标数据队列为分布式数据队列中的任意一个数据队列,每个所述数据队列包括至少一个由所述数据查询线程查询到的待处理数据。
在一些实施例中,所述装置还包括:
数据缓存模块,用于将所述数据查询线程查询到的待处理数据添加到所述分布式数据队列中。
在一些实施例中,所述装置还包括数据去重模块;所述数据去重模块,用于获取所述待处理数据的数据标识和对应的任务标识;根据所述数据标识判断所述分布式数据队列中是否存在与所述待处理数据相同的数据;如果所述分布式数据队列中存在与所述待处理数据相同的数据,则判断相同的两个待处理数据所分别对应的任务标识是否一致;如果所述相同的两个待处理数据所分别对应的任务标识一致,则丢弃所述待处理数据;如果所述分布式数据队列中不存在与所述待处理数据相同的数据,则将所述待处理数据添加到所述分布式数据队列中。
在一些实施例中,所述装置还包括:任务接收模块,用于任务接收数据任务;任务缓存模块,用于将接收到的所述数据任务添加到所述分布式任务队列中。
在一些实施例中,所述装置还包括任务去重模块;所述任务去重模块,用于获取所述数据任务的任务标识;根据所述任务标识判断所述数据任务在所述分布式任务队列中是否存在;如果所述数据任务在所述分布式任务队列中不存在,则将所述数据任务添加到所述分布式任务队列中。
在一些实施例中,所述数据查询模块,包括:数据查询单元,用于通过数据查询线程根据所述目标任务执行至少两次查询;结果确认单元,用于判断相邻两次查询或者连续多个查询的查询结果是否存在变化;当相邻两次查询的查询结果存在变化时,则所述数据查询单元执行下一次查询;当相邻两次查询或者连续多次查询的查询结果保持不变时,确定最后一次查询到的数据为所述目标任务对应的待处理数据。
在一些实施例中,所述数据处理模块,包括:数据处理单元,用于通过所述数据处理线程处理所述目标数据,以执行所述目标数据对应的数据任务;结果确认单元,用于根据所述数据处理线程的返回值确定所述数据任务是否执行完成。
在一些实施例中,所述装置还包括限流模块,所述限流模块用于:监测正在运行的线程的线程个数,所述正在运行的线程包括所述数据查询线程和/或所述数据处理线程;当监测到正在运行的线程的线程个数达到预设个数时,停止开启新的所述数据查询线程和数据处理线程,直到所述线程个数低于所述预设个数时,恢复对新的数据查询线程和数据处理线程的开启。
在一些实施例中,所述装置还包括限速模块,所述限速模块用于:监测正在运行的每个线程的处理速度,所述正在运行的线程包括所述数据查询线程和/或所述数据处理线程;当监测到正在运行的线程的处理速度达到预设速度时,控制所述线程暂停运行,直到进入到下一个时间块时,控制所述线程恢复运行。
图7为本申请实施例提供的电子设备的硬件结构示意图。如图7所示,该电子设备,可以包括:存储器701,用于存储程序指令;处理器702,用于调用并执行所述存储器中的程序指令,以实现上述数据处理方法。
本实施例中,处理器和存储器可通过总线或其他方式连接。处理器可以是通用处理器,例如中央处理器、数字信号处理器、专用集成电路,或者被配置成实施本发明实施例的一个或多个集成电路。存储器可以包括易失性存储器,例如随机存取存储器;存储器也可以包括非易失性存储器,例如只读存储器、快闪存储器、硬盘或固态硬盘。
具体实现中,本发明还提供一种计算机存储介质,其中,该计算机存储介质可存储有计算程序,当数据处理装置的至少一个处理器执行所述计算机程序时,数据处理装置执行本申请数据处理方法的各实施例中的部分或全部步骤。所述的存储介质可为磁碟、光盘、只读存储记忆体(英文:read-only memory,简称:ROM)或随机存储记忆体(英文:randomaccess memory,简称:RAM)等。
本领域的技术人员可以清楚地了解到本发明实施例中的技术可借助软件加必需的通用硬件平台的方式来实现。基于这样的理解,本发明实施例中的技术方案本质上或者说对现有技术做出贡献的部分可以以软件产品的形式体现出来,该计算机软件产品可以存储在存储介质中,如ROM/RAM、磁碟、光盘等,包括若干指令用以使得一台计算机设备(可以是个人计算机,线程器,或者网络设备等)执行本发明各个实施例或者实施例的某些部分所述的方法。
本说明书中各个实施例之间相同相似的部分互相参见即可。尤其,对于装置、电子设备及存储介质实施例而言,由于其基本相似于方法实施例,所以描述的比较简单,相关之处参见方法实施例中的说明即可。
以上所述的本发明实施方式并不构成对本发明保护范围的限定。
Claims (20)
1.一种数据处理方法,其特征在于,所述方法包括:
通过数据查询线程,从目标任务队列中获取目标任务,并查询所述目标任务对应的待处理数据,所述目标任务队列为分布式任务队列中的任意一个任务队列,每个所述任务队列包括至少一个接收到的数据任务;
通过数据处理线程,从目标数据队列中获取目标数据,并处理所述目标数据,以完成相应的数据任务,所述目标数据队列为分布式数据队列中的任意一个数据队列,每个所述数据队列包括至少一个由所述数据查询线程查询到的待处理数据。
2.根据权利要求1所述的方法,其特征在于,所述方法还包括:
将所述数据查询线程查询到的待处理数据添加到所述分布式数据队列中。
3.根据权利要求2所述的方法,其特征在于,所述将数据查询线程查询到的待处理数据添加到所述分布式数据队列之前,所述方法还包括:
获取所述待处理数据的数据标识和对应的任务标识;
根据所述数据标识判断所述分布式数据队列中是否存在与所述待处理数据相同的数据;
如果所述分布式数据队列中存在与所述待处理数据相同的数据,则判断相同的两个待处理数据所分别对应的任务标识是否一致;
如果所述相同的两个待处理数据所分别对应的任务标识一致,则丢弃所述待处理数据;
如果所述分布式数据队列中不存在与所述待处理数据相同的数据,则将所述待处理数据添加到所述分布式数据队列中。
4.根据权利要求1所述的方法,其特征在于,所述方法还包括:
接收数据任务;
将接收到的所述数据任务添加到所述分布式任务队列中。
5.根据权利要求4所述的方法,其特征在于,所述将接收到的所述数据任务添加到所述分布式任务队列之前,所述方法还包括:
获取所述数据任务的任务标识;
根据所述任务标识判断所述数据任务在所述分布式任务队列中是否存在;
如果所述数据任务在所述分布式任务队列中不存在,则将所述数据任务添加到所述分布式任务队列中。
6.根据权利要求1所述的方法,其特征在于,所述查询目标任务对应的待处理数据,包括:
根据所述目标任务执行至少两次查询;
当相邻两次查询的查询结果存在变化时,则执行下一次查询;
当相邻两次查询或者连续多次查询的查询结果保持不变时,确定最后一次查询到的数据为所述目标任务对应的待处理数据。
7.根据权利要求1所述的方法,其特征在于,所述处理所述目标数据,包括:
通过所述数据处理线程处理所述目标数据,以执行所述目标数据对应的数据任务;
根据所述数据处理线程的返回值确定所述数据任务是否执行完成。
8.根据权利要求1所述的方法,其特征在于,所述方法还包括:
监测正在运行的线程的线程个数,所述正在运行的线程包括所述数据查询线程和/或所述数据处理线程;
当监测到正在运行的线程的线程个数达到预设个数时,停止开启新的所述数据查询线程和数据处理线程,直到所述线程个数低于所述预设个数时,恢复对新的数据查询线程和数据处理线程的开启。
9.根据权利要求1所述的方法,其特征在于,所述方法还包括:
监测正在运行的每个线程的处理速度,所述正在运行的线程包括所述数据查询线程和/或所述数据处理线程;
当监测到正在运行的线程的处理速度达到预设速度时,控制所述线程暂停运行,直到进入到下一个时间块时,控制所述线程恢复运行。
10.一种数据处理装置,其特征在于,所述装置包括:
数据查询模块,用于通过数据查询线程,从目标任务队列中获取目标任务,并查询所述目标任务对应的待处理数据,所述目标任务队列为分布式任务队列中的任意一个任务队列,每个所述任务队列包括至少一个接收到的数据任务;
数据处理模块,用于通过数据处理线程,从目标数据队列中获取目标数据,并处理所述目标数据,以完成相应的数据任务,所述目标数据队列为分布式数据队列中的任意一个数据队列,每个所述数据队列包括至少一个由所述数据查询线程查询到的待处理数据。
11.根据权利要求10所述的装置,其特征在于,所述装置还包括:
数据缓存模块,用于将所述数据查询线程查询到的待处理数据添加到所述分布式数据队列中。
12.根据权利要求11所述的装置,其特征在于,所述装置还包括数据去重模块;
所述数据去重模块,用于获取所述待处理数据的数据标识和对应的任务标识;
根据所述数据标识判断所述分布式数据队列中是否存在与所述待处理数据相同的数据;
如果所述分布式数据队列中存在与所述待处理数据相同的数据,则判断相同的两个待处理数据所分别对应的任务标识是否一致;
如果所述相同的两个待处理数据所分别对应的任务标识一致,则丢弃所述待处理数据;
如果所述分布式数据队列中不存在与所述待处理数据相同的数据,则将所述待处理数据添加到所述分布式数据队列中。
13.根据权利要求10所述的装置,其特征在于,所述装置还包括:
任务接收模块,用于任务接收数据任务;
任务缓存模块,用于将接收到的所述数据任务添加到所述分布式任务队列中。
14.根据权利要求13所述的装置,其特征在于,所述装置还包括任务去重模块;
所述任务去重模块,用于获取所述数据任务的任务标识;
根据所述任务标识判断所述数据任务在所述分布式任务队列中是否存在;
如果所述数据任务在所述分布式任务队列中不存在,则将所述数据任务添加到所述分布式任务队列中。
15.根据权利要求10所述的装置,其特征在于,所述数据查询模块,包括:
数据查询单元,用于通过数据查询线程根据所述目标任务执行至少两次查询;
结果确认单元,用于判断相邻两次查询或者连续多个查询的查询结果是否存在变化;
当相邻两次查询的查询结果存在变化时,则所述数据查询单元执行下一次查询;当相邻两次查询或者连续多次查询的查询结果保持不变时,确定最后一次查询到的数据为所述目标任务对应的待处理数据。
16.根据权利要求10所述的装置,其特征在于,所述数据处理模块,包括:
数据处理单元,用于通过所述数据处理线程处理所述目标数据,以执行所述目标数据对应的数据任务;
结果确认单元,用于根据所述数据处理线程的返回值确定所述数据任务是否执行完成。
17.根据权利要求10所述的装置,其特征在于,所述装置还包括限流模块,所述限流模块用于:
监测正在运行的线程的线程个数,所述正在运行的线程包括所述数据查询线程和/或所述数据处理线程;
当监测到正在运行的线程的线程个数达到预设个数时,停止开启新的所述数据查询线程和数据处理线程,直到所述线程个数低于所述预设个数时,恢复对新的数据查询线程和数据处理线程的开启。
18.根据权利要求10所述的装置,其特征在于,所述装置还包括限速模块,所述限速模块用于:
监测正在运行的每个线程的处理速度,所述正在运行的线程包括所述数据查询线程和/或所述数据处理线程;
当监测到正在运行的线程的处理速度达到预设速度时,控制所述线程暂停运行,直到进入到下一个时间块时,控制所述线程恢复运行。
19.一种电子设备,其特征在于,包括:
存储器,用于存储程序指令;
处理器,用于调用并执行所述存储器中的程序指令,以实现权利要求1-8任一项所述的方法。
20.一种存储介质,其特征在于,所述存储介质中存储有计算机程序,当权利要求9-16任一项所述装置的至少一个处理器执行所述计算机程序时,所述装置执行权利要求1-8任一项所述的方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201911340622.8A CN111159236A (zh) | 2019-12-23 | 2019-12-23 | 数据处理方法、装置、电子设备及存储介质 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201911340622.8A CN111159236A (zh) | 2019-12-23 | 2019-12-23 | 数据处理方法、装置、电子设备及存储介质 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN111159236A true CN111159236A (zh) | 2020-05-15 |
Family
ID=70558097
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201911340622.8A Pending CN111159236A (zh) | 2019-12-23 | 2019-12-23 | 数据处理方法、装置、电子设备及存储介质 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN111159236A (zh) |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN113625954A (zh) * | 2021-06-30 | 2021-11-09 | 济南浪潮数据技术有限公司 | 一种卷信息查询方法、装置、设备及可读存储介质 |
Citations (9)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN103488734A (zh) * | 2013-09-17 | 2014-01-01 | 华为技术有限公司 | 一种数据处理方法及重删引擎 |
CN103514277A (zh) * | 2013-09-24 | 2014-01-15 | 国家电网公司 | 用电信息采集系统的任务并行处理方法 |
US20140372374A1 (en) * | 2013-06-14 | 2014-12-18 | International Business Machines Corporation | Difference determination in a database environment |
CN106547612A (zh) * | 2016-10-18 | 2017-03-29 | 深圳怡化电脑股份有限公司 | 一种多任务处理方法及装置 |
CN106790022A (zh) * | 2016-12-14 | 2017-05-31 | 福建天泉教育科技有限公司 | 基于多查询线程的通信方法及其系统 |
CN107766381A (zh) * | 2016-08-22 | 2018-03-06 | 北京京东尚科信息技术有限公司 | 数据查询方法、系统及电子设备 |
CN110413390A (zh) * | 2019-07-24 | 2019-11-05 | 深圳市盟天科技有限公司 | 线程任务处理方法、装置、服务器及存储介质 |
CN110427254A (zh) * | 2019-07-05 | 2019-11-08 | 深圳壹账通智能科技有限公司 | 任务处理方法、装置、设备及计算机可读存储介质 |
CN110569123A (zh) * | 2019-07-31 | 2019-12-13 | 苏宁云计算有限公司 | 线程分配方法、装置、计算机设备和存储介质 |
-
2019
- 2019-12-23 CN CN201911340622.8A patent/CN111159236A/zh active Pending
Patent Citations (9)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20140372374A1 (en) * | 2013-06-14 | 2014-12-18 | International Business Machines Corporation | Difference determination in a database environment |
CN103488734A (zh) * | 2013-09-17 | 2014-01-01 | 华为技术有限公司 | 一种数据处理方法及重删引擎 |
CN103514277A (zh) * | 2013-09-24 | 2014-01-15 | 国家电网公司 | 用电信息采集系统的任务并行处理方法 |
CN107766381A (zh) * | 2016-08-22 | 2018-03-06 | 北京京东尚科信息技术有限公司 | 数据查询方法、系统及电子设备 |
CN106547612A (zh) * | 2016-10-18 | 2017-03-29 | 深圳怡化电脑股份有限公司 | 一种多任务处理方法及装置 |
CN106790022A (zh) * | 2016-12-14 | 2017-05-31 | 福建天泉教育科技有限公司 | 基于多查询线程的通信方法及其系统 |
CN110427254A (zh) * | 2019-07-05 | 2019-11-08 | 深圳壹账通智能科技有限公司 | 任务处理方法、装置、设备及计算机可读存储介质 |
CN110413390A (zh) * | 2019-07-24 | 2019-11-05 | 深圳市盟天科技有限公司 | 线程任务处理方法、装置、服务器及存储介质 |
CN110569123A (zh) * | 2019-07-31 | 2019-12-13 | 苏宁云计算有限公司 | 线程分配方法、装置、计算机设备和存储介质 |
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN113625954A (zh) * | 2021-06-30 | 2021-11-09 | 济南浪潮数据技术有限公司 | 一种卷信息查询方法、装置、设备及可读存储介质 |
CN113625954B (zh) * | 2021-06-30 | 2024-03-15 | 济南浪潮数据技术有限公司 | 一种卷信息查询方法、装置、设备及可读存储介质 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN107370667B (zh) | 多线程并行处理方法和装置、可读介质和存储控制器 | |
CN110489447B (zh) | 数据查询方法、装置、计算机设备和存储介质 | |
CN107450971B (zh) | 任务处理方法及装置 | |
CN111897633A (zh) | 一种任务处理的方法和装置 | |
CN105447092A (zh) | 一种缓存方法及装置 | |
EP3044678A1 (en) | Failure recovery of a task state in batch-based stream processing | |
CN113656176A (zh) | 云设备的分配方法、装置、系统、电子设备、介质及产品 | |
CN111371585A (zh) | 用于cdn节点的配置方法及装置 | |
CN110995801A (zh) | 一种服务调用的方法及装置 | |
CN111159236A (zh) | 数据处理方法、装置、电子设备及存储介质 | |
CN111835797A (zh) | 一种数据处理方法、装置及设备 | |
CN111290842A (zh) | 一种任务执行方法和装置 | |
CN116366634A (zh) | 一种文件下载方法、装置、终端、源服务器及介质 | |
CN110765392A (zh) | 数据的加载方法及装置、存储介质、终端 | |
CN106598706B (zh) | 一种提高服务器的稳定性的方法、装置及服务器 | |
CN108173892B (zh) | 云端镜像操作方法和装置 | |
CN114020408A (zh) | 一种任务分片配置方法及装置、设备、存储介质 | |
CN113886082A (zh) | 请求处理方法、装置、计算设备及介质 | |
CN109933426B (zh) | 服务调用的处理方法、装置、电子设备及可读存储介质 | |
CN114520808A (zh) | 请求处理方法、装置、电子设备及计算机可读存储介质 | |
EP3193482B1 (en) | Message processing method and apparatus | |
CN113014414B (zh) | 网络数据的预测方法、装置、系统和服务器 | |
CN113360525B (zh) | 查询请求处理方法、装置及设备、键值查询系统 | |
CN113765711B (zh) | 一种网络设备保活方法及装置 | |
CN113301136B (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 |