CN116128704A - 数据处理方法、数据处理装置以及计算机可读存储介质 - Google Patents

数据处理方法、数据处理装置以及计算机可读存储介质 Download PDF

Info

Publication number
CN116128704A
CN116128704A CN202211715718.XA CN202211715718A CN116128704A CN 116128704 A CN116128704 A CN 116128704A CN 202211715718 A CN202211715718 A CN 202211715718A CN 116128704 A CN116128704 A CN 116128704A
Authority
CN
China
Prior art keywords
processing
data
node
algorithm
current
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
Application number
CN202211715718.XA
Other languages
English (en)
Inventor
孙舒婷
李世豪
黄鹏
杨坤兴
程淼
符哲蔚
丁乃英
刘明
邓志吉
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Zhejiang Dahua Technology Co Ltd
Original Assignee
Zhejiang Dahua Technology Co Ltd
Priority date (The priority date 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 date listed.)
Filing date
Publication date
Application filed by Zhejiang Dahua Technology Co Ltd filed Critical Zhejiang Dahua Technology Co Ltd
Priority to CN202211715718.XA priority Critical patent/CN116128704A/zh
Publication of CN116128704A publication Critical patent/CN116128704A/zh
Pending legal-status Critical Current

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T1/00General purpose image data processing
    • G06T1/20Processor architectures; Processor configuration, e.g. pipelining
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements 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/46Multiprogramming arrangements
    • G06F9/48Program initiating; Program switching, e.g. by interrupt
    • G06F9/4806Task transfer initiation or dispatching
    • G06F9/4843Task transfer initiation or dispatching by program, e.g. task dispatcher, supervisor, operating system
    • G06F9/4881Scheduling strategies for dispatcher, e.g. round robin, multi-level priority queues
    • YGENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
    • Y02TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
    • Y02DCLIMATE CHANGE MITIGATION TECHNOLOGIES IN INFORMATION AND COMMUNICATION TECHNOLOGIES [ICT], I.E. INFORMATION AND COMMUNICATION TECHNOLOGIES AIMING AT THE REDUCTION OF THEIR OWN ENERGY USE
    • Y02D10/00Energy efficient computing, e.g. low power processors, power management or thermal management

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Software Systems (AREA)
  • General Engineering & Computer Science (AREA)
  • Multi Processors (AREA)

Abstract

本申请提供一种数据处理方法、数据处理装置以及计算机可读存储介质。包括:利用当前处理节点内若干并行的算法对待处理数据进行处理,获取算法处理结果;将已完成的当前处理任务放入下一个处理节点的任务调度队列,并唤醒下一个处理任务,直至当前处理节点的任务调度队列中的所有处理任务处理完成;利用下一个处理节点内的算法继续对当前处理节点的算法处理结果进行处理,直至所有处理节点处理完所有处理任务,将算法输出数据保存至对应算法的内存节点。通过上述方式,将多处理任务的调度任务分配到各个处理节点中,实现了分布式的任务调度框架,提升了整个框架的执行效率和空间效率,节约了不同算法在不同处理器上切换时产生的上下文切换的开销。

Description

数据处理方法、数据处理装置以及计算机可读存储介质
技术领域
本申请涉及算法调度技术领域,特别是涉及一种数据处理方法、数据处理装置以及计算机可读存储介质。
背景技术
在图像处理领域中,为了在图像中提取更多的信息,往往需要依次将多个来源的图像数据按照一定的算法排列顺序进行处理;其中,算法之间的并行和串行关系会根据处理方案的差异而发生变化,给业务代码的框架的灵活性设计带来了挑战;同时,处理多批次数据时,如何保证流式数据的可以按照到来的顺序依次得到处理,以及如何使用并发编程技术安全、高效地进行数据管理也成为一个设计难点。因此,设计一种简单、快捷和轻便的算法集成框架,对于多场景下的图像处理业务开发有重要意义。
发明内容
本申请提供了一种数据处理方法、数据处理装置以及计算机可读存储介质。
本申请提供了一种数据处理方法,所述数据处理方法包括:
获取当前处理节点的任务调度队列;
按照所述任务调度队列中的当前处理任务获取待处理数据;
利用所述当前处理节点内若干并行的算法对所述待处理数据进行处理,获取算法处理结果;
将已完成的当前处理任务放入下一个处理节点的任务调度队列,并唤醒下一个处理任务,直至所述当前处理节点的任务调度队列中的所有处理任务处理完成;
利用下一个处理节点内的算法继续对所述当前处理节点的算法处理结果进行处理,直至所有处理节点处理完所有处理任务,将算法输出数据保存至对应算法的内存节点。
其中,所述数据处理方法,还包括:
建立数据处理节点链表;
获取处理所述待处理数据所需的若干算法;
在所述数据处理节点链表新建初始处理节点,按照所述若干算法的处理顺序的第一个算法放入初始处理节点;
按照所述处理顺序将剩余算法按照以下方式放入处理节点;
在当前算法为并行算法时,将所述当前算法放入当前处理节点;
在当前算法为串行算法时,新建处理节点,并将所述当前算法放入新建的处理节点。
其中,所述按照所述任务调度队列中的当前处理任务获取待处理数据之前,所述数据处理方法还包括:
给所述任务调度队列中的当前处理任务分配乒乓锁;
在持有所述乒乓锁时,控制所述当前处理节点并行执行所述当前处理任务的不同操作。
其中,所述数据处理方法,包括:
给所述当前处理节点分配操作锁和控制锁;
在持有所述控制锁时,控制所述当前处理节点取出所述任务调度队列中的当前处理任务;
在持有所述操作锁时,控制所述当前处理节点取出算法对所述待处理数据进行处理,获取算法处理结果。
其中,所述将算法输出数据保存至对应算法的内存节点,包括:
给最后一个处理节点分配输出锁;
调用应用层的结果处理函数,将最终的输出数据节点返回给所述应用层;
处理结束后,释放所述输出锁。
其中,所述数据处理方法还包括:
获取每一处理节点的标签以及数据内存节点,所述标签与所述数据内存节点具有映射关系;
所述利用所述当前处理节点内若干并行的算法对所述待处理数据进行处理,获取算法处理结果之后,所述数据处理方法还包括:
将所述算法处理结果保存至所述当前处理节点的标签对应的数据内存节点。
其中,所述获取每一处理节点的标签,包括:
根据所述每一处理节点中算法的信息计算所述映射地址的哈希值;
利用所述哈希值生成所述每一处理节点的标签。
其中,所述按照所述任务调度队列中的当前处理任务获取待处理数据,包括:
给所述当前处理任务分配输入锁;
从所述当前处理节点的数据内存节点获取所述待处理数据;
获取完成后,释放所述当前处理任务的输入锁。
本申请还提供了一种数据处理装置,所述数据处理装置包括处理器和存储器,所述存储器中存储有程序数据,所述处理器用于执行所述程序数据以实现如上述的数据处理方法。
本申请还提供了一种计算机可读存储介质,所述计算机可读存储介质用于存储程序数据,所述程序数据在被处理器执行时,用以实现上述的数据处理方法。
本申请的有益效果是:数据处理装置获取当前处理节点的任务调度队列;按照任务调度队列中的当前处理任务获取待处理数据;利用当前处理节点内若干并行的算法对待处理数据进行处理,获取算法处理结果;将已完成的当前处理任务放入下一个处理节点的任务调度队列,并唤醒下一个处理任务,直至当前处理节点的任务调度队列中的所有处理任务处理完成;利用下一个处理节点内的算法继续对当前处理节点的算法处理结果进行处理,直至所有处理节点处理完所有处理任务,将算法输出数据保存至对应算法的内存节点。通过上述方式,数据处理装置通过将多处理任务的调度任务分配到各个处理节点中,实现了分布式的任务调度框架,提升了整个框架的执行效率和空间效率,节约了不同算法在不同处理器上切换时产生的上下文切换的开销。
附图说明
为了更清楚地说明本发明实施例中的技术方案,下面将对实施例描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。其中:
图1是本申请提供的软件层次设计图;
图2是本申请提供的数据处理方法一实施例的流程示意图;
图3是本申请提供的处理高并发流式数据的分布式调度框架模块设计图;
图4是本申请提供的单个处理节点的FIFO调度队列实现示意图;
图5是本申请提供的分布式调度流程的示意图;
图6是本申请提供的单一锁控制与乒乓锁控制的区别示意图;
图7是本申请提供的数据处理装置一实施例的结构示意图;
图8是本申请提供的计算机可读存储介质一实施例的结构示意图。
具体实施方式
下面将结合本申请实施例中的附图,对本申请实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅是本申请的一部分实施例,而不是全部的实施例。基于本申请中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本申请保护的范围。
本申请通过设计一个业务适应性高、稳定性好的图像处理算法集成框架,使其能支持算法逻辑实现独立解耦,支持不同图像数据输入速率,以分布式的任务管理机制替代集中式的消息分发机制以降低调度及运行开销,提高多任务场景中管道模式处理效率。
本申请中所述的处理高并发流式数据的分布式调度框架位于软件层次设计中的框架层。如图1所示,图1是本申请提供的软件层次设计图,本申请所示的处理高并发流式数据的分布式调度框架将从应用层中实现的复杂的图像处理应用中获取原始图像数据,经由流式数据处理场景中的分布式调度框架中调度的所有算法及其执行单元,得到的图像处理结果将返回至应用层中。
组件层则是由一些常用的数据结构组件以及数据结构访问、操作组合的组件构成,框架层将这些组件及其功能进行组合和使用,实现对流式数据流处理场景中,以多种可能的组织形式的数据流网络的多个算法单元的正确执行。框架层和组件层之间主要由组件层提供的接口来进行交互。
下面结合数据处理方法继续介绍图1所示的框架层中提出的处理流式数据的分布式调度框架的工作原理以及工作过程。
具体请参阅图2和图3,图2是本申请提供的数据处理方法一实施例的流程示意图,图3是本申请提供的处理高并发流式数据的分布式调度框架模块设计图。
其中,本申请的数据处理方法应用于一种数据处理装置,其中,本申请的数据处理装置可以为服务器,也可以为由服务器和终端设备相互配合的系统。相应地,数据处理装置包括的各个部分,例如各个单元、子单元、模块、子模块可以全部设置于服务器中,也可以分别设置于服务器和终端设备中。
进一步地,上述服务器可以是硬件,也可以是软件。当服务器为硬件时,可以实现成多个服务器组成的分布式服务器集群,也可以实现成单个服务器。当服务器为软件时,可以实现成多个软件或软件模块,例如用来提供分布式服务器的软件或软件模块,也可以实现成单个软件或软件模块,在此不做具体限定。在一些可能的实现方式中,本申请实施例的数据处理方法可以通过处理器调用存储器中存储的计算机可读指令的方式来实现。
如图3所示,由于复杂的图像处理应用中,部分算法是可以并行执行的,并且,这些算法并不需要交互数据。反之,有些算法则在数据上有前后依赖关系,必须要使用前置算法的数据,为了将上述复杂的数据流模型抽象成能够适配管道模式的模型,本申请在构建数据处理框时,建立数据处理节点链表,将可以并行执行的算法注册到一个处理节点中,有前后数据依赖的算法(即需要串行执行的算法)则单独注册到另一个处理节点中,依次按照图像处理应用中数据流在各个算法中推送的需要,将多个处理节点的数据流构建成管道模型的形式,构成数据处理节点链表。
具体流程如下:
1.如果当前还未存在一个处理节点,则无论当前算法是可并行的还是串行算法,都将新建一个处理节点,并将当前算法加入到新建的处理节点中。
2.遍历接下来的每个算法:
i.如果该算法为串行算法,则在当前处理节点之后新建一个处理节点,并将当前算法加入到新建的处理节点,最后将当前处理节点设置为刚刚新建的处理节点。
ii.如果该算法为可并行算法,则将算法加入到当前处理节点中。
3.直至遍历完最后一个算法。
如图3所示,处理节点1的算法1和算法2并行执行,处理节点3的算法4、算法5、算法6并行执行,处理节点4的算法7和算法8并行执行。另外,处理节点1、处理节点2、处理节点3以及处理节点4根据处理顺序形成串行的执行关系。
本申请在上述数据处理节点链表设计的基础上,对流式数据并发处理场景中的调度框架设计进行优化。本申请所述的处理高并发流式数据的分布式调度框架中单次执行的数据流设计可以描述为图2所示的数据处理方法。
具体而言,如图2所示,本申请实施例的数据处理方法具体包括以下步骤:
步骤S11:获取当前处理节点的任务调度队列。
在本申请实施例中,数据处理装置对应用层发送的原始数据,即待处理数据进行预处理,按照本申请设计的哈希表数据管理方法,通过应用层为预处理数据注册的标签将原始数据按照框架设计的数据结构存储至内存中。
同时,每个处理节点会维护一个先进先出(FIFO,First In,First Out)调度队列,其设计原理如图4所示,各个处理任务按照到来顺序在FIFO调度队列中排队。位于队列首部的处理任务可以获得当前处理节点的操作权限,当FIFO调度队列首部的处理任务完成计算以后,将被弹出当前处理节点的FIFO队列,并加入下一个处理节点的FIFO调度队列的排队中。
以图3中处理任务3为例,当处理任务3在处理节点2完成计算以后,则从处理节点2的FIFO调度队列中弹出。同时,唤醒目前处于处理节点2FIFO调度队列首部的处理任务4,最后将处理任务3加入到处理节点3的FIFO调度队列的尾部,排队等待获得其对处理节点3的操作权限。
步骤S12:按照任务调度队列中的当前处理任务获取待处理数据。
在本申请实施例中,数据处理装置将图3所示的处理任务池中的任务1至n依次下发至第一个处理节点,即处理节点1的FIFO调度队列中,后续分布式调度则有各个处理节点的FIFO调度队列接管。
其中,每个处理节点中将依次对每个算法进行如下处理:准备算法输入数据,即从内存中按照本申请设计的哈希表数据管理方法计算得到的标签索引算法所需的数据内存节点。其中,每个处理节点事先根据哈希表数据管理方法计算数据内存节点的映射地址,从而得到映射地址的标签,具体可以为哈希值的表现形式。在数据处理过程中,数据处理装置可以根据标签快速定位每个处理节点的数据内存节点以及输出数据节点,即存储数据的存储空间。
步骤S13:利用当前处理节点内若干并行的算法对待处理数据进行处理,获取算法处理结果。
在申请实施例中,数据处理装置调用当前处理节点内的算法,通过调用当前处理节点的算法注册的计算函数,计算待处理数据的算法处理结果。算法计算完成后得到的输出数据也可以按照本申请设计的哈希表数据管理方法计算标签,将当前执行线程对应的算法之输出数据,保存至内存中按照算法标签可索引至的相应区域,即当前算法对应的输出结果节点地址中。
步骤S14:将已完成的当前处理任务放入下一个处理节点的任务调5度队列,并唤醒下一个处理任务,直至当前处理节点的任务调度队列中的所有处理任务处理完成。
在本申请实施例中,当前处理节点内的所有算法完成步骤S13的处理后,即可视为当前处理节点的任务调度队列首部的处理任务完成了当
前处理节点的计算任务。将已完成的处理任务放入下一个处理节点的任0务调度队列的末位,并唤醒下一个处理任务,直至完成当前处理节点的任务调度队列的所有处理任务。
步骤S15:利用下一个处理节点内的算法继续对当前处理节点的算法处理结果进行处理,直至所有处理节点处理完所有处理任务,将算法输出数据保存至对应算法的内存节点。
5在本申请实施例中,数据处理装置按照数据处理节点链表的顺序,
继续执行下一个处理节点的任务调度列表中的所有处理任务,直至所有的处理节点均完成任务调度列表中的所有处理任务。
当所有处理任务都按照各个处理节点的FIFO调度队列的调度,得到最后一个处理节点中算法的输出数据。数据处理装置调用应用层注册0的结果处理函数,从内存中取出所需结果,即算法处理结果,向应用层提供结果数据,此时,即可视为完成了框架层的职责。
在本申请实施例中,数据处理装置获取当前处理节点的任务调度队列;按照任务调度队列中的当前处理任务获取待处理数据;利用当前处
理节点内若干并行的算法对待处理数据进行处理,获取算法处理结果;5将已完成的当前处理任务放入下一个处理节点的任务调度队列,并唤醒
下一个处理任务,直至当前处理节点的任务调度队列中的所有处理任务处理完成;利用下一个处理节点内的算法继续对当前处理节点的算法处理结果进行处理,直至所有处理节点处理完所有处理任务,将算法输出数据保存至对应算法的内存节点。通过上述方式,数据处理装置通过将多处理任务的调度任务分配到各个处理节点中,实现了分布式的任务调度框架,提升了整个框架的执行效率和空间效率,节约了不同算法在不同处理器上切换时产生的上下文切换的开销。
进一步地,由于在内存中的数据、线程池的资源等都是线程可共享的资源,会在多任务并发情况下产生资源竞争的问题;对于复杂图像处理场景而言,即为多通道、多批次的数据同时送达的情况。
因此,本申请所述的处理高并发流式数据的分布式调度框架抽象了四个类型的锁:输入锁、操作锁、输出锁、控制锁,以实现多线程计算中的资源管理,从而达到避免资源竞争、保护数据一致性的目的。另外,当高并发的流式数据送达时,一般地,需要通过异步消息驱动的消息中心集中式管理模式来对处理数据的顺序进行管理。
具体请继续参阅图5,图5是本申请提供的分布式调度流程的示意图。如图5所示,数据处理装置将顺序管理任务分配给各个处理节点,由处理节点的FIFO调度队列之间的交互来管理处理任务的执行顺序,使得管道模式能够更有效地发挥分布式计算的效率优势,而不会被消息分发时的产生的等待中断管道中的流水流程。
综上,本申请所述的处理高并发流式数据的分布式调度框架,实现流程描述如下:
步骤1:对应用层的数据按照框架层的协议执行预处理操作,以供框架层使用。
本申请所述的分布式调度优化方案中,为了支持所述框架的基本功能,本申请所述的框架层中设计了其与应用层的数据交互协议,应用层按照约定好的数据交互协议,注册相应的数据预处理函数,将处理好以后的数据按照本申请设计的哈希表算法结果管理方法生成标签和对应的数据内存节点。
为了保证数据的一致性,任一处理任务从缓存队列中读取数据节点时,必须持有输入缓存队列的输入锁,向其他处理任务声明当前处理任务的操作意图,从而确保在多数据并发的情况下,没有其他的处理任务可以改变输入缓存队列中的任何内容。持有输入锁以后,处理任务从输入缓存队列中,将按照协议打包好的数据拷贝到当前处理任务的临时变量中,当第一个处理节点在处理流程中时,由第一个处理节点取得当前原始数据的拷贝,准备进行后续处理;确认有处理任务取得当前原始数据以后,可以释放当前输入缓存队列的输入锁。
步骤2:调度每个到来的处理任务。
每个到来的处理任务都会有一个乒乓锁,其中,乒乓锁由两个锁组成,处理任务将交替使用这两个锁来对当前处理任务中可分离的操作。当一个锁在控制操作1的执行时,允许同一时刻另一个锁控制操作2的执行,如图6所示,图6是本申请提供的单一锁控制与乒乓锁控制的区别示意图。相比单一锁控制的整个处理流程的方式,乒乓锁的设计可以通过减少对锁的等待时间,对流水的效率进行优化。
当每个处理任务到来时,将其可获取到的乒乓锁加入到FIFO调度队列中,如果当前任务不处于队列最前端,则进入等待状态(如图4中的处理任务3-n),直至前序任务完成处理后,弹出当前处理节点的FIFO调度队列(如图4中的处理任务1),使得当前处理任务的乒乓锁位于队列的首部(如图4中的处理任务2)时,处理任务2被处理任务1唤醒,并持有当前处理节点的控制锁,获得当前处理节点的操作权限,进入当前处理节点的操作流程。
步骤3:完成每个处理节点的计算任务。
在图3所涉及的数据处理节点链表中,每个处理节点中的操作都是不可中断的,一旦数据处理操作被中断,则无法保证送到内存中的数据一致性。因此在步骤3的执行全程需要使得当前处理节点持有操作锁,其中,操作锁赋予当前处理节点执行算法的权限,该操作锁将在得到所有算法计算函数返回结果后释放。
步骤4:处理任务完成后的FIFO调度队列管理。
当前处理任务在任一中间处理节点中的任务操作执行完毕时,将获取处理任务的另一乒乓锁,使其加入下一个处理节点的FIFO调度队列中排队,通过在处理节点中的FIFO队列中依次排队来确保流式数据的处理顺序。
接着,将当前处理任务使用中的乒乓锁从FIFO队列中弹出,表示当前处理任务已经完成,并且将使用中的乒乓锁进行释放,供后续操作使用;同时,弹出的处理任务也会唤醒处于当前处理节点首部的处理任
务,交出控制锁,其中,控制锁赋予当前处理节点取出处理任务的权限,5使得下一个队列中的处理任务获得当前处理节点的操作权限。对于每个处理任务而言,每次在处理节点之间切换时,仅需要遵循FIFO调度队列的管理即可,不需要等待消息中心的调度,节约了上下文切换的开销。而对于每个处理节点而言,在多处理任务并发的情况下,本申请所述的
框架则通过每个处理节点的FIFO调度队列,对多处理任务进行顺序控0制,每个处理节点将按照队列中的顺序依次给每个排队的处理任务提供
当前处理节点的控制锁即可。
在此设计下,高并发场景中,每个处理节点的使用率可以不限于传统管道模式的节拍,在FIFO队列不为空的情况下,处理节点可以无时
隙地一直工作,大大提高了每个处理节点的使用率,增加了整体框架的5效率。
步骤5:完成应用层需求的结果处理任务,并返回复杂图像处理结果。
当前处理任务如果已经遍历到最后一个处理节点,则将乒乓锁加在输出缓存的资源之上,记为输出锁,向其他处理任务声明当前处理任务0准备要进行结果处理操作,防止结果被其他处理任务篡改。加锁成功以后,则调用应用层注册的结果处理函数,框架层可以将复杂图像处理应用需求的结果数据返回给应用层。处理结束后,则释放输出锁,将内存中的共享资源再次开放,以待后续处理任务进行访问。当所有并发的处
理任务都完成了所有节点的处理,则可以认为本申请所述的框架完成了5所有的数据处理任务。
本申请对于数据处理节点链表中每个处理节点新增的FIFO调度队列机制,将多处理任务的调度任务分配到各个处理节点中,实现了分布式的任务调度框架,提升了整个框架的执行效率和空间效率,节约了不同算法在不同处理器上切换时产生的上下文切换的开销。
本申请所设计的每个处理节点的FIFO调度队列和每个处理任务的乒乓锁的机制,则在解决现有技术的问题的基础上做了进一步的效率优化。因为对于每个处理节点而言,由于FIFO调度队列的使用,每个加入到队列中的处理任务都将会依次执行;而对于每个处理任务而言,每次操作等待锁的过程也可以通过乒乓操作的机制而减少等待时间。
本申请设计了数据处理节点链表的机制,以算法是否可并行执行为划分依据,将算法的执行流图进一步抽象,使其更符合管道模式的适用情境;其次,本申请针对管道模式中,每个处理节点耗时不均可能导致的数据堆积、效率不高的问题,采用了分布式计算的思路,通过FIFO控制队列,使得多并发任务能够有序进行,在此设计下,高并发场景中,每个处理节点的使用率可以不限于传统管道模式的节拍,在FIFO队列不为空的情况下,处理节点可以无时隙地一直工作,大大提高了每个处理节点的使用率,有效提升了框架的整体效率。
此外,本申请所述的算法结果标记方法采用了哈希表的方法,提升了结果检索的效率;还通过引入保证数据一致性的锁机制,能确保所有处理任务能够正确访问和操作所需的数据。
本领域技术人员可以理解,在具体实施方式的上述方法中,各步骤的撰写顺序并不意味着严格的执行顺序而对实施过程构成任何限定,各步骤的具体执行顺序应当以其功能和可能的内在逻辑确定。
为实现上述实施例的数据处理方法,本申请还提出了一种数据处理装置,具体请参阅图7,图7是本申请提供的数据处理装置一实施例的结构示意图。
本申请实施例的数据处理装置300包括存储器31和处理器32,其中,存储器31和处理器32耦接。
存储器31用于存储程序数据,处理器32用于执行程序数据以实现上述实施例所述的数据处理方法。
在本实施例中,处理器32还可以称为CPU(Central Processing Unit,中央处理单元)。处理器32可能是一种集成电路芯片,具有信号的处理能力。处理器32还可以是通用处理器、数字信号处理器(DSP,Digital Signal Process)、专用集成电路(ASIC,ApplicationSpecific Integrated Circuit)、现场可编程门阵列(FPGA,Field Programmable GateArray)或者其它可编程逻辑器件、分立门或者晶体管逻辑器件、分立硬件组件。通用处理器可以是微处理器或者该处理器32也可以是任何常规的处理器等。
为实现上述实施例的数据处理方法,本申请还提供了一种计算机可读存储介质,如图8所示,计算机可读存储介质400用于存储程序数据41,程序数据41在被处理器执行时,用以实现如上述实施例所述的数据处理方法。
本申请还提供一种计算机程序产品,其中,上述计算机程序产品包括计算机程序,上述计算机程序可操作来使计算机执行如本申请实施例所述的数据处理方法。该计算机程序产品可以为一个软件安装包。
本申请上述实施例所述的数据处理方法,在实现时以软件功能单元的形式存在并作为独立的产品销售或使用时,可以存储在装置中,例如一个计算机可读取存储介质中。基于这样的理解,本申请的技术方案本质上或者说对现有技术做出贡献的部分或者该技术方案的全部或部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质中,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)或处理器(processor)执行本发明各个实施方式所述方法的全部或部分步骤。而前述的存储介质包括:U盘、移动硬盘、只读存储器(ROM,Read-Only Memory)、随机存取存储器(RAM,Random Access Memory)、磁碟或者光盘等各种可以存储程序代码的介质。
以上所述仅为本申请的实施方式,并非因此限制本申请的专利范围,凡是利用本申请说明书及附图内容所作的等效结构或等效流程变换,或直接或间接运用在其他相关的技术领域,均同理包括在本申请的专利保护范围内。

Claims (10)

1.一种数据处理方法,其特征在于,所述数据处理方法包括:
获取当前处理节点的任务调度队列;
按照所述任务调度队列中的当前处理任务获取待处理数据;
利用所述当前处理节点内若干并行的算法对所述待处理数据进行处理,获取算法处理结果;
将已完成的当前处理任务放入下一个处理节点的任务调度队列,并唤醒下一个处理任务,直至所述当前处理节点的任务调度队列中的所有处理任务处理完成;
利用下一个处理节点内的算法继续对所述当前处理节点的算法处理结果进行处理,直至所有处理节点处理完所有处理任务,将算法输出数据保存至对应算法的内存节点。
2.根据权利要求1所述的数据处理方法,其特征在于,
所述数据处理方法,还包括:
建立数据处理节点链表;
获取处理所述待处理数据所需的若干算法;
在所述数据处理节点链表新建初始处理节点,按照所述若干算法的处理顺序的第一个算法放入初始处理节点;
按照所述处理顺序将剩余算法按照以下方式放入处理节点;
在当前算法为并行算法时,将所述当前算法放入当前处理节点;
在当前算法为串行算法时,新建处理节点,并将所述当前算法放入新建的处理节点。
3.根据权利要求1所述的数据处理方法,其特征在于,
所述按照所述任务调度队列中的当前处理任务获取待处理数据之前,所述数据处理方法还包括:
给所述任务调度队列中的当前处理任务分配乒乓锁;
在持有所述乒乓锁时,控制所述当前处理节点并行执行所述当前处理任务的不同操作。
4.根据权利要求3所述的数据处理方法,其特征在于,
所述数据处理方法,包括:
给所述当前处理节点分配操作锁和控制锁;
在持有所述控制锁时,控制所述当前处理节点取出所述任务调度队列中的当前处理任务;
在持有所述操作锁时,控制所述当前处理节点取出算法对所述待处理数据进行处理,获取算法处理结果。
5.根据权利要求3或4所述的数据处理方法,其特征在于,
所述将算法输出数据保存至对应算法的内存节点,包括:
给最后一个处理节点分配输出锁;
调用应用层的结果处理函数,将最终的输出数据节点返回给所述应用层;
处理结束后,释放所述输出锁。
6.根据权利要求1所述的数据处理方法,其特征在于,
所述数据处理方法还包括:
获取每一处理节点的标签以及数据内存节点,所述标签与所述数据内存节点具有映射关系;
所述利用所述当前处理节点内若干并行的算法对所述待处理数据进行处理,获取算法处理结果之后,所述数据处理方法还包括:
将所述算法处理结果保存至所述当前处理节点的标签对应的数据内存节点。
7.根据权利要求6所述的数据处理方法,其特征在于,
所述获取每一处理节点的标签,包括:
根据所述每一处理节点中算法的信息计算所述映射地址的哈希值;
利用所述哈希值生成所述每一处理节点的标签。
8.根据权利要求6或7所述的数据处理方法,其特征在于,
所述按照所述任务调度队列中的当前处理任务获取待处理数据,包括:
给所述当前处理任务分配输入锁;
从所述当前处理节点的数据内存节点获取所述待处理数据;
获取完成后,释放所述当前处理任务的输入锁。
9.一种数据处理装置,其特征在于,所述数据处理装置包括处理器和存储器,所述存储器中存储有程序数据,所述处理器用于执行所述程序数据以实现如权利要求1-8任一项所述的数据处理方法。
10.一种计算机可读存储介质,其特征在于,所述计算机可读存储介质用于存储程序数据,所述程序数据在被处理器执行时,用以实现权利要求1-8任一项所述的数据处理方法。
CN202211715718.XA 2022-12-29 2022-12-29 数据处理方法、数据处理装置以及计算机可读存储介质 Pending CN116128704A (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN202211715718.XA CN116128704A (zh) 2022-12-29 2022-12-29 数据处理方法、数据处理装置以及计算机可读存储介质

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN202211715718.XA CN116128704A (zh) 2022-12-29 2022-12-29 数据处理方法、数据处理装置以及计算机可读存储介质

Publications (1)

Publication Number Publication Date
CN116128704A true CN116128704A (zh) 2023-05-16

Family

ID=86294955

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202211715718.XA Pending CN116128704A (zh) 2022-12-29 2022-12-29 数据处理方法、数据处理装置以及计算机可读存储介质

Country Status (1)

Country Link
CN (1) CN116128704A (zh)

Similar Documents

Publication Publication Date Title
US8209690B2 (en) System and method for thread handling in multithreaded parallel computing of nested threads
CN107077390B (zh) 一种任务处理方法以及网卡
EP1880289B1 (en) Transparent support for operating system services
US8914800B2 (en) Behavioral model based multi-threaded architecture
CN108595282A (zh) 一种高并发消息队列的实现方法
US6983462B2 (en) Method and apparatus for serving a request queue
CN110795254A (zh) 一种基于php处理高并发io的方法
CN110471777B (zh) 一种Python-Web环境中多用户共享使用Spark集群的实现方法和系统
US10095562B2 (en) System and method for transforming a queue from non-blocking to blocking
CN111459622A (zh) 调度虚拟cpu的方法、装置、计算机设备和存储介质
EP2951691B1 (en) System and method for supporting work sharing muxing in a cluster
CN117850995A (zh) 一种协程调度方法、装置及存储介质
CN117234697A (zh) 一种保守时间同步并行事件调度计算架构和方法
WO2024001411A1 (zh) 多线程调度方法及装置
WO2017031976A1 (en) Processor and method of handling an instruction data therein
CN116128704A (zh) 数据处理方法、数据处理装置以及计算机可读存储介质
Michael et al. Relative performance of preemption-safe locking and non-blocking synchronization on multiprogrammed shared memory multiprocessors
Liu et al. Lock-free scheduling of logical processes in parallel simulation
Brandenburg A note on blocking optimality in distributed real-time locking protocols
CN118606034A (zh) 一种流调度方法、计算机设备、介质以及程序产品
CN114924849A (zh) 一种工业控制系统高并发执行和资源调度方法及装置
JP2024066421A (ja) ストリームベースのトランザクション処理
EP2962199B1 (en) System and method for supporting cooperative concurrency in a middleware machine environment
CN118092081A (zh) 光刻机同步控制方法
CN117724871A (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