数据处理方法、装置、电子设备及存储介质与流程

文档序号:26003878发布日期:2021-07-23 21:21阅读:62来源:国知局
数据处理方法、装置、电子设备及存储介质与流程

本发明实施例涉及数据处理领域,尤其涉及一种数据处理方法、装置、电子设备及存储介质。



背景技术:

随着计算机技术以及大数据技术的发展,越来越多的应用领域都用到了计算机技术和大数据技术,通过这些技术可以更好的满足相应应用领域的使用需求。在每个应用领域中都会产生大量的数据,这些数据具有大量性和多样性。

在这些数据中可能会存在一些有价值的信息,可以通过对这些数据进行处理得到这些信息,对这些数据进行处理的方法可以是数据处理技术等。根据对这些数据的处理得到的结果,可以更好的进行后续的各种应用等。



技术实现要素:

本发明实施例提供一种数据处理方法、装置、电子设备及存储介质。

本公开实施例第一方面提供一种数据处理方法,包括:通过调用接口,接收数据处理请求;调用服务层中与所述数据处理请求对应的服务模块,得到所述数据处理请求的任务参数;其中,所述服务层包括:能够提供不同业务服务且被并行调用的多个服务模块;调用能力集合层中与所述任务参数对应的处理模块,得到响应所述数据处理请求的线程参数;其中,所述能力集合层包括:能够提供不同数据处理方法且被并行调用的多个处理模块;调用业务线程层中与所述线程参数对应的线程,响应所述数据处理请求;其中,所述业务线程层包括:多个能够被并行调用的线程。

在一个实施例中,所述能力集合层包括:父类处理模块及能够被并行调用的多个子类处理模块。

在一个实施例中,所述调用能力集合层中与所述任务参数对应的处理模块,得到响应所述数据处理请求的线程参数,包括:将所述任务参数传输至与所述任务参数对应的所述父类处理模块;所述父类处理模块根据子类处理模块的数据处理方法,将所述父类处理模块接收的所述任务参数中与所述子类处理模块对应的数据分配给所述子类处理模块;所述子类处理模块根据所述任务参数得到响应所述数据处理请求的线程参数。

在一个实施例中所述任务参数对应至少一个母类的待处理数据;所述能力集合层包括:多个所述父类处理模块,不同的所述父类处理模块用于处理不同母类的所述待处理数据。

在一个实施例中,所述业务线程层包括:线程父类,以及根据所述线程父类创建的继承所述线程父类属性、并且能够被并行调用的多个线程子类。

在一个实施例中,所述调用业务线程层中与所述线程参数对应的线程,响应所述数据处理请求,包括:将所述线程参数传输至与所述线程参数对应的所述线程父类;所述线程父类根据线程子类的数据处理方法,将所述线程父类接收的所述线程参数中与所述线程子类对应的数据分配给所述线程子类;所述线程子类根据所述线程参数响应所述数据处理请求。

在一个实施例中,所述任务参数对应至少一个母类的待处理数据,一个母类的待处理数据包括至少两个不同子类的待处理数据,一个所述线程参数对应一个所述子类的待处理数据;所述业务线程层包括:多个所述线程父类,不同的所述线程父类用于处理同一个母类的不同子类的待处理数据。

本公开实施例第二方面提供一种数据处理装置,包括:接收模块,用于通过调用接口,接收数据处理请求;第一调用模块,用于调用服务层中与所述数据处理请求对应的服务模块,得到所述数据处理请求的任务参数;其中,所述服务层包括:能够提供不同业务服务且被并行调用的多个服务模块;第二调用模块,用于调用能力集合层中与所述任务参数对应的处理模块,得到响应所述数据处理请求的线程参数;其中,所述能力集合层包括:能够提供不同数据处理方法且被并行调用的多个处理模块;第三调用模块,用于调用业务线程层中与所述线程参数对应的线程,响应所述数据处理请求;其中,所述业务线层包括:多个能够被并行调用的线程。

本公开实施例第三方面提供一种电子设备,包括:

处理器;

存储器,其存储有程序指令,当所述程序指令被所述处理器执行时,使得所述电子设备执行上述所述的处理方法。

本公开实施例第四方面提供一种存储介质,其存储有程序,当所述程序由处理器运行时,执行上述所述的处理方法。

本公开实施例的技术方案中,包括服务层、能力集合层和业务线程层,服务层中包括能够提供不同业务服务且被并行调用的多个服务模块,能力集合层包括能够提供不同数据处理方法且被并行调用的多个处理模块,业务线层中包括多个能够被并行调用的线程。由于多个服务模块是能够提供不同业务服务且被并行调用的,并且调用的服务模块与数据处理请求是对应的,所以在调用与数据处理请求对应的服务模块后,该服务模块与其他服务模块是互不影响的,降低了各个服务模块之间的耦合度。

由于多个处理模块是能够提供不同数据处理方法且被并行调用的,并且调用的处理模块与任务参数是对应的,所以在调用能力集合层中与任务参数对应的处理模块后,该处理模块与其他处理模块同样是互不影响的,降低了各个处理模块之间的耦合度。

由于业务线程层中包含多个能够被并行调用的线程,并且调用的是业务线程层中与线程参数对应的线程,所以在调用与线程参数对应的线程后,被调用的线程与其他线程也是互不影响的,同样降低了各个线程之间的耦合度。

由于降低了各个处理模块之间的耦合度、各个处理模块之间的耦合度和各个线程之间的耦合度,所以整体上降低了在响应数据处理请求过程中各个组成部分的耦合度。

服务层中的服务模块、能力集合层中的处理模块和业务线程层中的线程都是多个,并且可以根据业务进行调整,所以还具有可扩展性,提高了数据处理的灵活性和处理数据的速度等。

附图说明

图1为本公开实施例提供的一种数据处理方法的流程示意图;

图2为本公开实施例提供的一种得到线程参数的流程示意图;

图3为本公开实施例提供的一种响应所述数据处理请求的流程示意图;

图4为本公开实施例提供的一种数据处理装置的结构示意图;

图5为本公开实施例提供的另一种数据处理方法的示意图;

图6为本公开实施例提供的另一种数据处理方法的示意图。

具体实施方式

以下结合说明书附图及具体实施例对本发明的技术方案做进一步的详细阐述。

通常的数据处理方法有同步处理方式和异步处理方式。通过同步处理方法在包括海量数据的应用场景中对数据进行处理时,对于处理器的利用率不高。对于多处理器而言,通过同步处理的方式对大量的数据进行处理时,由于只能采用单任务顺序处理的方式进行处理,所以在有个任务需要长时间占用处理器的情况下,其他任务需要等待很长时间,这样其他任务就得不到处理,导致并发性不好。在处理这些大量的数据时,需要耗费大量的时间,导致执行效率的低下。

通过异步处理的方式对数据进行处理,存在对于处理框架的依赖较大,程序过于繁杂并且底层实现不可见,程序拆分难度较大等问题,这样就会在一定程度上违背了编程语言的低耦合、高内聚的编程思想。如果过于依赖框架,框架之间可能会存在冲突,在后期进行扩展时也会存在问题,例如,想换掉其中的一个模块的话,则会引起一系列的后续问题。

参考图1,为本申请的技术方案提供的一种数据处理方法的流程示意图,该数据处理方法主要包括以下步骤:

步骤s100,通过调用接口,接收数据处理请求。

步骤s200,调用服务层中与所述数据处理请求对应的服务模块,得到所述数据处理请求的任务参数;其中,所述服务层包括:能够提供不同业务服务且被并行调用的多个服务模块。

步骤s300,调用能力集合层中与所述任务参数对应的处理模块,得到响应所述数据处理请求的线程参数;其中,所述能力集合层包括:能够提供不同数据处理方法且被并行调用的多个处理模块。

步骤s400,调用业务线程层中与所述线程参数对应的线程,响应所述数据处理请求;其中,所述业务线程层包括:多个能够被并行调用的线程。

服务层、能力集合层和业务线程层之间的关系可参考图5。

对于步骤s100,在进行数据处理之前,需要先接收数据处理请求,根据接收的数据处理请求,对数据进行处理。具体可以是通过调用接口来接收数据处理请求,这里的调用接口作为一个可以被调用的接口,通过该调用接口进而可以提供相应的服务以及进行相应的处理。该调用接口可以是调用框架提供的接口,通过该调用接口可以实现数据处理请求的接收等。

该调用接口可以对外提供调用服务,能够对调用接口进行调用的外部均可以对该调用接口进行调用。

在一个实施例中,该调用接口可为所有数据处理请求的统一调用接口,此时,计算系统对外提供的调用接口可仅有一个。

在另一个实施例中,该调用接口可以为多个,不同的调用接口可以接收不同的处理请求,进而可以实现对不同处理请求的处理等。同一个调用接口也可以接收不同的处理请求,然后再根据数据处理请求调用对应的服务模块。

步骤s200可以视为对数据处理请求进行处理的第一个实现阶段。

在接收数据处理请求后,由于处理请求可以是通过提供的业务服务进一步实现的,处理请求可以对应有相应的业务服务,所以可以根据该数据处理请求,调用与该数据处理请求对应的服务模块。服务模块可以提供业务服务,通过调用的服务模块提供的业务服务可以进一步实现对数据处理请求的处理。

调用与该数据处理请求对应的服务模块,通过调用的服务模块对接收的数据处理请求进行处理,得到数据处理请求的任务参数。该任务参数可以是调用的与数据处理请求对应的服务模块对数据处理请求进行处理后,得到的与数据处理请求对应的任务参数。

该步骤中调用的服务模块可以是服务层中包括的服务模块。这里的服务层包括能够提供不同业务服务且被并行调用的多个服务模块,不同的服务模块可以提供不同的业务服务,并且不同的服务模块之间是可以被并行调用的。各个服务模块之间不相互影响,在一个服务模块被调用之后,其他的服务模块还可以被调用。由于各个服务模块之间是可以被并行调用的,各个模块之间是相对独立的,相互不影响,所以降低了各个服务模块之间的耦合度,降低了各个服务模块之间的相互依赖性。

由于不同的数据处理请求的所需的业务服务不同,不同的数据处理请求对应不同的服务模块,所以随着数据处理请求的不同,服务模块提供的业务服务也不同。

例如,服务层包括数据发送服务模块和数据接收服务模块,数据发送服务模块可以为数据发送请求提供数据发送的业务服务,数据接服务收模块可以为数据接收请求提供数据接收的业务服务。服务层包括数据预处理服务模块和数据验证服务模块,则数据预处理服务模块可以为数据预处理请求提供数据预处理的业务服务,数据验证服务模块可以为数据验证请求提供数据验证的业务服务。

再例如,服务层包括图像数据处理的服务模块和文本数据处理的服务模块,图像数据处理的服务模块可以提供图像数据处理的业务服务,文本数据处理的服务模块可以提供文本数据处理的业务服务。图像数据处理和文本数据处理是不同的处理方式。

服务层中包括的服务模块的数量是不固定的,可以根据业务的实际需要,对服务模块进行横向扩展,在服务模块扩展时,其他服务模块同样不受影响。由于不同的服务模块可以并行提供不同的业务服务,所以相同的业务服务可以通过同样的服务模块进行提供,相同的数据处理请求可以由相同的服务模块提供业务服务。调用接口可以看作是父类,服务层中多个服务模块可以看作是子类,通过调用接口和服务模块之间的这种父类-子类的设计,可以通过更多和更丰富的业务执行逻辑,从而具有高复用性。

例如,服务层中包括三个可以提供不同业务服务的并且可以被并行调用的服务模块a、服务模块b和服务模块c,外部通过调用接口发送了一个数据处理请求,在通过调用接口接收数据处理请求之后,根据数据处理请求与服务模块之间的对应关系,调用与该数据处理请求对应的服务模块a。数据处理请求与服务模块之间的对应关系可以是处理与被处理的对应关系、服务与被服务的对应关系。服务模块a可以提供与该数据处理请求对应的业务服务,即服务模块a提供的业务服务可以处理这个数据处理请求,得到任务参数。

此时,还可以通过调用接口接收其他的数据处理请求,进而调用服务层中其他的服务模块b或者服务模块c,得到相应的任务参数。多个服务模块的调用是互不影响的,这样降低了耦合度。

在一个实施例中,所述服务层接收到所述数据处理请求之后,根据所述数据处理请求携带的服务标识和/或所述数据处理请求携带的待处理数据的自身,得到响应该数据处理请求的一个或多个任务。其中,一个所述任务对应于一套所述任务参数。所述任务参数至少包括:任务标识或者执行对应任务的处理模块的身份标识。

这里的任务参数可以是数据处理请求经过服务模块提供的业务服务进行处理后得到的任务参数,不同的服务模块对不同的数据处理请求提供不同的业务服务后,得到的任务参数是不同的。

任务参数可以包括能力集合层中对应的多个处理模块的信息,包括标识唯一处理模块的标识符信息,可以是身份标识id等。不同的处理模块对应有不同的id,以便通过处理模块的id调用对应的处理模块。还可以是处理模块的方法名,不同方法名的处理模块具有不同的功能,可以提供不同的数据处理方法,可以根据方法名调用对应的处理模块。当然还可以是其他的可以唯一标识能力集合层中处理模块的信息。

例如,数据处理请求为数据验证请求时,通过数据验证服务模块为数据验证请求提供数据验证的业务服务,得到能力集合层中对应的提供数据验证方法的验证模块的id信息,进而可以通过验证模块的id信息可以调用能力集合层中相应的验证模块。

再例如,服务层中的服务模块为图像数据处理的服务模块,得到任务参数,该任务参数包括图像识别处理模块的身份标识符,或者图像识别处理模块的方法名等。通过图像处理模块的身份标识符或者方法名可以调用对应的图像处理模块。任务参数还可以包括其他与图像识别处理模块并行的处理模块的身份标识符或者方法名等,例如黑/白名单比对处理模块的身份标识符或者方法名等。

步骤s300可以视为对数据处理请求进行处理的第二个实现阶段。

服务模块为数据处理请求提供业务服务,能力集合层中的处理模块对服务模块得到的结果进行进一步处理,确定数据处理请求的具体数据处理方法,根据确定的数据处理方法,响应数据处理请求,进而对数据进行处理。在通过调用的服务模块得到任务参数后,根据该任务参数,调用与该任务参数对应的模块。通过调用的与任务参数对应的模块对任务参数进行处理,得到响应数据处理请求的线程参数,以便线程响应数据处理请求。

该步骤中调用的模块可以是能力集合层中包括的处理模块。能力集合层包括能够提供不同数据处理方法且被并行调用的多个处理模块,不同的处理模块可以提供不同的数据处理方法,并且不用的处理模块是可以被并行调用的。各个处理模块之间互不影响,在一个处理模块被调用之后,其他的处理模块还可以被调用。由于各个处理模块之间是可以被并行调用的,各个处理模块之间是相对独立的,相互不影响,所以降低了各个处理模块之间的耦合度,降低了各个处理模块之间的相互依赖性。

由于任务参数中包括多个处理模块的标识符信息,需要调用多个不同的处理模块提供不同的处理方法,进行不同的处理,从而完成对待处理数据的处理。所以,不同处理模块提供的不同的数据处理方法也是不同的。

例如,能力集合层中包括数据验证的处理模块,根据任务参数中包括的数据验证的处理模块的id信息,调用该数据验证的处理模块,该数据验证的处理模块可以提供对数据进行验证的处理方法。

再例如,能力集合层中包括图像识别处理模块和黑/白名单比对处理模块,根据任务参数中包括的图像识别处理模块的身份标识符或者方法名,调用图像识别处理模块。根据黑/白名单比对处理模块的身份标识符或者方法名,调用黑/白名单比对处理模块。图像识别处理模块可以提供的图像识别处理方法,黑/白名单比对处理模块可以提供的黑/白名单比对方法。

能力集合层包括的处理模块的数量也是不固定的,可以根据实际的业务需求进行调整,可以进行扩展等操作。扩展后的处理模块同样也是与其他处理模块可以被并行调用的,与其他处理模块之间并没有依赖关系,互不影响。

例如,能力集合层包括三个提供不同数据处理方法,并且可以被并行调用的处理模块d、处理模块e和处理模块f。根据任务参数与处理模块之间的对应关系,调用与任务参数对应的处理模块d,处理模块d可以提供处理任务参数的处理方法,即处理模块d可以根据任务参数的处理方法,对任务参数进行处理,得到线程参数。

此时,还可以调用其他的处理模块d和处理模块f,根据处理模块e和齿轮模块f提供的数据处理方法对相应的任务参数处理,得到相应的线程参数。多个处理模块的调用是互不影响的,这样也降低了耦合度。

线程参数可以是任务参数经过处理模块提供的处理方法进行处理后得到的线程参数,不同的处理模块对任务参数进行不同方法的处理后,得到的线程参数不同。

线程参数中可以包括业务线程层中对应的线程的身份标识符信息,可以是身份标识id等。不同的线程对应有不同的id,以便通过线程的id调用对应的线程。还可以是线程的方法名,不同的线程方法名具有不同的响应功能,可以提供数据处理请求的不同响应。

例如,业务线程层包中的线程包括图像特征提取线程和数据转发线程,图像识别处理模块得到的线程参数包括特征提取线程的身份标识符或者方法名等,以及数据转发线程的身份标识符或者方法名等。

步骤s400可以视为数据处理的第三个阶段。

在得到线程参数后,根据线程参数,调用与线程参数对应的线程,通过该线程响应数据处理请求,从而完成对应数据处理请求的处理。该阶段为数据处理请求的最终执行和响应的阶段,通过线程即可实现对数据处理请求的执行和响应,可以通过相应的线程得到数据处理请求的响应结果。

该步骤中的线程为业务线程层中的线程,业务线程层中包含多个能够被并行调用的线程。不同的线程可以根据线程参数,响应不同的数据处理请求,并且不同的线程是可以被并行调用的,所以不同的线程之间是相互不影响的,在一个线程被调用之后,其他的线程还可以被调用。这样。降低了各个线程之间的耦合度,降低了各个线程之间的相互依赖性。

值得说明的是,需要先根据任务参数调用能力集合层中的处理模块,然后再根据线程参数调用业务线程层中的线程,并不能直接通过线程参数调用业务线程层中的线程。通过能力集合层将服务层中的服务模块和业务线程层中的线程进行串联,使得每个服务模块分别对应有相应的处理模块,每个处理模块对应有相应的线程,每层中的模块或者线程相互独立,并且可扩展。

本实施例的技术方案将数据处理分为了三个阶段,每一个阶段分对应的模块或者线程都是相对独立的,互不影响,并且还可以跟据业务需要进行扩展,每个处理阶段以及整个处理过程都具有低耦合度。

在另一实施例中,能力集合层包括:父类处理模块及能够被并行调用的多个子类处理模块。

能力集合层采用父类和子类的方式,通过抽象的父类处理模块和具体被调用的子类处理模块处理任务参数,子类处理模块用于提供具体的数据处理方法。父类处理模块可以作为多个子类处理模块的一个抽象的集合。

父类处理模块中包括多个子类处理模块,子类处理模块可以是根据父类处理模块创建的,子类处理模块提供的数据处理方法可以是基于父类处理模块得到的。子类处理模块继承了父类处理模块的至少部分属性,从而具有父类处理模块提供的至少部分能力。

如图5所示,能力集合层包括父类处理模块1,父类处理模块1中包括子类处理模块1和子类处理模块2等,子类处理模块可以根据业务需求进行横向扩展。子类处理模块是可以被并行调用的,不同的子类处理模块可以提供不同的数据处理方法,不同的子类处理模块可以对任务参数进行不同的处理。不同的子类处理模块之间互不影响,相对独立,具有低耦合性。

由于不同子类之间相对独立,并且可以被并行调用,所以多个子类处理模块可以并行处理多个任务。在调用多个子类处理模块处理任务参数时,提高了数据处理的速度,从而提高了数据处理的效率。

参考图2和图5,为另一实施例提供的一种得到线程参数的流程示意图。步骤s300,调用能力集合层中与所述任务参数对应的处理模块,得到响应所述数据处理请求的线程参数,包括:

步骤s301,将任务参数传输至与任务参数对应的父类处理模块。

由于能力集合层中包括父类处理模块和子类处理模块,子类处理模块是在父类处理模块的基础上对数据进行不同方式的处理的,所以需要先将任务参数传输至父类处理模块。该父类处理模块与任务参数是对应的,根据父类处理模块中包括的子类处理模块可以处理的数据,将任务参数传输至父类处理模块。

步骤s302,父类处理模块根据子类处理模块的数据处理方法,将父类处理模块接收的任务参数中,与子类处理模块对应的数据分配给子类处理模块。

在父类处理模块接收到传输过来的任务参数后,根据各个子类处理模块的数据处理方法,将任务参数中与子类对应的数据分配给子类处理模块。这样,不同的子类处理模块可以处理与子类处理模块对应的数据。

步骤s303,子类处理模块根据任务参数得到响应数据处理请求的线程参数。

各个子类模块在得到任务参数中各自要处理的数据之后,对数据进行处理,得到响应数据处理请求的线程参数,以便业务线程层中的线程根据线程参数响应数据处理请求。

在一个实施例中,所述能力集合层,将生成的所述任务参数发送给所述能力集合层的父类处理模块,所述父类处理模块根据任务参数的内容,将所述任务参数分发给能够执行对应任务的子类处理模块,所述任务参数至少包括:任务标识或者执行对应任务的子类处理模块的身份标识。

在一个实施例中,所述能力集合层中的子类处理模块,根据接收的任务参数,结合单个线程执行的功能,得到一套或多套线程参数。其中,一套线程参数分发给一个线程子类,供对应的线程执行响应所述数据处理请求中的一个子任务。所述线程参数至少包括:线程子类的标识或者线程所执行任务的子任务标识。

通过父类处理模块和子类处理模块的设计,不同子类处理模块在父类处理模块的基础上可以提供不同的数据处理方法,因此提供了更多和更丰富的业务逻辑的执行方式,具有高复用性。

在另一实施例中,每个任务参数对应至少一个母类的待处理数据,能力集合层包括:多个父类处理模块,不同的父类处理模块用于处理不同母类的待处理数据。

在该实施例中,能力集合层包括多个并行的父类处理模块,每个父类处理模块之间也是相互独立的,不同的父类处理模块之间相互不影响,父类处理模块之间同样具有低耦合性。不同的父类处理模块对应不同的待处理数据,待处理数据可以是通过任务参数传递的待处理数据。在能力集合层中的不同父类处理模块对应的待处理数据不同,这里将不同父类处理模块对应的不同的待处理数据,表示为不同母类的待处理数据。一个任务参数中可以对应至少一个母类的待处理数据,在该实施例中对应多个母类的待处理数据为例,一个父类处理模块对应的待处理数据对应一个母类的待处理数据,另一个父类处理模块对应另外一个母类的待处理数据。

由于父类处理模块中包括多个可以被并行调用的子类处理模块,所以每个父类处理模块对应的母类的待处理数据中包括多个不同子类的待处理数据,每个子类的待处理数据对应一个子类处理模块。子类处理模块可以根据这个子类处理模块的数据处理方法处理对应的子类的待处理数据。

这些父类处理模块的数量也是不固定的,可以根据实际的业务需求进行数量的调整,可以进行父类处理模块的扩展等。每个父类处理模块中包括能够被并行调用的多个子类处理模块,请参考上述实施例中父类处理模块的说明,这里不再说明。

在另一实施例中,业务线程层包括:线程父类,以及根据线程父类创建的继承线程父类属性、并且能够被并行调用的多个线程子类。

业务线程层同样采用父类和子类的方式,通过抽象的线程父类和具体响应数据处理请求的线程子类,线程子类作为本技术方案最终响应数据处理请求的执行单元。线程父类可以作为多个线程子类的一个抽象的结合。

线程父类中包括多个线程子类,线程子类可以是根据线程父类创建的。线程子类是可以被并行调用的,不同的线程子类之间相互不影响,是相对独立的,具有低耦合性。如图5所示,线程父类t1中包括线程子类1、线程子类2和线程子类3等,子类线程可根据业务需求横向扩展。

由于不同的线程子类之间是相互独立的,并且可以被并行调用,所以多个线程子类可以并行对数据处理请求进行不同的响应,进而提高了对数据处理请求的响应速度,提高了数据处理的效率。

参考图3和图5,为另一实施例提供的一种响应所述数据处理请求的流程示意图。步骤s400,调用业务线程层中与所述线程参数对应的线程,响应所述数据处理请求,包括:

步骤s401,将线程参数传输至与线程参数对应的线程父类。

由于业务线程层中包括线程子类和线程父类,线程子类是在线程父类的基础上对数据处理请求进行不同的响应,所以需要将线程参数传输至线程父类,该线程父类为与线程参数对应的线程父类。

步骤s402,线程父类根据线程子类的数据处理方法,将线程父类接收的线程参数中,与线程子类对应的数据分配给线程子类。

线程父类在接收到线程参数之后,根据各个线程子类对于数据处理请求的不同响应,将与各个线程子类对应的数据分配给各个线程子类,以便线程子类对数据处理请求进行相应的响应。

步骤s403,线程子类根据线程参数响应数据处理请求。

各个线程子类在得到分配给各自的线程参数之后,根据得到的线程参数对数据处理请求进行不同的响应,从而完成对数据处理请求的处理。

在一个实施例中,所述业务线程层,将生成的所述线程参数发送给所述业务线程层的线程父类,所述线程父类根据线程参数的内容,将所述线程参数分发给能够进行不同响应的线程子类,所述线程参数至少包括:响应标识或者进行不同响应的线程子类的身份标识。

业务线程层同样通过线程父类和线程子类这样的父类与子类的设计,不同线程子类在线程父类的基础上对数据处理请求进行不同的响应,因此提供了更多和更丰富的业务逻辑的执行方式,具有高复用性。

在另一实施例中,一个任务参数对应至少一个母类的待处理数据,一个母类的待处理数据包括至少两个不同子类的待处理数据,一个线程参数对应一个子类的待处理数据。业务线程层包括:多个线程父类,不同的所述线程父类用于处理同一个母类的不同子类的待处理数据。

同样以能力集合层中的图像识别处理模块和黑/白名单比对处理模块为例,通过图像识别处理模块得到的线程参数为一个线程参数的母类,通过黑/白名单比对处理模块得到的线程参数为另外一个线程参数的母类。

图像识别处理模块得到的线程参数中包括特征提取线程的身份标识符或者方法名,以及数据转发线程的身份标识符或者方法名,则特征提取线程的身份标识符或者方法名对应的数据为一个子类的待处理数据,数据转发线程的身份标识符或者方法名对应的数据为另一个子类的待处理数据。这两个不同子类的待处理数据属于同一个母类,即为图像识别处理模块得到的线程参数这个母类中的不同子类。

特征提取线程的身份标识符或者方法名,对应特征提取的线程父类,数据转发线程的身份标识符或者方法名,对应数据转发的线程父类。

业务线程层包括多个并行的线程父类,每个线程父类之间也是相互独立的,不同的线程父类之间相互不影响,所以各个线程父类之间同样具有低耦合性。由于子类处理模块对应的是母类的待处理数据中的子类的待处理数据,所以线程父类对应的是母类的不同子类的待处理数据,并且是同一个母类中的不同子类的待处理数据。

再例如,一个父类处理模块1对应的一个母类的待处理数据n,一个子类处理模块对应的该母类的待处理数据n中包括子类的待处理数据n1和子类的待处理数据n2。业务线程层中包括线程父类t1(参考图5)和线程父类t2(图5未示出),则可以是线程父类t1与子类的待处理数据n1对应,线程父类t2与待处理为子类的待处理数据n2对应。

线程父类的数量不是固定的,可以根据实际的业务需求进行调整,可以进行扩展等。

本公开的一种优选的实施例中,数据是安防领域的物联网数据,包括以下至少一项:监控视频、抓拍图片、结构化数据。

参考图4,为另一实施例中一种数据处理装置的结构示意图。该数据处理装置包括:

接收模块,用于通过调用接口,接收数据处理请求。

第一调用模块,用于调用服务层中与所述数据处理请求对应的服务模块,得到所述数据处理请求的任务参数;其中,所述服务层包括:能够提供不同业务服务且被并行调用的多个服务模块。

第二调用模块,用于调用能力集合层中与所述任务参数对应的处理模块,得到响应所述数据处理请求的线程参数;其中,所述能力集合层包括:能够提供不同数据处理方法且被并行调用的多个处理模块。

第三调用模块,用于调用业务线程层中与所述线程参数对应的线程,响应所述数据处理请求;其中,所述业务线层包括:多个能够被并行调用的线程。图4中只是示出了上述几个模块,其余模块未示出。

该数据处理装置还包括:第一能力集合层,第一能力集合层包括:父类处理模块及能够被并行调用的多个子类处理模块。

第二调用模块包括:

第一传输单元,将所述任务参数传输至与所述任务参数对应的所述父类处理模块。

第一分配单元,所述父类处理模块根据子类处理模块的数据处理方法,将所述父类处理模块接收的所述任务参数中,与所述子类处理模块对应的数据分配给所述子类处理模块。

处理单元,所述子类处理模块根据所述任务参数得到响应所述数据处理请求的线程参数。

所述任务参数对应至少一个母类的待处理数据;该数据处理装置还包括:第二能力集合层,第二能力集合层包括:多个所述父类处理模块,不同的所述父类处理模块用于处理不同母类的所述待处理数据。

该数据处理装置还包括:第一业务线程层,第一业务线程层包括:线程父类,以及根据所述线程父类创建的继承所述线程父类属性,并且能够被并行调用的多个线程子类。

第三调用模块包括:

第二传输单元,将所述线程参数传输至与所述线程参数对应的所述线程父类。

第二分配单元,所述线程父类根据线程子类的数据处理方法,将所述线程父类接收的所述线程参数中,与所述线程子类对应的数据分配给所述线程子类。

响应单元,所述线程子类根据所述线程参数响应所述数据处理请求。

一个任务参数对应至少一个母类的待处理数据,一个母类的待处理数据包括至少两个不同子类的待处理数据,一个线程参数对应一个子类的待处理数据。该数据处理装置还包括:第二业务线程层,第二业务线程层包括:多个所述线程父类,不同的所述线程父类用于处理同一个母类的不同子类的待处理数据。

本申请的技术方案还提供了一种电子设备,包括:

处理器;

存储器,其存储有程序指令,当程序指令被处理器执行时,使得电子设备执行上述任一项实施例中的方法。

本申请的技术方案还提供了一种存储介质,其存储有程序,当程序由处理器运行时,执行上述任一项实施例中的方法。该存储介质包括非瞬间存储介质。

参考图5,在另一实施例中,提供了另一种数据处理方法。该方法包括:

通过调用接口,接收数据处理请求。服务层中包括能够提供不同业务服务的并且能够被并行调用的多个服务模块,服务模块可以根据实际的业务需要进行扩展。在接收数据处理请求之后,调用服务层中与该数据处理请求对应的服务模块,通过调用的服务模块提供的业务服务,对数据处理请求进行处理,得到处理数据,包括任务参数,然后进行参数传递,将任务参数传递至能力集合层中。

能力集合层中包括多个可以被并行调用的父类处理模块,服务模块将任务参数传输至对应的父类处理模块,多个父类处理模块相互独立,并不相互影响,不同的父类处理模块对应不同的母类待处理数据。图5中示出了一个父类处理模块1。

每个父类处理模块中包括能够提供不同数据处理方法且被并行调用的多个子类处理模块。不同子类处理模块之间相互独立,互不影响,图5中示出了子类处理模块1和子类处理模块2,两个子类处理模块可以提供不同的处理方法,可以被并行调用处理父类处理模块1中不同的子类待处理数据,每个子类处理模块可以得到对应的线程参数,将线程参数传输至业务线程层。

业务线程层中包括多个可以相互独立互不影响的线程父类,子类处理模块将线程参数传输至对应的线程父类。每个线程父类中包括对个能够被并行调用的线程子类,不同的线程子类相互独立,图中示出了线程父类1,线程父类1中包括线程子类1、线程子类2和线程子类3。三个线程子类可以被并行调用,对数据处理请求进行不同的响应。

在线程子类对数据处理请求进行不同的响应后,可以对子类处理模块对应的线程子类进行同步,例如线程同步工具countdownlatch。对线程子类进行同步之后,可以使得同一个子类处理模块对应的线程子类都完成对数据处理请求的响应之后,这个子类处理模块对应的线程子类才能在继续执行其他任务。可以通过计数器进行实现,统计同一个子类处理模块对应的已经开始响应数据处理请求的线程子类的总量,以及结束响应数据请求的线程子类的数量。每当一个线程子类完成数据请求的响应之后,已经开始响应数据处理请求的线程子类的总量减一,直至已经开始响应数据处理请求的线程子类的总量为零时,表示子类处理模块对应的线程子类完成对数据处理请求的响应。这样可以保证同一子类处理模块需要处理的数据的一致性。通过实现数据一致性有利于解决数据安全的问题,通过线程同步工具countdownlatch,使得所有的线程子类都完成业务操作后才会处理下一条数据,从而防止数据串联导致数据不准确。除了线程计数器,还会在参数传递中用到线程锁的机制,给同步数据块加锁之后可以防止多个线程同时修改该数据造成线程死锁和等待的问题。

通过上述多个实施例可以实现对于处理器的更高效的利用,提高了数据处理的效率,同时降低了各个组成部分的耦合度,减少了对数据处理框架的过度依赖。

参考图6,为另一个实施例提供的一种具体应用场景的数据处理方法的示意图。

以图像数据处理为例,对图像数据进行处理。通过接口接收图像数据处理请求。服务层中还包括服务模块,该服务模块在本实施例中可以是图像数据处理的服务模块,用于提供图像数据处理的业务服务。

能力集合层中包括至少一个父类处理模块。不同的父类处理模块,用于提供执行不同的图像处理任务。能力集合层从服务层接收的任务参数,可为图像处理任务执行过程的任意参数。

图6所示的能力集合层包括:两个父类处理模块,这两个父类处理模块分别可以是目标身份识别能力集和预设图像库比对能力集。此时,所述图像处理任务至少包括:目标身份识别任务和预设图像库的比对任务。所述目标身份识别任务,又可以进一步拆分成:人脸识别子任务和/或人体识别子任务等。所述预设图像库比对任务包括:将接收到的图像与第一图像库比对、和/或第二图像库比对的不同子任务,第一图像库不同于第二图像库。

目标身份识别能力集中包括人脸识别的子类处理模块和/或人体识别的子类处理模块。预设图像库比对能力集中包括第一图像库比对的子类处理模块和/或第二图像库比对的子类处理模块。

业务线程层中包括至少一个线程父类。不同的线程父类用于提供图像数据处理请求的不同响应。图6所示的业务线程层包括:两个线程父类,这两个线程父类,分别是特征提取的线程父类和数据转发的线程父类。此时,所述图像数据处理请求至少包括:特征提取的响应和数据转发的响应。所述特征提取的响应又可以进一步拆分为:眼部特征提取的子响应、鼻子特征提取的子响应和嘴部特征提取的子响应。所述数据转发的响应又可以进一步拆分为:数据转发a系统的子响应、数据转发b系统的子响应和数据转发c系统的子响应。

特征提取的线程父类中又包括眼部特征提取的线程子类、鼻子特征提取的线程子类和嘴部特征提取的线程子类。数据转发的线程父类中又包括数据转发a系统的线程子类、数据转发b系统的线程子类和数据转发c系统的线程子类。

通过该图像数据处理的服务模块,可以得到图像数据处理的任务参数,任务参数中包括目标身份识别能力集的id或者方法名,以及预设图像库比对能力集的id或者方法名。目标身份识别能力集的id或者方法名中又包括人脸识别的子类处理模块的id或者方法名,以及人体识别的子类处理模块的id或者方法名。预设图像库比对能力集的id或者方法名中又包括第一图像库比对的子类处理模块的id或者方法名,以及第二图像库比对的子类处理模块的id或者方法名。

根据目标身份识别能力集的id或者方法名,确定目标身份识别能力集,将目标身份识别能力集的id或者方法名传输至目标身份识别能力集。目标身份识别能力集根据人脸识别的子类处理模块的id或者方法名,将与人脸识别的子类处理模块的数据分配给人脸识别的子类处理模块。目标身份识别能力集根据人体识别的子类处理模块的id或者方法名,将与人体识别的子类处理模块的数据分配给人体识别的子类处理模块。

根据预设图像库比对识别能力集模块的id或者方法名,确定预设图像库比对识别能力集,将预设图像库比对识别能力集模块的id或者方法名传输至预设图像库比对识别能力集。预设图像库比对识别能力集根据第一图像库比对的子类处理模块的id或者方法名,将与第一图像库比对的子类处理模块对应的数据分配给第一图像库比对的子类处理模块。预设图像库比对识别能力集根据第二图像库比对的子类处理模块的id或者方法名,将与第二图像库比对的子类处理模块的数据分配给第二图像库比对的子类处理模块。

人脸识别的子类处理模块可以得到人脸识别的线程参数,人体识别的子类处理模块可以得到人体识别的线程参数,第一图像库比对的子类处理模块可以得到第一图像库比对的线程参数,第二图像库比对的子类处理模块可以得到第二图像库比对的线程参数。

继续以人脸识别的子类处理模块为例,人脸识别的线程参数中包括特征提取线程父类的id或者方法名,以及数据转发线程父类的id或者方法名。特征提取线程父类的id或者方法名中又包括:眼部特征提取的线程子类的id或者方法名、鼻子特征提取的线程子类的id或者方法名,以及嘴部特征提取的线程子类的id或者方法名。数据转发线程父类的id或者方法名中又包括:数据转发a系统的线程子类的id或者方法名、数据转发b系统的线程子类的id或者方法名和数据转发c系统的线程子类的id或者方法名。

根据特征提取线程父类的id或者方法名,确定特征提取线程父类,将特征提取线程父类的id或者方法名传输至特征提取线程父类。特征提取线程父类根据眼部特征提取的线程子类的id或者方法名,将与眼部特征提取的线程子类对应的数据传输至眼部特征提取的线程子类。根据鼻子特征提取的线程子类的id或者方法名,将与鼻子特征提取的线程子类对应的数据传输至鼻子特征提取的线程子类。根据嘴部特征提取的线程子类的id或者方法名,将与嘴部特征提取的线程子类对应的数据传输至嘴部特征提取的线程子类。

线程子类作为响应以及执行请求的响应以及执行单元,通过眼部特征提取的线程子类、鼻子特征提取的线程子类和嘴部特征提取的线程子类对图像数据处理请求进行不同的响应。

根据数据转发线程父类的id或者方法名,确定数据转发线程父类,将数据转发线程父类的id或者方法名传输至数据转发线程父类。数据转发线程父类根据数据转发a系统的线程子类的id或者方法名,将与数据转发a系统的线程子类对应的数据传输至数据转发a系统的线程子类。根据数据转发b系统的线程子类的id或者方法名,将与数据转发b系统的线程子类对应的数据传输至数据转发b系统的线程子类。根据数据转发c系统的线程子类的id或者方法名,将与数据转发c系统的线程子类对应的数据传输至数据转发c系统的线程子类。

线程子类作为响应以及执行请求的响应以及执行单元,通过数据转发a系统的线程子类、数据转发b系统的线程子类和数据转发c系统的线程子类对图像数据处理请求进行不同的响应。

线程同步工具countdownlatch用于将线程子类进行同步,可以是线程计数器等,保证了同一子类处理模块需要处理的数据的一致性。参考上述实施例中线程同步工具countdownlatch的说明。

在本申请所提供的几个实施例中,应该理解到,所揭露的设备和方法,可以通过其它的方式实现。以上所描述的设备实施例仅仅是示意性的,例如,所述单元的划分,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式,如:多个单元或组件可以结合,或可以集成到另一个系统,或一些特征可以忽略,或不执行。另外,所显示或讨论的各组成部分相互之间的耦合、或直接耦合、或通信连接可以是通过一些接口,设备或单元的间接耦合或通信连接,可以是电性的、机械的或其它形式的。

上述作为分离部件说明的单元可以是、或也可以不是物理上分开的,作为单元显示的部件可以是、或也可以不是物理单元,即可以位于一个地方,也可以分布到多个网络单元上;可以根据实际的需要选择其中的部分或全部单元来实现本实施例方案的目的。

另外,在本发明各实施例中的各功能单元可以全部集成在一个处理模块中,也可以是各单元分别单独作为一个单元,也可以两个或两个以上单元集成在一个单元中;上述集成的单元既可以采用硬件的形式实现,也可以采用硬件加软件功能单元的形式实现。

在一些情况下,上述任一两个技术特征不冲突的情况下,可以组合成新的方法技术方案。

本领域普通技术人员可以理解:实现上述方法实施例的全部或部分步骤可以通过程序指令相关的硬件来完成,前述的程序可以存储于一计算机可读取存储介质中,该程序在执行时,执行包括上述方法实施例的步骤;而前述的存储介质包括:移动存储设备、只读存储器(read-onlymemory,rom)、随机存取存储器(randomaccessmemory,ram)、磁碟或者光盘等各种可以存储程序代码的介质。

以上所述,仅为本发明的具体实施方式,但本发明的保护范围并不局限于此,任何熟悉本技术领域的技术人员在本发明揭露的技术范围内,可轻易想到变化或替换,都应涵盖在本发明的保护范围之内。因此,本发明的保护范围应以所述权利要求的保护范围为准。

当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1