数据处理方法、装置、电子设备和计算机可读存储介质与流程

文档序号:17772892发布日期:2019-05-28 19:39阅读:189来源:国知局
数据处理方法、装置、电子设备和计算机可读存储介质与流程
本公开涉及数据处理
技术领域
,尤其涉及数据处理方法、数据处理装置、电子设备和计算机可读存储介质。
背景技术
:在分布式系统中,对海量的实时数据进行处理,为了防止数据丢失,于相同的数据往往会被生成多次。而为了相同的数据只被处理一次,需要对已处理的数据进行标记。目前分布式系统中对数据的处理方式如图1所示,存储介质存储着海量的实时数据,数据会被均匀分配到每个线程上,多个线程共同维护一个滤波器,滤波器可以标记被处理的数据。而为了保证相同的数据只被处理一次,对于标记的数据,处理该数据的线程需要与其它所有线程通信,例如线程a处理了一条数据x,那么需要与线程b和线程c通信,告知线程b和线程c,被标记的数据x是被处理过的,使得线程b和线程c在接收到数据x时不再处理该数据。这种方式虽然可以保证相同的数据只被处理一次,但是需要线程之间大量的通信,尤其是分布式系统中线程较多时,通信负荷非常大。技术实现要素:本公开提供数据处理方法、数据处理装置、电子设备和计算机可读存储介质。根据本公开的第一方面,提出一种数据处理方法,包括:将数据以及数据和线程的关联信息分配至m个线程;所述m个线程中的第i线程根据所述关联信息确定用于处理所述数据的第j线程;所述第j线程处理所述数据,其中,若i≠j,所述第i线程将所述数据传输至所述第j线程,以使所述第j线程处理所述数据;若i=j,所述第i线程处理所述数据;i≤m,j≤m。可选地,在将数据以及数据和线程的关联信息分配至m个线程之前,所述方法还包括:根据数据的属性信息生成所述关联信息,其中,具有相同属性信息的数据关联相同的线程。可选地,所述根据数据的属性信息生成数据和线程的关联信息包括:确定根据数据的属性信息将所述数据分配到所述m个线程的目标分配方式,其中,基于所述目标分配方式所述m个线程中的每个线程处理数据的数据量的方差最小;根据所述目标分配方式生成数据和线程的关联信息。可选地,所述确定根据数据的属性信息将所述数据分配到所述m个线程的目标分配方式包括:若存在一种将所述数据分配到所述m个线程的分配方式,将所述分配方式确定为目标分配方式;若存在多种将所述数据分配到所述m个线程的分配方式,根据公式:对每种分配方式进行计算,确定多种分配方式中计算结果最小的分配方式为目标分配方式,其中,xi是需要分配到m个线程中第i个线程的数据量,是所有数据的数据量的均值。可选地,在所述第j线程处理所述数据之前,所述方法还包括:所述第j线程滤除所述数据中重复的数据。根据本公开的第二方面,提出一种数据处理装置,包括:分配模块,用于将数据以及数据和线程的关联信息分配至m个线程;确定模块,用于通过所述m个线程中的第i线程根据所述关联信息确定用于处理所述数据的第j线程;处理模块,用于通过所述第j线程处理所述数据,其中,若i≠j,所述第i线程将所述数据传输至所述第j线程,以使所述第j线程处理所述数据;若i=j,所述第i线程处理所述数据;i≤m,j≤m。可选地,所述装置还包括:生成模块,用于根据数据的属性信息生成所述关联信息,其中,具有相同属性信息的数据关联相同的线程。可选地,所述生成模块包括:方式确定子模块,用于确定根据数据的属性信息将所述数据分配到所述m个线程的目标分配方式,其中,基于所述目标分配方式所述m个线程中的每个线程处理数据的数据量的方差最小;信息生成子模块,用于根据所述目标分配方式生成数据和线程的关联信息。可选地,所述方式确定子模块用于,在存在一种将所述数据分配到所述m个线程的分配方式的情况下,将所述分配方式确定为目标分配方式;在存在多种将所述数据分配到所述m个线程的分配方式的情况下,根据公式:对每种分配方式进行计算,确定多种分配方式中计算结果最小的分配方式为目标分配方式,其中,xi是需要分配到m个线程中第i个线程的数据量,是所有数据的数据量的均值。可选地,所述装置还包括:过滤模块,用于通过所述第j线程滤除所述数据中重复的数据。根据本公开的第三方面,提出一种电子设备,包括:处理器;用于存储处理器可执行指令的存储器;其中,所述处理器被配置为执行上述任一实施例所述方法中的步骤。根据本公开的第四方面,提出一种计算机可读存储介质,其上存储有计算机程序,该程序被处理器执行时实现上述任一实施例所述方法中的步骤。基于本公开的实施例,在分配数据时,可以一起分配数据和线程的关联信息,由于用于处理数据的线程可以根据关联信息确定,数据只会由关联信息中与数据关联的线程来处理,所以不会出现多个线程重复处理数据的情况,因此相对于现有技术,处理数据的线程无需与所有线程通信来告知其他线程数据是否被处理过,进而可以减少线程之间的通信,降低分布式系统中的通信负荷。应当理解的是,以上的一般描述和后文的细节描述仅是示例性和解释性的,并不能限制本公开。附图说明此处的附图被并入说明书中并构成本说明书的一部分,示出了符合本公开的实施例,并与说明书一起用于解释本公开的原理。图1是相关技术中对数据进行处理的示意图。图2是根据本公开的实施例示出的一种数据处理方法的示意流程图。图3是根据本公开的实施例示出的一对数据进行处理的示意图。图4是根据本公开的实施例示出的另一种数据处理方法的示意流程图。图5是根据本公开的实施例示出的又一种数据处理方法的示意流程图。图6是根据本公开的实施例示出的又一种数据处理方法的示意流程图。图7是根据本公开的实施例示出的数据处理装置所在终端或服务器的一种硬件结构图。图8是根据本公开的实施例示出的一种数据处理装置的示意框图。图9是根据本公开的实施例示出的另一种数据处理装置的示意框图。图10是根据本公开的实施例示出的一种生成模块的示意流程图。图11是根据本公开的实施例示出的又一种数据处理装置的示意框图。具体实施方式这里将详细地对示例性实施例进行说明,其示例表示在附图中。下面的描述涉及附图时,除非另有表示,不同附图中的相同数字表示相同或相似的要素。以下示例性实施例中所描述的实施方式并不代表与本公开相一致的所有实施方式。相反,它们仅是与如所附权利要求书中所详述的、本公开的一些方面相一致的装置和方法的例子。图2是根据本公开的实施例示出的一种数据处理方法的示意流程图。本实施例所示的方法可以应用于分布式系统,所述分布式系统可以包括多个电子设备,所述电子设备可以是手机、平板电脑、可穿戴设备等终端,也可以是服务器,每个电子设备上至少运行一个线程,多个电子设备可以运行n个线程,m个线程可以是这n个线程中的部分或全部线程,也即1≤m≤n。如图2所示,本实施例中的数据处理方法包括:步骤s1,将数据以及数据和线程的关联信息分配至m个线程;步骤s2,所述m个线程中的第i线程根据所述关联信息确定用于处理所述数据的第j线程;步骤s3,所述第j线程处理所述数据,其中,若i≠j,所述第i线程将所述数据传输至所述第j线程,以使所述第j线程处理所述数据;若i=j,所述第i线程处理所述数据;i≤m,j≤m。在一个实施例中,所述数据可以是实时数据,用于存储所述数据的存储介质可以是临时存储介质,临时存储介质例如可以是kafka(一种高吞吐量的分布式发布订阅消息系统)。根据本公开的实施例,在分配数据时,可以一起分配数据和线程的关联信息,例如可以将数据分配至m个线程,那么可以将数据和线程的关联信息也分配给所述m个线程。接收到数据和关联关系的线程,例如m个线程中的第i个线程,可以根据关联关系确定用于处理所述线程的第j线程,若i≠j,也即接收到所述数据的线程并不是用于处理所述数据的线程,那么第i线程可以将数据传输至所述第j线程,进而由第j线程处理;若i=j,也即接收到所述数据的线程就是用于处理所述数据的第j线程,那么第i线程处理所述数据。由于用于处理数据的线程可以根据关联信息确定,数据只会由关联信息中与数据关联的线程来处理,所以不会出现多个线程重复处理数据的情况,因此相对于现有技术,处理数据的线程无需与所有线程通信来告知其他线程数据是否被处理过,进而可以减少线程之间的通信,降低分布式系统中的通信负荷。如图1所示,在现有技术中,线程a接收到数据x后,可以处理数据x,但是处理数据x后,需要与线程b和线程c通信,告知线程b和线程c数据x已被处理过。图3是根据本公开的实施例示出的一对数据进行处理的示意图。如图3所示,根据本公开的实施例,例如线程a接收到数据x以及数据和线程的关联信息,若根据关联关系确定用于处理数据x的线程是线程a,那么线程a处理数据x,无需与线程b和线程c通信;若根据关联关系确定用于处理数据x的线程是线程b,那么可以将数据x传输至线程b,由线程b处理数据x,而无需与线程c通信。可见,相对于现有技术,本公开的实施例至少可以减少与线程c的通信过程,而且分布式系统中线程越多,减少的线程之间的通信过程就越多,越能有效地降低分布式系统中的通信负荷。图4是根据本公开的实施例示出的另一种数据处理方法的示意流程图。如图4所示,在将数据以及数据和线程的关联信息分配至m个线程之前,所述方法还包括:步骤s4,根据数据的属性信息生成所述关联信息,其中,具有相同属性信息的数据关联相同的线程。需要说明的是,数据的属性信息根据数据的类型有所不同,例如数据为外卖业务中的金额数据,那么属性信息可以包括生成数据的门店,生成数据的时间,数据的额度等;例如数据为网约车业务中的金额数据,那么属性信息可以包括生成数据的司机,数据的倍率,数据的额度等。在一个实施例中,可以根据数据的属性信息生成关联信息,具体可以设置具有相同属性信息的数据关联相同的线程。据此,可以使得线程处理的数据包含相同的属性信息,从而数据和数据之间的差异较小,有利于降低线程处理数据的负荷。例如数据的属性信息包括生成数据的门店,生成数据的时间,数据的额度,那么将属于相同门店的数据关联相同的线程,从而属于相同门店的数据可以由同一个线程处理,那么该线程所处理的部分或全部数据中门店这一项属性信息是相同的,进而线程在处理属于相同门店的多份数据时,可以将多份数据划分为属于同一个门店的集合中进行处理,所以可以主要对生成数据的时间和数据的额度这两个属性信息进行处理,进而降低线程处理数据的负荷。图5是根据本公开的实施例示出的又一种数据处理方法的示意流程图。如图5所示,所述根据数据的属性信息生成数据和线程的关联信息包括:步骤41,确定根据数据的属性信息将所述数据分配到所述m个线程的目标分配方式,其中,基于所述目标分配方式所述m个线程中的每个线程处理数据的数据量的方差最小;步骤42,根据所述目标分配方式生成数据和线程的关联信息。在一个实施例中,可以确定根据数据的属性信息将数据分配到m个线程的目标分配方式,基于目标分配方式m个线程中的每个线程处理的数据量的方差最小。例如业务口径数据量如下表1所示(其中的数据量可以是一天的数据量):数据id门店id数据量x1甲1kbx2甲2kbx3乙4kbx4乙6kbx5丙5kbx6丙8kb表1如表1所示,数据x1的数据量是1kb,数据x2的数据量是2kb,数据x3的数据量是4kb,数据x4的数据量是6kb,数据x5的数据量是5kb,数据x6的数据量是8kb。其中数据x1和x2由门店甲生成,数据x3和x4由门店乙生成,数据x5和数据x6由数据门店丙生成。若m=2,需要将上述数据x1至x6分配到线程a和线程b,那么根据数据的属性信息将数据分配到所述m个线程中的每个线程。其中,由于数据x1和x2具有相同的属性信息,也即属于相同的门店甲,因此可以将数据x1和x2分配到相同的线程;由于数据x1和x2具有相同的属性信息,也即属于相同的门店已,因此可以将数据x3和x4分配到相同的线程;由于数据x1和x2具有相同的属性信息,也即属于相同的门店丙,因此可以将数据x5和数据x6分配到相同的线程。基于目标分配方式,进而还需要m个线程中的每个线程处理的数据量的方差最小,那么可以将数据x1、x2、x3、x4分配到一个线程,将数据x5和x6分配到另一个线程,从而使得线程a和线程b处理的数据量相同,都是13kb,确保了2个线程中每个线程处理数据的数据量的方差最小。基于本实施例,通过使得m个线程中的每个线程处理数据的数据量的方差最小的目标分配方式分配数据,可以均衡每个线程处理数据的数据量,避免个别线程处理数据的数据量过大,或个别线程处理数据的数据量过小的情况,使得每个线程处理数据的数据量相差较小,从而实现每个线程处理数据的负荷均衡,以便充分利用每个线程的处理能力,并不会引起个别线程过高的负荷。可选地,所述确定根据数据的属性信息将所述数据分配到所述m个线程的目标分配方式包括:若存在一种将所述数据分配到所述m个线程的分配方式,将所述分配方式确定为目标分配方式;若存在多种将所述数据分配到所述m个线程的分配方式,根据公式:对每种分配方式进行计算,确定多种分配方式中计算结果最小的分配方式为目标分配方式,其中,xi是需要分配到m个线程中第i个线程的数据量,是所有数据的数据量的均值。在一个实施例中,若只存在一种将数据分配到m个线程的分配方式,只能按照该分配方式将数据分配至m个线程,所以无需针对这种分配方式计算m个线程中的每个线程处理的数据量的方差,直接将该分配方式确定为目标分配方式即可。在一个实施例中,若存在多种将数据分配到m个线程的分配方式,那么按照不同分配方式将数据分配至m个线程,m个线程中的每个线程处理的数据量的方差可能大小不同,因此可以根据上式对每种分配方式分别进行计算,确定所有分配方式中上式计算结果最小的分配方式,则基于所确定的方式将数据分配给m个线程,即可保证m个线程中的每个线程处理的数据量的方差最小,进而实现均衡每个线程处理数据的数据量。图6是根据本公开的实施例示出的又一种数据处理方法的示意流程图。如图6所示,在所述第j线程处理所述数据之前,所述方法还包括:步骤s5,所述第j线程滤除所述数据中重复的数据。在一个实施例中,如图3所示,每个线程可以各自维护滤波器,例如线程a维护滤波器a,线程b维护滤波器b,线程c维护滤波器c,针对每个滤波器可以设置滤波器具备滤除线程所需处理的数据中重复的数据的功能,例如滤波器为bloomfilter(布隆滤波器)。以第j线程为线程a为例,那么滤波器a可以滤除需要线程a处理的数据中重复的数据。根据本实施例,可以滤除数据中重复的数据,避免线程重复处理数据,从而降低线程处理数据的负荷,进而降低分布式系统整体的负荷。需要说明的是,在本公开的实施例中,还可以进行动态扩容,在扩容过程中,由于用于处理每个数据的线程是确定的,扩容的时候,将原来线程对应的滤波器迁移到新的线程对应的滤波器即可,进而新的线程可以对原线程为处理的数据继续进行处理。与前述数据处理方法的实施例相对应,本公开还提供了数据处理装置的实施例。本公开的数据处理装置的实施例可以应用在终端或服务器上。装置实施例可以通过软件实现,也可以通过硬件或者软硬件结合的方式实现。以软件实现为例,作为一个逻辑意义上的装置,是通过其所在终端或服务器的处理器将非易失性存储器中对应的计算机程序指令读取到内存中运行形成的。从硬件层面而言,如图7所示,为根据本公开的实施例示出的数据处理装置所在终端或服务器的一种硬件结构图,除了图7所示的处理器、内存、网络接口、以及非易失性存储器之外,实施例中装置所在的终端或服务器通常根据该终端或服务器的实际功能,还可以包括其他硬件,对此不再赘述。图8是根据本公开的实施例示出的一种数据处理装置的示意框图。本实施例所示的装置可以应用于分布式系统,所述分布式系统可以包括多个电子设备,所述电子设备可以是手机、平板电脑、可穿戴设备等终端,也可以是服务器,每个电子设备上至少运行一个线程,多个电子设备可以运行n个线程,m个线程可以是这n个线程中的部分或全部线程,也即1≤m≤n。如图8所示,本实施例中的数据处理装置包括:分配模块1,用于将数据以及数据和线程的关联信息分配至m个线程;确定模块2,用于通过所述m个线程中的第i线程根据所述关联信息确定用于处理所述数据的第j线程;处理模块3,用于通过所述第j线程处理所述数据,其中,若i≠j,所述第i线程将所述数据传输至所述第j线程,以使所述第j线程处理所述数据;若i=j,所述第i线程处理所述数据;i≤m,j≤m。在一个实施例中,在分配数据时,可以一起分配数据和线程的关联信息,由于用于处理数据的线程可以根据关联信息确定,数据只会由关联信息中与数据关联的线程来处理,所以不会出现多个线程重复处理数据的情况,因此相对于现有技术,处理数据的线程无需与所有线程通信来告知其他线程数据是否被处理过,进而可以减少线程之间的通信,降低分布式系统中的通信负荷。图9是根据本公开的实施例示出的另一种数据处理装置的示意框图。如图9所示,所述装置还包括:生成模块4,用于根据数据的属性信息生成所述关联信息,其中,具有相同属性信息的数据关联相同的线程。在一个实施例中,可以根据数据的属性信息生成关联信息,具体可以设置具有相同属性信息的数据关联相同的线程。据此,可以使得线程处理的数据包含相同的属性信息,从而数据和数据之间的差异较小,有利于降低线程处理数据的负荷。图10是根据本公开的实施例示出的一种生成模块的示意流程图。如图10所示,所述生成模块4包括:方式确定子模块41,用于确定根据数据的属性信息将所述数据分配到所述m个线程的目标分配方式,其中,基于所述目标分配方式所述m个线程中的每个线程处理数据的数据量的方差最小;信息生成子模块42,用于根据所述目标分配方式生成数据和线程的关联信息。在一个实施例中,通过使得m个线程中的每个线程处理数据的数据量的方差最小的分配方式分配数据,可以均衡每个线程处理数据的数据量,避免个别线程处理数据的数据量过大,或个别线程处理数据的数据量过小的情况,使得每个线程处理数据的数据量相差较小,从而实现每个线程处理数据的负荷均衡,以便充分利用每个线程的处理能力,并不会引起个别线程过高的负荷。可选地,所述方式确定子模块用于,在存在一种将所述数据分配到所述m个线程的分配方式的情况下,将所述分配方式确定为目标分配方式;在存在多种将所述数据分配到所述m个线程的分配方式的情况下,根据公式:对每种分配方式进行计算,确定多种分配方式中计算结果最小的分配方式为目标分配方式,其中,xi是需要分配到m个线程中第i个线程的数据量,是所有数据的数据量的均值。图11是根据本公开的实施例示出的又一种数据处理装置的示意框图。如图11所示,所述装置还包括:过滤模块5,用于通过所述第j线程滤除所述数据中重复的数据。关于上述实施例中的装置,其中各个模块执行操作的具体方式已经在有关该方法的实施例中进行了详细描述,此处将不做详细阐述说明。在一个实施例中,可以滤除数据中重复的数据,避免线程重复处理数据,从而降低线程处理数据的负荷,进而降低分布式系统整体的负荷。根据本公开的第三方面,提出一种电子设备,包括:处理器;用于存储处理器可执行指令的存储器;其中,所述处理器被配置为执行上述任一实施例所述方法中的步骤。根据本公开的第四方面,提出一种计算机可读存储介质,其上存储有计算机程序,该程序被处理器执行时实现上述任一实施例所述方法中的步骤。关于上述实施例中的装置,其中各个模块执行操作的具体方式已经在相关方法的实施例中进行了详细描述,此处将不做详细阐述说明。对于装置实施例而言,由于其基本对应于方法实施例,所以相关之处参见方法实施例的部分说明即可。以上所描述的装置实施例仅仅是示意性的,其中所述作为分离部件说明的模块可以是或者也可以不是物理上分开的,作为模块显示的部件可以是或者也可以不是物理模块,即可以位于一个地方,或者也可以分布到多个网络模块上。可以根据实际的需要选择其中的部分或者全部模块来实现本实施例方案的目的。本领域普通技术人员在不付出创造性劳动的情况下,即可以理解并实施。本领域技术人员在考虑说明书及实践这里公开的公开后,将容易想到本公开的其它实施方案。本公开旨在涵盖本公开的任何变型、用途或者适应性变化,这些变型、用途或者适应性变化遵循本公开的一般性原理并包括本公开未公开的本
技术领域
中的公知常识或惯用技术手段。说明书和实施例仅被视为示例性的,本公开的真正范围和精神由下面的权利要求指出。应当理解的是,本公开并不局限于上面已经描述并在附图中示出的精确结构,并且可以在不脱离其范围进行各种修改和改变。本公开的范围仅由所附的权利要求来限制。当前第1页12
当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1