本发明涉及数据处理技术领域,尤其涉及一种数据流通、分析方法及装置、存储介质、终端。
背景技术:
在分布式高并发数据交易系统中,数据配送系统与数据分析系统之间交互的管理是配送环节中的重要一环。数据配送系统本身是复杂的系统,还需要在数据配送的过程中与数据分析系统进行交互,以进行数据的去重以及去除无效性数据等分析操作,因此两者之间的消息通讯至关重要。
但是,在庞大的系统中实现高效消息通讯管理机制,存在以下问题:首先,数据文件中的数据量大,单个文件的大小能达到几g(千兆字节),数据文件中还包含很多的返回结果和数值。其次,数据文件中包含的标签复杂多样,内部的数据也非常复杂,需要将这些信息逐条发送给分析系统做分析是非常麻烦和耗时的事情。
技术实现要素:
本发明解决的技术问题是如何提升数据流通的效率。
为解决上述技术问题,本发明实施例提供一种数据流通方法,数据流通方法包括:接收来自数据供方的至少一个源文件,每一源文件包括文件标识以及文件内容,所述文件内容包括多条需方请求值以及供方返回值;至少根据每一源文件的文件标识、文件内容与多个预设标签字段的匹配关系重组形成多条消息,每条消息包括所述多个预设标签字段,所述多个预设标签字段具备字段值,所述多个预设标签字段包括数据字段,所述数据字段的字段值为单条需方请求值以及供方返回值;将所述多条消息按照形成时间依次传入至消息队列,并传输至数据分析系统,以供所述数据分析系统对所述多条消息进行数据分析。
可选的,所述至少根据每一源文件的文件标识、文件内容与多个预设标签字段的匹配关系重组形成多条消息包括:遍历所述至少一个源文件,迭代地至少根据所述匹配关系从所述文件标识以及所述文件内容中抽取所述多个预设标签字段的字段值,并将抽取到的字段值按照预设顺序进行排列,以形成单条消息,直至遍历完成所述至少一个源文件。
可选的,所述文件标识包括批次号;所述多个预设标签字段包括批次号字段和传输状态字段,所述至少根据每一源文件的文件标识、文件内容与多个预设标签字段的匹配关系重组形成多条消息包括:确定所述文件标识中的批次号为当前消息的批次号字段的字段值;判断所述当前消息的批次号字段的字段值与上一消息的批次号字段的字段值是否相同;如果所述当前消息的批次号字段的字段值与上一消息的批次号字段的字段值不同,则确定所述传输状态字段的字段值为开始传输。
可选的,所述文件标识还包括同一批次的文件数量,所述方法还包括:根据所述同一批次的文件数量以及每一源文件中的数据量统计同一批次的总数据量,并统计同一批次的当前消息总量;如果所述当前消息的批次号字段的字段值与上一消息的批次号字段的字段值相同,并且所述当前消息总量未达到所述同一批次的总数据量,则确定所述传输状态字段的字段值为传输中;或者,如果述当前消息的批次号字段的字段值与上一消息的批次号字段的字段值相同,并且所述当前消息总量达到所述同一批次的总数据量,则确定所述传输状态字段的字段值为传输结束。
可选的,所述多个预设标签字段包括自增序号字段;所述至少根据每一源文件的文件标识、文件内容与多个预设标签字段的匹配关系重组形成多条消息包括:如果当前消息的批次号字段的字段值与上一消息的批次号字段的字段值不同,则确定所述当前消息的自增序号字段的字段值为初始值;或者,如果所述当前消息的批次号字段的字段值与上一消息的批次号字段的字段值相同,则确定所述当前消息的自增序号字段的字段值为上一消息的自增序号字段的字段值加一。
可选的,所述多个预设标签字段还包括时间字段、数据查询状态字段、数据需方标识字段、数据供方标识字段和配送任务标识字段。
可选的,基于所述数据流通方法的数据分析方法包括:从所述消息队列中按照多条消息的形成时间接收所述多条消息;对所述多条消息进行数据分析。
可选的,所述多个预设标签字段包括传输状态字段,所述传输状态字段的字段值选自开始传输、传输中和传输结束,所述对所述多条消息进行数据分析包括:确定传输状态字段的字段值为开始传输的初始消息;在消息的传输状态字段的字段值为传输结束时,对从接收所述初始消息的时刻开始接收到的所有消息进行数据分析。
为解决上述技术问题,本发明实施例还公开了一种数据流通装置,数据流通装置包括:源文件接收模块,适于接收来自数据供方的至少一个源文件,每一源文件包括文件标识以及文件内容,所述文件内容包括多条需方请求值以及供方返回值;消息重组模块,适于至少根据每一源文件的文件标识、文件内容与多个预设标签字段的匹配关系重组形成多条消息,每条消息包括所述多个预设标签字段,所述多个预设标签字段具备字段值,所述多个预设标签字段包括数据字段,所述数据字段的字段值为单条需方请求值以及供方返回值;传输模块,适于将所述多条消息按照形成时间依次传入至消息队列,并传输至数据分析系统,以供所述数据分析系统对所述多条消息进行数据分析。
可选的,基于所述数据流通方法的数据分析装置包括:消息接收模块,适于从所述消息队列中按照多条消息的形成时间接收所述多条消息;分析模块,适于对所述多条消息进行数据分析。
本发明实施例还公开了一种存储介质,其上存储有计算机指令,所述计算机指令运行时执行所述数据流通方法的步骤,或者所述数据分析方法的步骤。
本发明实施例还公开了一种终端,包括存储器和处理器,所述存储器上存储有可在所述处理器上运行的计算机指令,所述处理器运行所述计算机指令时执行所述数据流通方法的步骤,或者所述数据分析方法的步骤。
与现有技术相比,本发明实施例的技术方案具有以下有益效果:
本发明技术方案中,在接收到来自供方的源文件后,通过对源文件的相关数据按照预设标签字段进行重组,可以获得标准化以及统一化的多条消息,能够提升数据分析系统从各个消息中提取所需数据的便捷性;此外,还可以通过消息队列来传输所述多条消息,可以均衡配送过程中的资源占用情况,保证消息传输的有序性,同时提升消息传输的效率。
附图说明
图1是本发明实施例一种数据流通方法的流程图;
图2是图1所示步骤s102的一种具体实施方式的流程图;
图3是本发明实施例一种数据分析方法的流程图;
图4是本发明实施例一种数据流通装置的结构示意图;
图5是本发明实施例一种数据分析装置的结构示意图。
具体实施方式
如背景技术中所述,在庞大的系统中实现高效消息通讯管理机制,存在以下问题:首先,数据文件中的数据量大,单个文件的大小能达到几g(千兆字节),数据文件中还包含很多的返回结果和数值。其次,数据文件中包含的标签复杂多样,内部的数据也非常复杂,需要将这些信息逐条发送给分析系统做分析是非常麻烦和耗时的事情。
本发明实施例中,在接收到来自供方的源文件后,通过对源文件的相关数据按照预设标签字段进行重组,可以获得标准化以及统一化的多条消息,能够提升数据分析系统从各个消息中提取所需数据的便捷性;此外,还可以通过消息队列来传输所述多条消息,可以均衡配送过程中的资源占用情况,保证消息传输的有序性,同时提升消息传输的效率。
为使本发明的上述目的、特征和优点能够更为明显易懂,下面结合附图对本发明的具体实施例做详细的说明。
图1是本发明实施例一种数据流通方法的流程图。
在数据交易系统中,数据需方请求数据,数据供方准备好数据需方请求的数据后,配送系统可以负责将数据供方准备好的数据发送给数据需方。图1所示的数据流通方法的各个步骤可以由配送系统来执行。其中,配送系统可以通过执行图1所示的各个步骤将准备好的数据发送给数据分析系统。数据分析系统在对数据分析完成后,可以将分析完成的数据返回给配送系统,由配送系统将分析完成的数据配送至数据需方。
图1所示的数据流通方法可以包括以下步骤:
步骤s101:接收来自数据供方的至少一个源文件,每一源文件包括文件标识以及文件内容,所述文件内容包括多条需方请求值以及供方返回值;
步骤s102:至少根据每一源文件的文件标识、文件内容与多个预设标签字段的匹配关系重组形成多条消息,每条消息包括所述多个预设标签字段,所述多个预设标签字段具备字段值,所述多个预设标签字段包括数据字段,所述数据字段的字段值为单条需方请求值以及供方返回值;
步骤s103:将所述多条消息按照形成时间依次传入至消息队列,并传输至数据分析系统,以供所述数据分析系统对所述多条消息进行数据分析。
需要指出的是,本实施例中各个步骤的序号并不代表对各个步骤的执行顺序的限定。
在步骤s101的具体实施中,数据供方将准备好的至少一个源文件发送给配送系统。
每一源文件包括文件标识以及文件内容,所述文件内容包括多条需方请求值以及供方返回值。所述文件标识具体可以是文件名,所述文件标识可以包括多个字段,例如可以是工单编号_时间戳_批次号。文件内容中的需方请求值具体可以是维度主键(key),供方返回值具体可以是标签值(value)。其中,标签值可以是维度主键下的多个可选值。具体而言,数据交易系统可以定义维度主键的名称、维度主键的分类、标签值的类型和标签值的数值。具体地,维度主键可以作为流通数据的标签,那么标签值与维度主键相对应,标签值可以是维度主键的值。例如,在维度主键为年龄时,标签值为年龄值或年龄所在的数值范围。
在步骤s102的具体实施中,可以至少基于源文件的文件标识与多个预设标签字段的匹配关系,以及文件内容与多个预设标签字段的匹配关系重组形成多条消息。重组后形成的消息包括所述多个预设标签字段,每个预设标签字段具备字段值。
例如,文件标识包括多个字段:工单编号_时间戳_批次号,预设标签字段包括批次号字段,那么文件标识中的“批次号”与批次号字段具备匹配关系,可以根据文件标识确定该字段的字段值为该“批次号”。
具体而言,每一源文件包括多条需方请求值以及供方返回值,而每一条消息仅包括单条需方请求值以及供方返回值,由此,对每一源文件可以重组形成多条消息。每条消息在重组完成时具备形成时间,具体可以采用时间戳来表示。
进而在步骤s103的具体实施中,可以将所述多条消息按照形成时间依次传入至消息队列,以利用消息队列将多条消息传输至数据分析系统。
相对于现有技术中将整个源文件进行传输的方案,本发明实施例通过消息队列来传输多条消息可以在占用更小的内存的情况下提升数据传输速度,提升系统性能。
对于数据分析系统而言,可以对所述多条消息进行数据分析。由于每条消息中包括多个预设标签字段,因此在对多条消息进行分析时,可以按照多个预设标签字段来选取,从而有助于提升数据分析系统的数据分析效率。
本发明实施例中,在接收到来自供方的源文件后,通过对源文件的相关数据按照预设标签字段进行重组,可以获得标准化以及统一化的多条消息,能够提升数据分析系统从各个消息中提取所需数据的便捷性;此外,还可以通过消息队列来传输所述多条消息,可以均衡配送过程中的资源占用情况,保证消息传输的有序性,同时提升消息传输的效率。
在一个具体的应用场景中,可以为数据配送系统分配一个进程,为数据分析系统分配一个进程。在进行进程间通信时,所述一个进程将消息加到消息队列的尾端,所述另一个进程从消息队列中取消息(具体可以以先进先出的原则来取消息,也可以按照消息的类型取消息),现了配送系统与分析系统进程间的通信。
在一个非限制性的实施例中,图1所示步骤s102可以包括以下步骤:遍历所述至少一个源文件,迭代地至少根据所述匹配关系从所述文件标识以及所述文件内容中抽取所述多个预设标签字段的字段值,并将抽取到的字段值按照预设顺序进行排列,以形成单条消息,直至遍历完成所述至少一个源文件。
本实施例中,在重组形成消息时,可以根据所述匹配关系从所述文件标识以及所述文件内容中抽取所述多个预设标签字段的字段值,从而形成消息。
例如,数据字段与源文件中的key及其对应的value具备匹配关系。源文件包括两条key及其对应的value,也即key1和value1以及key2和value2,在重组形成第一条消息时,其数据字段的字段值为key1和value1;在重组形成第二条消息时,其数据字段的字段值为key2和value2。其他字段的字段值的确定方式以此类推,本发明实施例对此不作限制。
在一个非限制性的实施例中,所述文件标识包括批次号;所述多个预设标签字段包括批次号字段和传输状态字段。请参照图2,图1所示步骤s102可以包括以下步骤:
步骤s201:确定所述文件标识中的批次号为当前消息的批次号字段的字段值;
步骤s202:判断所述当前消息的批次号字段的字段值与上一消息的批次号字段的字段值是否相同;
步骤s203:如果所述当前消息的批次号字段的字段值与上一消息的批次号字段的字段值不同,则确定所述传输状态字段的字段值为开始传输。
数据分析系统对数据进行数据分析时,通常是对同一批次的数据同时进行分析,那么在数据配送系统传输至数据分析系统的多条消息中,需要能够指示消息所处的批次信息以及同一批次的数据开始传输和结束传输的时机。
具体而言,可以确定文件标识中的批次号为当前消息的批次号字段的字段值,批次号字段的字段值可以指示消息所处的批次。传输状态字段的字段值可以指示同一批次的数据的传输状态,所述传输状态选自开始传输、传输中以及传输结束。
在当前消息的批次号字段的字段值与上一消息的批次号字段的字段值不同的情况下,表示当前消息为本批次数据的第一条消息,则确定所述传输状态字段的字段值为开始传输。
数据分析系统可以根据当前消息的传输状态字段的字段值确定当前消息为本批次数据的第一条消息。
本发明一个进一步的实施例中,图2所示方法还可以包括以下步骤:
步骤s204:根据所述同一批次的文件数量以及每一源文件中的数据量统计同一批次的总数据量,并统计同一批次的当前消息总量;
步骤s205:如果所述当前消息的批次号字段的字段值与上一消息的批次号字段的字段值相同,并且所述当前消息总量未达到所述同一批次的总数据量,则确定所述传输状态字段的字段值为传输中;
步骤s206:如果所述当前消息的批次号字段的字段值与上一消息的批次号字段的字段值相同,并且所述当前消息总量达到所述同一批次的总数据量,则确定所述传输状态字段的字段值为传输结束。
需要说明的是,数据配送系统可以选择性地执行步骤s205或步骤s206。
本实施例中,数据配送系统可以统计获得同一批次的总数据量,例如同一批次有3个文件,每个文件有10万条数据,那么可以确定该批次的总数据量为30万条。此外,数据配送系统还可以统计获得同一批次的当前消息总量,例如截止到当前时刻,重组形成的消息总量为29万条。
进而在步骤s205和步骤s206的具体实施中,可以在当前消息的批次号字段的字段值与上一消息的批次号字段的字段值相同的情况下,结合当前消息总量与同一批次的总数据量的大小关系,确定当前消息的传输状态字段的字段值。
具体地,当前消息总量未达到所述同一批次的总数据量的情况下,表示同一批次中存在剩余数据量,则确定所述传输状态字段的字段值为传输中;否则,表示同一批次中数据已传输完,则可以确定当前消息的传输状态字段的字段值为传输结束。
在本发明一个非限制性的实施例中,所述多个预设标签字段包括自增序号字段;图1所示步骤s102还可以包括以下步骤:如果当前消息的批次号字段的字段值与上一消息的批次号字段的字段值不同,则确定所述当前消息的自增序号字段的字段值为初始值;或者,如果所述当前消息的批次号字段的字段值与上一消息的批次号字段的字段值相同,则确定所述当前消息的自增序号字段的字段值为上一消息的自增序号字段的字段值加一。
具体地,自增序号字段的字段值可以采用snowflake算法来实现。
本发明实施例通过为消息设置自增序号字段,可以有助于数据分析系统通过自增序号字段的字段值对消息进行统计,从而提升数据分析效率。
在一个具体实施例中,所述多个预设标签字段还包括时间字段、数据查询状态字段、数据需方标识字段、数据供方标识字段和配送任务标识字段。
其中,消息的时间字段可以表示该消息的形成时间,具体可以包括日期和时间。消息的数据查询状态字段可以表示形成该消息的数据的状态,数据查询状态字段具体可以是长度为2的字符串,例如:01表示需方请求,11表示供方查询成功,12表示供方查询失败,21表示需方服务查询成功,22表示需方服务查询失败,23表示需方缓存成功,24表示需方从缓存查询成功。
数据需方标识字段表示数据需方的标识,具体可以是数据需方的会员编号。数据供方标识字段表示数据供方的标识,具体可以是数据供方的会员编号。配送任务标识字段可以表示配送数据的任务的标识,例如可以是数据配送平台生成的全局唯一流水号。
关于预设标签字段,具体可参照表1。
需要说明的是,表1所示预设标签字段仅为示例,不构成对本发明实施例的限制,在实际的应用中还可以根据实际的应用需求设置其他类型的字段。
进一步而言,每条消息中的所述多个预设标签字段可以采用分隔符进行分割。
例如采用符号“|@|”来对各个预设标签字段进行分割,具体是以下形式:6280566627217969153|@|24|@|20170614|@|092931|@|0000109|@|0000140|@|ctn20170418000014000001090000187|@|00001092017061409293121355822490111|@|b89a31c78861835f0f4ba985ebb3e9e8|@|902613a069b844459d83fd56b|@|1|@|1|@|0|@|000000|@|3|@|1|@||@||@||@|2|@||@||@||@|3|@|0000109|@|1|@|3a7a11b4df56c0226144132d931d18b55239f54d214ad23affc340a1994922533e5719b983efbd4a8b3a12a84e3794e6f3b6ec1f70a250bd156c1f07badf1192。
请参照图3,本发明实施例还公开了一种数据分析方法。图3所示数据分析方法的各个步骤可以由数据分析系统来执行。
需要说明的是,所述数据分析系统可以是第三方平台,也可以与数据配送系统共同由数据交易平台来维护和管理。
具体地,所述数据分析方法可以包括以下步骤:
步骤s301:从所述消息队列中按照多条消息的形成时间接收所述多条消息;
步骤s302:对所述多条消息进行数据分析。
本实施例中,数据分析系统采用消息队列与数据配送系统进行交互,可以提升消息传输效率。此外,消息是通过对源文件中的数据进行重组形成的,其包含多个预设标签字段,可以提升数据分析的便捷性。
本发明一个非限制性的实施例中,所述多个预设标签字段包括传输状态字段,所述传输状态字段的字段值选自开始传输、传输中和传输结束,图3所示步骤s302具体可以包括以下步骤:确定传输状态字段的字段值为开始传输的初始消息;在消息的传输状态字段的字段值为传输结束时,对从接收所述初始消息的时刻开始接收到的所有消息进行数据分析。
如前所述,传输状态字段的字段值为开始传输时,表示同一批次的消息开始传输,传输状态字段的字段值为传输结束时,表示该同一批次的消息开传输结束。只有在接收到传输状态字段的字段值为传输结束的消息时,例如该消息为结束消息,数据分析系统才开始执行分析操作,分析操作的对象为从初始消息到结束消息之间的所有消息。
请参照图4,本发明实施例还公开了一种数据流通装置40。数据流通装置40可以包括源文件接收模块401、消息重组模块402和传输模块403。
其中,源文件接收模块401适于接收来自数据供方的至少一个源文件,每一源文件包括文件标识以及文件内容,所述文件内容包括多条需方请求值以及供方返回值;消息重组模块402适于至少根据每一源文件的文件标识、文件内容与多个预设标签字段的匹配关系重组形成多条消息,每条消息包括所述多个预设标签字段,所述多个预设标签字段具备字段值,所述多个预设标签字段包括数据字段,所述数据字段的字段值为单条需方请求值以及供方返回值;传输模块403适于将所述多条消息按照形成时间依次传入至消息队列,并传输至数据分析系统,以供所述数据分析系统对所述多条消息进行数据分析。
关于数据流通装置40的工作原理、工作方式的更多内容,可以参照图1至图3中的相关描述,这里不再赘述。
请参照图5,本发明实施例还公开了一种数据分析装置50。数据分析装置50可以包括消息接收模块501和分析模块502。
其中,消息接收模块501适于从所述消息队列中按照多条消息的形成时间接收所述多条消息;分析模块502适于对所述多条消息进行数据分析。
关于数据分析装置50的工作原理、工作方式的更多内容,可以参照图1至图3中的相关描述,这里不再赘述。
本发明实施例还公开了一种存储介质,其上存储有计算机指令,所述计算机指令运行时可以执行图1至图3中所示方法的步骤。所述存储介质可以包括rom、ram、磁盘或光盘等。所述存储介质还可以包括非挥发性存储器(non-volatile)或者非瞬态(non-transitory)存储器等。
本发明实施例还公开了一种终端,所述终端可以包括存储器和处理器,所述存储器上存储有可在所述处理器上运行的计算机指令。所述处理器运行所述计算机指令时可以执行图1至图3中所示方法的步骤。所述终端包括但不限于手机、计算机、平板电脑等终端设备。
虽然本发明披露如上,但本发明并非限定于此。任何本领域技术人员,在不脱离本发明的精神和范围内,均可作各种更动与修改,因此本发明的保护范围应当以权利要求所限定的范围为准。