CN112115136B - 多数据流处理方法、装置、计算机设备和存储介质 - Google Patents

多数据流处理方法、装置、计算机设备和存储介质 Download PDF

Info

Publication number
CN112115136B
CN112115136B CN202010825699.0A CN202010825699A CN112115136B CN 112115136 B CN112115136 B CN 112115136B CN 202010825699 A CN202010825699 A CN 202010825699A CN 112115136 B CN112115136 B CN 112115136B
Authority
CN
China
Prior art keywords
data
streaming data
streaming
target
identifier
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.)
Active
Application number
CN202010825699.0A
Other languages
English (en)
Other versions
CN112115136A (zh
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.)
Suning Cloud Computing Co Ltd
Original Assignee
Suning Cloud Computing 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 Suning Cloud Computing Co Ltd filed Critical Suning Cloud Computing Co Ltd
Priority to CN202010825699.0A priority Critical patent/CN112115136B/zh
Publication of CN112115136A publication Critical patent/CN112115136A/zh
Priority to CA3128347A priority patent/CA3128347A1/en
Application granted granted Critical
Publication of CN112115136B publication Critical patent/CN112115136B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/20Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
    • G06F16/22Indexing; Data structures therefor; Storage structures
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06QINFORMATION AND COMMUNICATION TECHNOLOGY [ICT] SPECIALLY ADAPTED FOR ADMINISTRATIVE, COMMERCIAL, FINANCIAL, MANAGERIAL OR SUPERVISORY PURPOSES; SYSTEMS OR METHODS SPECIALLY ADAPTED FOR ADMINISTRATIVE, COMMERCIAL, FINANCIAL, MANAGERIAL OR SUPERVISORY PURPOSES, NOT OTHERWISE PROVIDED FOR
    • G06Q30/00Commerce
    • G06Q30/02Marketing; Price estimation or determination; Fundraising
    • G06Q30/0207Discounts or incentives, e.g. coupons or rebates

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Business, Economics & Management (AREA)
  • Accounting & Taxation (AREA)
  • Strategic Management (AREA)
  • Finance (AREA)
  • Development Economics (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • Databases & Information Systems (AREA)
  • Entrepreneurship & Innovation (AREA)
  • Data Mining & Analysis (AREA)
  • Game Theory and Decision Science (AREA)
  • Software Systems (AREA)
  • Economics (AREA)
  • Marketing (AREA)
  • General Business, Economics & Management (AREA)
  • Information Transfer Between Computers (AREA)
  • Signal Processing For Digital Recording And Reproducing (AREA)

Abstract

本申请涉及一种多数据流处理方法、装置、计算机设备和存储介质。所述方法包括:持续接收来自流处理平台的第一流式数据和第二流式数据;接收到对应有第二流式数据的第一流式数据后,若确定与其对应的第二流式数据已全接收到,对第一流式数据及其对应的第二流式数据进行关联处理,在关联处理后得到的关联数据满足预设条件时,将第一流式数据存入数据库;接收到第二流式数据后,若确定与其对应的目标第一流式数据已接收到,且与目标第一流式数据对应的第二流式数据已全接收到,对目标第一流式数据及其对应的第二流式数据进行关联处理,在关联处理后得到的关联数据满足预设条件时,将目标第一流式数据存入数据库,能更实时地处理多实时数据流。

Description

多数据流处理方法、装置、计算机设备和存储介质
技术领域
本申请涉及大数据实时处理领域,特别是涉及一种多数据流处理方法、装置、计算机设备和存储介质。
背景技术
在价格管控业务系统中,价格在订单数据上分为两种:销售金额和支付金额,对于价格的管控如果只根据销售金额管控,会造成管控效果比较低;如果只根据实际支付金额管控,则会造成预期管控效果严格。要想达到预期效果,需要使用订单的实际支付金额与用券信息算出实际的付款金额进行管控。
目前的做法通常是将多个实时数据流的数据先保存至关系型数据库或HDFS(Hadoop Distributed File System,分布式文件系统),然后对业务提供离线查询功能,在关系型数据库或HDFS中通过多张表关联查询得到需要处理的结果集,再交由各业务系统对结果集进行处理。
然而,基于离线技术查询结果的方式,数据延时性高,因而上述做法无法保证数据实时性。而由于多个实时数据流处理完成后的入表时间不确定,容易导致关联查询时出现数据缺失的情况,因而上述做法也无法保证数据可靠。此外,多个交互的实时数据流的数据可能并没有保存价值或者在某些类型的数据库中没有进行冗余的必要,因而,上述做法还会占用过多存储资源,造成系统存储资源的利用率低下。
发明内容
本发明针对现有技术的缺点,提供了一种多数据流处理方法、装置、计算机设备和存储介质,本发明实施例能够更实时地对多实时数据流进行处理,并且使处理得到的数据更为准确,并且能够减少对存储资源的占用。
本发明根据第一方面提供了一种多数据流处理方法,在一个实施例中,该方法包括:
持续接收来自流处理平台的第一流式数据和第二流式数据,任一个第一流式数据对应0个第二流式数据或至少一个第二流式数据,任一个第二流式数据对应一个第一流式数据;
在接收到任一个对应有第二流式数据的第一流式数据后,若确定与其对应的所有第二流式数据已全部接收到,则对该任一个对应有第二流式数据的第一流式数据以及与其对应的所有第二流式数据进行关联处理,在关联处理后得到的关联数据满足预设条件时,将该任一个对应有第二流式数据的第一流式数据存入数据库;
在接收到任一个第二流式数据后,若确定与其对应的目标第一流式数据已接收到,且与目标第一流式数据对应的所有第二流式数据已全部接收到,则对目标第一流式数据以及与其对应的所有第二流式数据进行关联处理,在关联处理后得到的关联数据满足预设条件时,将目标第一流式数据存入数据库。
在一个实施例中,对该任一个对应有第二流式数据的第一流式数据以及与其对应的所有第二流式数据进行关联处理的步骤之前,包括:
获取该任一个对应有第二流式数据的第一流式数据包括的第一数据标识;
确定该第一数据标识对应的第二数据标识,该第一数据标识对应的第二数据标识的数量为N,N为大于0正整数;
根据该第一数据标识生成第一数据索引;
查询数据存储中间件中与第一数据索引对应的第二数据标识,第一数据索引对应的第二数据标识的数量为M,M为大于0正整数;
若该第一数据标识对应的第二数据标识与第一数据索引对应的第二数据标识相同,确定与该任一个对应有第二流式数据的第一流式数据对应的所有第二流式数据已全部接收到;
若该第一数据标识对应的第二数据标识与第一数据索引对应的第二数据标识不相同,确定与该任一个对应有第二流式数据的第一流式数据对应的所有第二流式数据没有全部接收到。
在一个实施例中,确定与该任一个对应有第二流式数据的第一流式数据对应的所有第二流式数据没有全部接收到的步骤之后,还包括:
确定该第一数据标识对应的第二数据标识与第一数据索引对应的第二数据标识之间的补集数据;
根据该第一数据标识生成第二数据索引;
将第二数据索引与补集数据存入数据存储中间件。
在一个实施例中,对目标第一流式数据以及与其对应的所有第二流式数据进行关联处理的步骤之前,包括:
确定该任一个第二流式数据对应的第二数据标识,以及该第二数据标识对应的目标第一数据标识;
根据该第二数据标识对应的目标第一数据标识生成第二数据索引;
通过第二数据索引查询数据存储中间件;
若数据存储中间件中存有与第二数据索引对应的第二数据标识,确定与该任一个第二流式数据对应的目标第一流式数据已接收到;
若数据存储中间件中不存有与第二数据索引对应的第二数据标识,确定与该任一个第二流式数据对应的目标第一流式数据没有接收到。
在一个实施例中,该方法还包括:
若数据存储中间件中存有与第二数据索引对应的第二数据标识,确定该第二数据标识与第二数据索引对应的第二数据标识是否相同;
在确定该第二数据标识与第二数据索引对应的第二数据标识相同时,确定与目标第一流式数据对应的所有第二流式数据已全部接收到;
在确定该第二数据标识与第二数据索引对应的第二数据标识不相同时,确定与目标第一流式数据对应的所有第二流式数据没有全部接收到;
优选地,该方法还包括:
若数据存储中间件中不存有与第二数据索引对应的第二数据标识,根据目标第一数据标识生成第一数据索引;
将第一数据索引与该任一个第二流式数据对应的第二数据标识存入数据存储中间件。
在一个实施例中,确定与目标第一流式数据对应的所有第二流式数据没有全部接收到的步骤之后,还包括:
根据该第二数据标识更新数据存储中间件中与该第二数据索引对应的第二数据标识。
在一个实施例中,对该任一个对应有第二流式数据的第一流式数据以及与其对应的所有第二流式数据进行关联处理的步骤,包括:
确定该任一个对应有第二流式数据的第一流式数据所对应的第一金额;
确定各个第二流式数据对应的第二金额;
根据该第一金额以及各个第二流式数据对应的第二金额获得该任一个对应有第二流式数据的第一流式数据所对应的第三金额,该第三金额为关联处理后的关联数据。
在一个实施例中,对该目标第一流式数据以及与其对应的所有第二流式数据进行关联处理的步骤,包括:
确定目标第一流式数据对应的第一金额;
确定与目标第一流式数据对应的各个第二流式数据所对应的第二金额;
根据目标第一流式数据对应的第一金额,及其对应的各个第二流式数据所对应的第二金额获得目标第一流式数据对应的第三金额,该第三金额为关联处理后的关联数据。
本发明根据第二方面提供了一种多数据流处理装置,在一个实施例中,该装置包括:
流式数据接收模块,用于持续接收来自流处理平台的第一流式数据和第二流式数据,任一个第一流式数据对应0个第二流式数据或至少一个第二流式数据,任一个第二流式数据对应一个第一流式数据;
第一数据处理模块,用于在接收到任一个对应有第二流式数据的第一流式数据后,若确定与其对应的所有第二流式数据已全部接收到,则对该任一个对应有第二流式数据的第一流式数据以及与其对应的所有第二流式数据进行关联处理,在关联处理后得到的关联数据满足预设条件时,将该任一个对应有第二流式数据的第一流式数据存入数据库;
第二数据处理模块,用于在接收到任一个第二流式数据后,若确定与其对应的目标第一流式数据已接收到,且与目标第一流式数据对应的所有第二流式数据已全部接收到,则对目标第一流式数据以及与其对应的所有第二流式数据进行关联处理,在关联处理后得到的关联数据满足预设条件时,将目标第一流式数据存入数据库。
本发明根据第三方面提供了一种计算机设备,包括存储器、处理器及存储在存储器上并可在处理器上运行的计算机程序,处理器执行计算机程序时实现上述任一方法的实施例的步骤。
本发明根据第四方面提供了一种计算机可读存储介质,其上存储有计算机程序,计算机程序被处理器执行时实现上述任一方法的实施例的步骤。
在本发明实施例中,本服务器持续接收来自流处理平台的第一流式数据和第二流式数据;在接收到任一个对应有第二流式数据的第一流式数据后,若确定与其对应的所有第二流式数据已全部接收到,则对该任一个对应有第二流式数据的第一流式数据以及与其对应的所有第二流式数据进行关联处理,在关联处理后得到的关联数据满足预设条件时,将该任一个对应有第二流式数据的第一流式数据存入数据库;在接收到任一个第二流式数据后,若确定与其对应的目标第一流式数据已接收到,且与目标第一流式数据对应的所有第二流式数据已全部接收到,则对目标第一流式数据以及与其对应的所有第二流式数据进行关联处理,在关联处理后得到的关联数据满足预设条件时,将目标第一流式数据存入数据库。本发明实施例在系统框架中引入数据存储中间件,通过数据存储中间件实现将多实时数据流,即第一数据流和第二数据流进行动态合并,相比现有技术中先将第一数据流和第二数据流直接存入数据库,再对数据库中第一数据流和第二数据流的数据进行处理以得到处理结果的方式,能够更实时地对多实时数据流进行处理,并且使处理得到的数据更为准确,并且能够减少对存储资源的占用。
附图说明
图1为一个实施例中一种多数据流处理方法的应用环境图;
图2为一个实施例中一种多数据流处理方法的流程示意图;
图3为一个实施例中一种多数据流处理装置的结构框图;
图4为一个实施例中计算机设备的内部结构图。
具体实施方式
为了使本申请的目的、技术方案及优点更加清楚明白,以下结合附图及实施例,对本申请进行进一步详细说明。应当理解,此处描述的具体实施例仅用以解释本申请,并不用于限定本申请。
如图1所示为本发明一个实施例中多数据流处理方法的应用环境。
其中,服务器10是流处理平台,可能地,服务器10可以用Kafka流处理平台来实现。服务器20是与服务器10对接的服务器,服务器20会从服务器10接入第一数据流和第二数据流,第一数据流的数据是第一流式数据,第二数据流的数据是第二流式数据,第一流式数据至少包括第一数据标识,第二流式数据至少包括第二数据标识。在一些应用场景中,第一数据流中一个第一流式数据会与第二数据流中的一个或多个第二流式数据之间存在对应关系。比如,在一个订单价格管控场景中,第一数据流是订单数据流,第二数据流是促销数据流,第一流式数据是订单数据、第二流式数据促销数据,在该场景中,用户可以在一笔订单里购买多种商品,此时该订单会对应一个大订单号,而订单里的每种商品会对应一个小订单号(即订单行号),用户在购买商品时,可以不使用优惠券也可以使用优惠券(可以使用至少一张优惠券),其中,促销数据中至少会包括券号,即用户所使用的优惠券所对应的唯一的数据标识,如果用户购买商品时没有使用优惠券,那么该商品对应的订单数据不用进行处理,需要将其过滤掉,而如果用户购买商品时有使用优惠券,那么该商品对应的订单数据中包括订单行号、券号以及券号对应的券金额。
服务器20会在接收到第一流式数据及其对应的所有第二流式数据后,将第一流式数据及其对应的所有第二流式数据进行关联处理,得到关联数据,并在关联数据满足预设条件时将第一流式数据存入数据库40。其中,服务器20会将服务器10发送的第一流式数据和第二流式数据先存入数据存储中间件30中,再对第一流式数据及其对应的所有第二流式数据进行关联处理,得到关联结果。
其中,服务器10和服务器20可以用独立的服务器或者是多个服务器组成的服务器集群来实现。服务器20、数据存储中间件30和数据库40可以部署于同一服务器或服务器集群,也可以分别是独立的服务器或服务器集群。示例性地,可以用Redis数据库来作为数据存储中间件30,用MYSQL数据库来作为数据库40。
如图2所示,是本发明一个实施例提供的一种多数据流处理方法。该方法包括以下步骤:
S110:持续接收来自流处理平台的第一流式数据和第二流式数据,任一个第一流式数据对应0个第二流式数据或至少一个第二流式数据,任一个第二流式数据对应一个第一流式数据。
在本实施例中,服务器20(以下简称本服务器)接入流处理平台的第一数据流和第二数据流后,会持续地从流处理平台接收到第一流式数据和第二流式数据。任一个第一流式数据对应0个第二流式数据或至少一个第二流式数据,任一个第二流式数据对应一个第一流式数据。其中,第一流式数据包括第一数据标识,第二流式数据包括第二数据标识,在一种可能实施方式中,对于对应有第二数据标识的第一流式数据,其中除了第一数据标识,还包括与其对应的所有第二数据标识。在不同的应用场景中,第一数据标识和第二数据标识可以是不同的数据,比如在订单价格管控场景中,第一数据标识可以是订单号或订单行号,第二数据标识可以是券号。
对于第一数据流中的任一个第一流式数据,假如第二数据流中有与其对应的第二流式数据,那么对于该任一个第一流式数据以及与其对应的第二流式数据而言,它们到达本服务器的先后顺序是随机的。即,第一流式数据可能比与其对应的所有第二流式数据更早到达本服务器,也可能比与其对应的所有第二流式数据更晚到达本服务器;如果第一流式数据对应有2个以上的第二流式数据,那么还有可能是第一流式数据比与其对应的部分第二流式数据晚到达本服务器,但比其余部分第二流式数据早到达本服务器,比如,第一流式数据A对应的第二流式数据是B和C,A、B、C中,B最先到达本服务器,A随后到达本服务器,而C最晚到达本服务器。而本服务器只有在该任一个第一流式数据以及与其对应的所有第二流式数据都到达本服务器之后,才会对这两者进行关联处理。
考虑到第一流式数据及其对应的第二流式数据到达本服务器的先后顺序难以确定,又需要两者都到达本服务器后才能对这两者进行关联处理,因而设置了分别针对第一流式数据和第二流式数据的处理逻辑,以实现在两者到达本服务器后,及时对这两者进行关联处理,进而提高对第一数据流和第二数据流的处理实时性。
S120:在接收到任一个对应有第二流式数据的第一流式数据后,若确定与其对应的所有第二流式数据已全部接收到,则对该任一个对应有第二流式数据的第一流式数据以及与其对应的所有第二流式数据进行关联处理,在关联处理后得到的关联数据满足预设条件时,将该任一个对应有第二流式数据的第一流式数据存入数据库。
在本实施例中,本服务器在接收到第一流式数据后,会判断该第一流式数据是否有对应的第二流式数据。在一种可能的实施方式中,判断方式可以是判断第一流式数据中除了第一数据标识是否还包括有第二数据标识。
本服务器在判断该第一流式数据对应的所有第二流式数据是否已全部接收到的过程如下所示:
获取该任一个对应有第二流式数据的第一流式数据包括的第一数据标识;
确定该第一数据标识对应的第二数据标识,该第一数据标识对应的第二数据标识的数量为N,N为大于0正整数;
根据该第一数据标识生成第一数据索引;
查询数据存储中间件中与第一数据索引对应的第二数据标识,第一数据索引对应的第二数据标识的数量为M,M为大于0正整数;
若该第一数据标识对应的第二数据标识与第一数据索引对应的第二数据标识相同,确定与该任一个对应有第二流式数据的第一流式数据对应的所有第二流式数据已全部接收到;
若该第一数据标识对应的第二数据标识与第一数据索引对应的第二数据标识不相同,确定与该任一个对应有第二流式数据的第一流式数据对应的所有第二流式数据没有全部接收到。
在确定接收到的第一流式数据对应有第二流式数据后,本服务器如果确定该第一流式数据对应的所有第二流式数据已全部接收到,那么对该第一流式数据以及与其对应的所有第二流式数据进行关联处理。
其中,如果该第一数据标识对应的第二数据标识与第一数据索引对应的第二数据标识不相同,说明与该第一流式数据对应的第二流式数据只有部分到达本服务器或者全部都没有到达本服务器。因此,需要等该第一流式数据对应的所有第一流式数据都到达本服务器之后,才能对这两者进行关联处理。
为了在该第一流式数据对应的未到达本服务器的第二流式数据到达之后,能够及时进行关联处理,本服务器如果确定与该任一个对应有第二流式数据的第一流式数据对应的所有第二流式数据没有全部接收到,那么执行以下步骤:
确定该第一数据标识对应的第二数据标识与第一数据索引对应的第二数据标识之间的补集数据;
根据该第一数据标识生成第二数据索引;
将第二数据索引与补集数据存入数据存储中间件。
其中,第一数据索引与第二数据索引不相同;补集数据是该第一数据标识对应的第二数据标识中除了与第一数据索引对应的第二数据标识之外的第二数据标识。比如,第一数据标识对应的第二数据标识为id_1、id_2,而第一数据索引对应的第二数据标识为id_1,那么可以确定出该第一数据标识对应的第二数据标识与第一数据索引对应的第二数据标识之间的补集数据为id_2。
具体地,在将第二数据索引与补集数据存入数据存储中间件时,可以采用key-value的形式将第二数据索引与补集数据存入数据存储中间件,其中,第二数据索引作为key,而补集数据作为value。假如补集数据中包括两个以上的第二数据标识,可以使用逗号来分隔各个第二数据标识。
S130:在接收到任一个第二流式数据后,若确定与其对应的目标第一流式数据已接收到,且与目标第一流式数据对应的所有第二流式数据已全部接收到,则对目标第一流式数据以及与其对应的所有第二流式数据进行关联处理,在关联处理后得到的关联数据满足预设条件时,将目标第一流式数据存入数据库。
在本实施例中,本服务器在接收到第二流式数据后,会判断与其对应的第一流式数据(以下称为目标第一流式数据)是否已接收到,以及目标第一流式数据对应的所有第二流式数据是否已全部接收到。
在一个实施方式中,判断与第二流式数据对应的目标第一流式数据是否已接收到的过程如下:
确定该任一个第二流式数据对应的第二数据标识,以及该第二数据标识对应的目标第一数据标识;
根据该第二数据标识对应的目标第一数据标识生成第二数据索引;
通过第二数据索引查询数据存储中间件;
若数据存储中间件中存有与第二数据索引对应的第二数据标识,确定与该任一个第二流式数据对应的目标第一流式数据已接收到;
若数据存储中间件中不存有与第二数据索引对应的第二数据标识,确定与该任一个第二流式数据对应的目标第一流式数据没有接收到。
在本实施方式中,一个第二流式数据中包括一个第二数据标识、以及与该第二数据标识对应的第一数据标识(即目标第一数据标识),因而本服务器接收到第二流式数据后,从该第二流式数据中获取第二数据标识以及目标第一数据标识。可能地,第二流式数据中不包括目标第一数据标识,而本服务器或者数据存储中间件中预先维护各第一数据标识以及与其对应的第二数据标识之间的映射关系,因而本服务器在获得第二流式数据中的第二数据标识后,可通过该映射关系来获得该第二数据标识对应的目标第一数据标识。当然,在其他可能的实施方式中,一个第二流式数据中也可以包括多个第二数据标识。
在获得第二数据标识及其目标第一数据标识之后,本服务器根据该目标第一数据标识生成第二数据索引,然后通过生成的该第二数据索引查询数据存储中间件。
从前文所述可知,如果目标第一流式数据比与其对应的第二流式数据提前到达本服务器,那么本服务器会基于目标第一流式数据包括的第一数据标识来生成第二数据索引,并将该第二数据索引及目标第一流式数据包括的所有第二数据标识存入(比如以key-value的形式存入)数据存储中间件,因此,假如该第二流式数据对应的第一流式数据(即目标第一流式数据)已经提前到达本服务器,那么在本实施方式中通过生成的该第二数据索引就能够从数据存储中间件中查询到相关结果;反之,假如该第二流式数据对应的第一流式数据还未到达本服务器,那么通过该第二数据索引来查询数据存储中间件就不会查询得到任何结果,因为此时该数据存储中间件中并没有以该第二数据索引作为索引(如key)来存储数据的记录。因此,通过第二数据索引查询数据存储中间件所得到的查询结果即可判断出目标第一流式数据是否已接收到。
在一个实施方式中,若数据存储中间件中不存有与第二数据索引对应的第二数据标识,本服务器执行以下步骤:
根据目标第一数据标识生成第一数据索引;
将第一数据索引与该任一个第二流式数据对应的第二数据标识存入数据存储中间件。
在本实施方式中,从上所述可知,如果数据存储中间件中不存有与第二数据索引对应的第二数据标识,说明本服务器当前接收到的第二流式数据所对应的第一流式数据(即目标第一流式数据)还未到达,所以本服务器可以先确定该第二流式数据包括的第二数据标识对应的第一数据标识(即目标第一数据标识),然后根据目标第一数据标识生成第一数据索引,然后将第一数据索引与该第二流式数据包括的第二数据标识存入(比如可以key-value的形式存入)数据存储中间件,从而后续当目标第一流式数据到达时,本服务器能够执行相应处理。
另一方面,由于本服务器需要在目标第一流式数据对应的所有第二流式数据都到达本服务器之后才能进行关联处理,考虑到目标第一流式数据可能对应有多个第二流式数据,因此可以理解,本服务器当前接收到的第二流式数据可能不是该多个第二流式数据中最后一个到达本服务器的,或者说还存在与目标第一流式数据对应的部分第二流式数据会在当前接收到的这个第二流式数据之后到达本服务器,因此本服务器如果通过该第二数据索引查询数据存储中间件得到了相关结果(即相关的第二数据标识),那么进一步判断与目标第一流式数据对应的所有第二流式数据是否已全部接收到。
在一个实施方式中,判断与目标第一流式数据对应的所有第二流式数据是否已全部接收到的过程如下:
若数据存储中间件中存有与第二数据索引对应的第二数据标识,确定该第二数据标识与第二数据索引对应的第二数据标识是否相同;
在确定该第二数据标识与第二数据索引对应的第二数据标识相同时,确定与目标第一流式数据对应的所有第二流式数据已全部接收到;
在确定该第二数据标识与第二数据索引对应的第二数据标识不相同时,确定与目标第一流式数据对应的所有第二流式数据没有全部接收到;
在本实施方式中,从前文可知,在数据存储中间件中,根据目标第一流式数据的第一数据标识生成的第二数据索引对应的是目标第一流式数据包括的所有第二数据标识,为了能够在接收到第二流式数据时,快速确定该第二流式数据是否为其目标第一流式数据对应的所有第二流式数据或最后一个接收到的第二流式数据,在本实施方式中,本服务器在通过第二数据索引从数据存储中间件中查询得到相关的第二数据标识后,将查询得到的所有第二数据标识与接收到的第二流式数据包括的第二数据标识进行对比,如果查询到的所有第二数据标识与接收到的第二流式数据包括的第二数据标识不相同,那么可以确定与目标第一流式数据对应的所有第二流式数据还未全部接收到,此时就更新数据存储中间件中该第二数据索引对应的结果(即与该第二数据索引对应的第二数据标识),具体可以是将接收到的第二流式数据所包括的第二数据标识从数据存储中间件中与该第二数据索引对应的结果中删除。比如,数据存储中间件中与第二数据索引对应的第二数据标识为id_1、id_2,而接收到的第二流式数据包括的第二数据标识为id_1,对比之后发现两者不相同,那么将第二数据索引对应的结果从(id_1、id_2)更新为(id_2)。而如果查询到的所有第二数据标识与接收到的第二流式数据包括的第二数据标识相同,那么可以确定与目标第一流式数据对应的所有第二流式数据已全部接收到,进而本服务器能够对目标第一流式数据及其对应的所有第二流式数据进行关联处理。
在一个实施例中,步骤S120中的,对该任一个对应有第二流式数据的第一流式数据以及与其对应的所有第二流式数据进行关联处理的步骤,包括:
确定该任一个对应有第二流式数据的第一流式数据所对应的第一金额;
确定各个第二流式数据对应的第二金额;
根据该第一金额以及各个第二流式数据对应的第二金额获得该任一个对应有第二流式数据的第一流式数据所对应的第三金额,该第三金额为关联处理后的关联数据。
在一个实施例中,步骤S130中的,对该目标第一流式数据以及与其对应的所有第二流式数据进行关联处理的步骤,包括:
确定目标第一流式数据对应的第一金额;
确定与目标第一流式数据对应的各个第二流式数据所对应的第二金额;
根据目标第一流式数据对应的第一金额,及其对应的各个第二流式数据所对应的第二金额获得目标第一流式数据对应的第三金额,该第三金额为关联处理后的关联数据。
在上述两个实施例中,本服务器对(对应有第二流式数据的)第一流式数据及其对应的第二流式数据进行关联处理的过程是类似的。
示例性地,本服务器在接收到一个对应有第二流式数据的第一流式数据后,如果确定该第一流式数据对应的所有第二流式数据已全部接收到,或者在接收到一个第二流式数据后,如果确定该第二流式数据对应的第一流式数据以接收到,并且该第一流式数据对应的所有第二流式数据也已全部接收到,那么本服务器就确定第一流式数据对应的第一金额,以及与该第一流式数据对应的各个第二流式数据对应的第二金额,然后根据该第一金额和各个第二流式数据对应的第二金额进行计算,从而获得该第一流式数据对应的第三金额。
此外,在关联处理之后,和/或当第一流式数据对应的所有第二流式数据都到达之后,将数据存储中间件中的第一流式数据及其对应的所有第二流式数据都删除,避免浪费存储空间。进一步地,在关联处理之后,和/或当第一流式数据对应的所有第二流式数据都到达之后,删除第一数据索引和第二数据索引。
以下通过一个订单价格管控场景来对本发明实施例进行辅助说明。
在本场景中,第一数据流是订单数据流、第一流式数据是订单数据,其中至少包括订单号或订单行号,如果用户购买该订单时有使用优惠券,那么其中还包括用户使用的优惠券的券号以及券号对应的券金额;第二数据流是促销数据流,第二流式数据是促销数据,其中至少包括券号。本服务器从流处理平台kafka接入订单数据流和促销数据流,当任一订单数据及其对应的促销数据都到达之后,本服务器会对这两者进行关联处理,然而任一订单数据及其对应的促销数据到达本服务器的先后顺序是随机的,因此,可能会出现以下几种情况:1、订单数据比其对应的促销数据先到达本服务器;2、订单数据比其对应的促销数据晚到达本服务器;3、在订单数据对应多个促销数据时,订单数据只比部分其对应的促销数据早到达本服务器。
假设某订单数据包括的订单号(或订单行号)为orderA,券号为coupon1、coupon2;该订单数据对应的促销数据为包括券号coupon1的第一促销数据和包括券号coupon2的第二促销数据。
对于上述第1种情况,本服务器的执行流程可以如下:
假设本服务器先接收到该订单数据,本服务器会将该订单数据存入数据存储中间件Redis,并获取该订单数据中的第一数据标识(即订单号)orderA,由于该订单数据中包括券号coupon1、coupon2,因而可确定该订单数据有对应的促销数据,进而基于orderA生成第一数据索引prepare_operate_coupon_orderA,然后通过该第一数据索引查询数据存储中间件Redis,由于订单数据最先到达,因此此时查询不到相关结果,所以本服务器基于第一数据标识生成第二数据索引,如operating_coupon_orderA,并以key-value的形式将第二数据索引和券号存入Redis,其中可以用逗号将各券号分隔,如,(operating_coupon_orderA-coupon1,coupon2)。
当后续该订单数据对应的促销数据到达时,本服务器获取接收到的促销数据的第二数据标识,比如第一促销数据到达了,那么将其存入redis,并获取其第二数据标识coupon1及其对应的第一数据标识orderA,本服务器会根据第一数据标识orderA生成第二数据索引operating_coupon_orderA,并通过其查询Redis,可以查询得到第二数据索引对应的第二数据标识为coupon1和coupon2,由于该促销数据的第二数据标识coupon1与第二数据索引对应的第二数据标识coupon1和coupon2不相同,这说明该促销数据不是该订单数据对应的最后一个到达的促销数据,因此,将Redis中与第二数据索引对应的value值从coupon1,coupon2修改为coupon2。进而,当第二促销数据到达后,经过上述相同的流程可以确定该订单数据对应的所有促销数据都到达本服务器了,从而可以对该订单数据及其对应的促销数据即第一促销数据和第二促销数据进行关联处理。
在每个促销数据中除了券号,还包括活动信息,本服务器可以通过该活动信息(可以包括活动状态、券的领取方式、活动次数等信息)进行判断该券号是否有效(具体判断方式本示例不进行具体限定)。通过预存的订单数据可确定订单号对应的订单金额(或者说是付款金额,即第一金额)和券号对应的券金额(即第二金额),然后将订单金额和有效的券号的券金额进行相加得到最终金额(即第三金额),将最终金额与预设阈值进行对比,如果对比结果满足预设条件,那么确定该订单号对应的订单属于异常订单,将该订单号对应的订单数据存入数据库中,以便后续根据需要进行报表展示和/或告警处理(比如,向相关负责人员发送报警信息等)。
对于上述第2种情况,本服务器的执行流程可以如下:
假设本服务器先接收到第一促销数据(当然也可以是第二促销数据),本服务器会将该第一促销数据存入数据存储中间件Redis,并获取第一促销数据中的第二数据标识coupon1及其对应的第一数据标识orderA,然后基于orderA生成第二数据索引operating_coupon_orderA,然后通过该第二数据索引查询数据存储中间件Redis,由于订单数据还未到达,因此此时不会从Redis中查询到相关结果,所以本服务器会基于第一数据标识生成第一数据索引prepare_operate_coupon_orderA,并以key-value的形式将第一数据索引和券号coupon1存入Redis,如(prepare_operate_coupon_orderA-coupon1)。
后续第二促销数据到达时,本服务器执行上述流程可以确定订单数据未到达,因此会增量更新第一数据索引对应的value值,结果比如是(prepare_operate_coupon_orderA-coupon1,coupon2)。
最后当订单数据到达时,本服务器获取其第一数据标识orderA,并基于orderA生成第一数据索引prepare_operate_coupon_orderA,然后通过该第一数据索引查询数据存储中间件Redis,此时可得到券号coupon1和coupon2,查询得到的券号与订单数据包括的券号是一致的,这说明该订单数据对应的所有促销数据都到达了,因此可以执行关联处理,关联处理的过程如上所述,在此不再赘述。
对于上述第3种情况,本服务器的执行流程可以如下:
假设本服务器先接收到第一促销数据,本服务器会将该第一促销数据存入数据存储中间件Redis,并获取第一促销数据中的第二数据标识coupon1及其对应的第一数据标识orderA,然后基于orderA生成第二数据索引operating_coupon_orderA,然后通过该第二数据索引查询数据存储中间件Redis,由于订单数据还未到达,因此此时不会从Redis中查询到相关结果,所以本服务器会基于第一数据标识生成第一数据索引prepare_operate_coupon_orderA,并以key-value的形式将第一数据索引和券号coupon1存入Redis,如(prepare_operate_coupon_orderA-coupon1)。
后续本服务器接收到了订单数据,将其存入redis并获得其中的第一数据标识orderA和券号coupon1和coupon2,并基于第一数据标识orderA生成第一数据索引prepare_operate_coupon_orderA,通过第一数据索引可以从Redis中查询得到券号coupon1,由于订单数据包括的第二数据标识不同于第一数据索引对应的第二数据标识,这说明此时还有其他促销数据没有到达,因此,本服务器取订单数据包括的第二数据标识(即券号coupon1和coupon2),以及第一数据索引对应的第二数据标识(即券号coupon1)之间的补集数据,可以得到券号coupon2,然后基于第一数据标识orderA生成第二数据索引operating_coupon_orderA,然后以key-value的形式将第二数据索引和券号coupon2存入Redis,如(operating_coupon_orderA-coupon2)。
当第二促销数据到达时,本服务器获取其中的第二数据标识,即券号coupon2及其对应的第一数据标识orderA,基于第一数据标识生成第二数据索引operating_coupon_orderA,查询Redis可获得与其对应的第二数据标识为券号coupon2,此时第二促销数据包括的券号coupon2与第二数据索引对应的第二数据标识券号coupon2相同,说明订单数据对应的所有促销数据都到达了,因此可以进行关联处理,关联处理的过程如上所述,在此不再赘述。
在一个实施例中,如图3所示,提供了一种多数据流处理装置,包括以下模块:
流式数据接收模块110,用于持续接收来自流处理平台的第一流式数据和第二流式数据,任一个第一流式数据对应0个第二流式数据或至少一个第二流式数据,任一个第二流式数据对应一个第一流式数据;
第一数据处理模块120,用于在接收到任一个对应有第二流式数据的第一流式数据后,若确定与其对应的所有第二流式数据已全部接收到,则对该任一个对应有第二流式数据的第一流式数据以及与其对应的所有第二流式数据进行关联处理,在关联处理后得到的关联数据满足预设条件时,将该任一个对应有第二流式数据的第一流式数据存入数据库;
第二数据处理模块130,用于在接收到任一个第二流式数据后,若确定与其对应的目标第一流式数据已接收到,且与目标第一流式数据对应的所有第二流式数据已全部接收到,则对目标第一流式数据以及与其对应的所有第二流式数据进行关联处理,在关联处理后得到的关联数据满足预设条件时,将目标第一流式数据存入数据库。
在一个实施例中,第一数据处理模块,包括以下子模块:
第一标识获取子模块,用于获取该任一个对应有第二流式数据的第一流式数据包括的第一数据标识;
第二标识确定子模块,用于确定该第一数据标识对应的第二数据标识,该第一数据标识对应的第二数据标识的数量为N,N为大于0正整数;
第一索引生成子模块,用于根据该第一数据标识生成第一数据索引;
查询子模块,用于查询数据存储中间件中与第一数据索引对应的第二数据标识,第一数据索引对应的第二数据标识的数量为M,M为大于0正整数;
确定子模块,用于在该第一数据标识对应的第二数据标识与第一数据索引对应的第二数据标识相同时,确定与该任一个对应有第二流式数据的第一流式数据对应的所有第二流式数据已全部接收到;以及在该第一数据标识对应的第二数据标识与第一数据索引对应的第二数据标识不相同时,确定与该任一个对应有第二流式数据的第一流式数据对应的所有第二流式数据没有全部接收到。
在一个实施例中,第一数据处理模块,还包括以下子模块:
补集数据确定子模块,用于确定该第一数据标识对应的第二数据标识与第一数据索引对应的第二数据标识之间的补集数据;
第二索引生成子模块,用于根据该第一数据标识生成第二数据索引;
存储子模块,用于将第二数据索引与补集数据存入数据存储中间件。
在一个实施例中,第二数据处理模块,包括以下子模块:
数据标识确定子模块,用于确定该任一个第二流式数据对应的第二数据标识,以及该第二数据标识对应的目标第一数据标识;
第二索引生成子模块,用于根据该第二数据标识对应的目标第一数据标识生成第二数据索引;
查询子模块,用于通过第二数据索引查询数据存储中间件;
第一确定子模块,用于在数据存储中间件中存有与第二数据索引对应的第二数据标识时,确定与该任一个第二流式数据对应的目标第一流式数据已接收到;以及在数据存储中间件中不存有与第二数据索引对应的第二数据标识时,确定与该任一个第二流式数据对应的目标第一流式数据没有接收到。
在一个实施例中,第二数据处理模块还包括:
判断子模块,用于在数据存储中间件中存有与第二数据索引对应的第二数据标识时,确定该第二数据标识与第二数据索引对应的第二数据标识是否相同;
第二确定子模块,用于在确定该第二数据标识与第二数据索引对应的第二数据标识相同时,确定与目标第一流式数据对应的所有第二流式数据已全部接收到;以及在确定该第二数据标识与第二数据索引对应的第二数据标识不相同时,确定与目标第一流式数据对应的所有第二流式数据没有全部接收到;
在一个实施例中,第二数据处理模块还包括:
第一索引生成子模块,用于在数据存储中间件中不存有与第二数据索引对应的第二数据标识时,根据目标第一数据标识生成第一数据索引;
存储子模块,用于将第一数据索引与该任一个第二流式数据对应的第二数据标识存入数据存储中间件。
第二数据处理模块还包括:
数据标识更新子模块,用于根据该第二数据标识更新数据存储中间件中与该第二数据索引对应的第二数据标识。
在一个实施例中,第一数据处理模块还包括:
第一金额确定子模块,用于确定该任一个对应有第二流式数据的第一流式数据所对应的第一金额;
第二金额确定子模块,用于确定各个第二流式数据对应的第二金额;
关联处理子模块,用于根据该第一金额以及各个第二流式数据对应的第二金额获得该任一个对应有第二流式数据的第一流式数据所对应的第三金额,该第三金额为关联处理后的关联数据;
在一个实施例中,第二数据处理模块还包括:
第一金额确定子模块,用于确定目标第一流式数据对应的第一金额;
第二金额确定子模块,用于确定与目标第一流式数据对应的各个第二流式数据所对应的第二金额;
关联处理子模块,用于根据目标第一流式数据对应的第一金额,及其对应的各个第二流式数据所对应的第二金额获得目标第一流式数据对应的第三金额,该第三金额为关联处理后的关联数据。
关于多数据流处理装置的具体限定可以参见上文中对于多数据流处理方法的限定,在此不再赘述。上述多数据流处理装置中的各个模块可全部或部分通过软件、硬件及其组合来实现。上述各模块可以硬件形式内嵌于或独立于计算机设备中的处理器中,也可以以软件形式存储于计算机设备中的存储器中,以便于处理器调用执行以上各个模块对应的操作。
在一个实施例中,提供了一种计算机设备,其内部结构图可以如图4所示。该计算机设备包括通过系统总线连接的处理器、存储器、网络接口和数据库。其中,该计算机设备的处理器用于提供计算和控制能力。该计算机设备的存储器包括非易失性存储介质、内存储器。该非易失性存储介质存储有操作系统、计算机程序和数据库。该内存储器为非易失性存储介质中的操作系统和计算机程序的运行提供环境。该计算机设备的网络接口用于与外部的终端通过网络连接通信。该计算机程序被处理器执行时以实现一种多数据流处理方法。
本领域技术人员可以理解,图4中示出的结构,仅仅是与本申请方案相关的部分结构的框图,并不构成对本申请方案所应用于其上的计算机设备的限定,具体的计算机设备可以包括比图中所示更多或更少的部件,或者组合某些部件,或者具有不同的部件布置。
在一个实施例中,提供了一种计算机设备,包括存储器、处理器及存储在存储器上并可在处理器上运行的计算机程序,处理器执行计算机程序时实现以下步骤:
持续接收来自流处理平台的第一流式数据和第二流式数据,任一个第一流式数据对应0个第二流式数据或至少一个第二流式数据,任一个第二流式数据对应一个第一流式数据;在接收到任一个对应有第二流式数据的第一流式数据后,若确定与其对应的所有第二流式数据已全部接收到,则对该任一个对应有第二流式数据的第一流式数据以及与其对应的所有第二流式数据进行关联处理,在关联处理后得到的关联数据满足预设条件时,将该任一个对应有第二流式数据的第一流式数据存入数据库;在接收到任一个第二流式数据后,若确定与其对应的目标第一流式数据已接收到,且与目标第一流式数据对应的所有第二流式数据已全部接收到,则对目标第一流式数据以及与其对应的所有第二流式数据进行关联处理,在关联处理后得到的关联数据满足预设条件时,将目标第一流式数据存入数据库。
在一个实施例中,处理器执行计算机程序,实现对该任一个对应有第二流式数据的第一流式数据以及与其对应的所有第二流式数据进行关联处理的步骤之前,还实现以下步骤:
获取该任一个对应有第二流式数据的第一流式数据包括的第一数据标识;确定该第一数据标识对应的第二数据标识,该第一数据标识对应的第二数据标识的数量为N,N为大于0正整数;根据该第一数据标识生成第一数据索引;查询数据存储中间件中与第一数据索引对应的第二数据标识,第一数据索引对应的第二数据标识的数量为M,M为大于0正整数;若该第一数据标识对应的第二数据标识与第一数据索引对应的第二数据标识相同,确定与该任一个对应有第二流式数据的第一流式数据对应的所有第二流式数据已全部接收到;若该第一数据标识对应的第二数据标识与第一数据索引对应的第二数据标识不相同,确定与该任一个对应有第二流式数据的第一流式数据对应的所有第二流式数据没有全部接收到。
在一个实施例中,处理器执行计算机程序,实现确定与该任一个对应有第二流式数据的第一流式数据对应的所有第二流式数据没有全部接收到的步骤之后,还实现以下步骤:
确定该第一数据标识对应的第二数据标识与第一数据索引对应的第二数据标识之间的补集数据;根据该第一数据标识生成第二数据索引;将第二数据索引与补集数据存入数据存储中间件。
在一个实施例中,处理器执行计算机程序,实现对目标第一流式数据以及与其对应的所有第二流式数据进行关联处理的步骤之前,还实现以下步骤:
确定该任一个第二流式数据对应的第二数据标识,以及该第二数据标识对应的目标第一数据标识;根据该第二数据标识对应的目标第一数据标识生成第二数据索引;通过第二数据索引查询数据存储中间件;若数据存储中间件中存有与第二数据索引对应的第二数据标识,确定与该任一个第二流式数据对应的目标第一流式数据已接收到;若数据存储中间件中不存有与第二数据索引对应的第二数据标识,确定与该任一个第二流式数据对应的目标第一流式数据没有接收到。
在一个实施例中,处理器执行计算机程序,还实现以下步骤:
若数据存储中间件中存有与第二数据索引对应的第二数据标识,确定该第二数据标识与第二数据索引对应的第二数据标识是否相同;在确定该第二数据标识与第二数据索引对应的第二数据标识相同时,确定与目标第一流式数据对应的所有第二流式数据已全部接收到;在确定该第二数据标识与第二数据索引对应的第二数据标识不相同时,确定与目标第一流式数据对应的所有第二流式数据没有全部接收到。
在一个实施例中,处理器执行计算机程序,还实现以下步骤:
若数据存储中间件中不存有与第二数据索引对应的第二数据标识,根据目标第一数据标识生成第一数据索引;将第一数据索引与该任一个第二流式数据对应的第二数据标识存入数据存储中间件。
在一个实施例中,处理器执行计算机程序,实现确定与目标第一流式数据对应的所有第二流式数据没有全部接收到的步骤之后,还实现以下步骤:
根据该第二数据标识更新数据存储中间件中与该第二数据索引对应的第二数据标识。
在一个实施例中,处理器执行计算机程序时,实现对该任一个对应有第二流式数据的第一流式数据以及与其对应的所有第二流式数据进行关联处理的步骤时,还实现以下步骤:
确定该任一个对应有第二流式数据的第一流式数据所对应的第一金额;确定各个第二流式数据对应的第二金额;根据该第一金额以及各个第二流式数据对应的第二金额获得该任一个对应有第二流式数据的第一流式数据所对应的第三金额,该第三金额为关联处理后的关联数据。
在一个实施例中,处理器执行计算机程序时,实现对该目标第一流式数据以及与其对应的所有第二流式数据进行关联处理的步骤时,还实现以下步骤:
确定目标第一流式数据对应的第一金额;确定与目标第一流式数据对应的各个第二流式数据所对应的第二金额;根据目标第一流式数据对应的第一金额,及其对应的各个第二流式数据所对应的第二金额获得目标第一流式数据对应的第三金额,该第三金额为关联处理后的关联数据。
在一个实施例中,提供了一种计算机可读存储介质,其上存储有计算机程序,计算机程序被处理器执行时实现以下步骤:
持续接收来自流处理平台的第一流式数据和第二流式数据,任一个第一流式数据对应0个第二流式数据或至少一个第二流式数据,任一个第二流式数据对应一个第一流式数据;在接收到任一个对应有第二流式数据的第一流式数据后,若确定与其对应的所有第二流式数据已全部接收到,则对该任一个对应有第二流式数据的第一流式数据以及与其对应的所有第二流式数据进行关联处理,在关联处理后得到的关联数据满足预设条件时,将该任一个对应有第二流式数据的第一流式数据存入数据库;在接收到任一个第二流式数据后,若确定与其对应的目标第一流式数据已接收到,且与目标第一流式数据对应的所有第二流式数据已全部接收到,则对目标第一流式数据以及与其对应的所有第二流式数据进行关联处理,在关联处理后得到的关联数据满足预设条件时,将目标第一流式数据存入数据库。
在一个实施例中,计算机程序被处理器执行,对该任一个对应有第二流式数据的第一流式数据以及与其对应的所有第二流式数据进行关联处理的步骤之前,还实现以下步骤:
获取该任一个对应有第二流式数据的第一流式数据包括的第一数据标识;确定该第一数据标识对应的第二数据标识,该第一数据标识对应的第二数据标识的数量为N,N为大于0正整数;根据该第一数据标识生成第一数据索引;查询数据存储中间件中与第一数据索引对应的第二数据标识,第一数据索引对应的第二数据标识的数量为M,M为大于0正整数;若该第一数据标识对应的第二数据标识与第一数据索引对应的第二数据标识相同,确定与该任一个对应有第二流式数据的第一流式数据对应的所有第二流式数据已全部接收到;若该第一数据标识对应的第二数据标识与第一数据索引对应的第二数据标识不相同,确定与该任一个对应有第二流式数据的第一流式数据对应的所有第二流式数据没有全部接收到。
在一个实施例中,计算机程序被处理器执行,确定与该任一个对应有第二流式数据的第一流式数据对应的所有第二流式数据没有全部接收到的步骤之后,还实现以下步骤:
确定该第一数据标识对应的第二数据标识与第一数据索引对应的第二数据标识之间的补集数据;根据该第一数据标识生成第二数据索引;将第二数据索引与补集数据存入数据存储中间件。
在一个实施例中,计算机程序被处理器执行,对目标第一流式数据以及与其对应的所有第二流式数据进行关联处理的步骤之前,还实现以下步骤:
确定该任一个第二流式数据对应的第二数据标识,以及该第二数据标识对应的目标第一数据标识;根据该第二数据标识对应的目标第一数据标识生成第二数据索引;通过第二数据索引查询数据存储中间件;若数据存储中间件中存有与第二数据索引对应的第二数据标识,确定与该任一个第二流式数据对应的目标第一流式数据已接收到;若数据存储中间件中不存有与第二数据索引对应的第二数据标识,确定与该任一个第二流式数据对应的目标第一流式数据没有接收到。
在一个实施例中,计算机程序被处理器执行,还实现以下步骤:
若数据存储中间件中存有与第二数据索引对应的第二数据标识,确定该第二数据标识与第二数据索引对应的第二数据标识是否相同;在确定该第二数据标识与第二数据索引对应的第二数据标识相同时,确定与目标第一流式数据对应的所有第二流式数据已全部接收到;在确定该第二数据标识与第二数据索引对应的第二数据标识不相同时,确定与目标第一流式数据对应的所有第二流式数据没有全部接收到。
在一个实施例中,计算机程序被处理器执行,还实现以下步骤:
若数据存储中间件中不存有与第二数据索引对应的第二数据标识,根据目标第一数据标识生成第一数据索引;将第一数据索引与该任一个第二流式数据对应的第二数据标识存入数据存储中间件。
在一个实施例中,计算机程序被处理器执行时,确定与目标第一流式数据对应的所有第二流式数据没有全部接收到的步骤之后,还实现以下步骤:
根据该第二数据标识更新数据存储中间件中与该第二数据索引对应的第二数据标识。
在一个实施例中,计算机程序被处理器执行时,对该任一个对应有第二流式数据的第一流式数据以及与其对应的所有第二流式数据进行关联处理的步骤时,还实现以下步骤:
确定该任一个对应有第二流式数据的第一流式数据所对应的第一金额;确定各个第二流式数据对应的第二金额;根据该第一金额以及各个第二流式数据对应的第二金额获得该任一个对应有第二流式数据的第一流式数据所对应的第三金额,该第三金额为关联处理后的关联数据。
在一个实施例中,计算机程序被处理器执行时,对该目标第一流式数据以及与其对应的所有第二流式数据进行关联处理的步骤时,还实现以下步骤:
确定目标第一流式数据对应的第一金额;确定与目标第一流式数据对应的各个第二流式数据所对应的第二金额;根据目标第一流式数据对应的第一金额,及其对应的各个第二流式数据所对应的第二金额获得目标第一流式数据对应的第三金额,该第三金额为关联处理后的关联数据。
本领域普通技术人员可以理解实现上述实施例方法中的全部或部分流程,是可以通过计算机程序来指令相关的硬件来完成,所述的计算机程序可存储于一非易失性计算机可读取存储介质中,该计算机程序在执行时,可包括如上述各方法的实施例的流程。其中,本申请所提供的各实施例中所使用的对存储器、存储、数据库或其它介质的任何引用,均可包括非易失性和/或易失性存储器。非易失性存储器可包括只读存储器(ROM)、可编程ROM(PROM)、电可编程ROM(EPROM)、电可擦除可编程ROM(EEPROM)或闪存。易失性存储器可包括随机存取存储器(RAM)或者外部高速缓冲存储器。作为说明而非局限,RAM以多种形式可得,诸如静态RAM(SRAM)、动态RAM(DRAM)、同步DRAM(SDRAM)、双数据率SDRAM(DDRSDRAM)、增强型SDRAM(ESDRAM)、同步链路(Synchlink)DRAM(SLDRAM)、存储器总线(Rambus)直接RAM(RDRAM)、直接存储器总线动态RAM(DRDRAM)、以及存储器总线动态RAM(RDRAM)等。
以上实施例的各技术特征可以进行任意的组合,为使描述简洁,未对上述实施例中的各个技术特征所有可能的组合都进行描述,然而,只要这些技术特征的组合不存在矛盾,都应当认为是本说明书记载的范围。
以上所述实施例仅表达了本申请的几种实施方式,其描述较为具体和详细,但并不能因此而理解为对发明专利范围的限制。应当指出的是,对于本领域的普通技术人员来说,在不脱离本申请构思的前提下,还可以做出若干变形和改进,这些都属于本申请的保护范围。因此,本申请专利的保护范围应以所附权利要求为准。

Claims (9)

1.一种多数据流处理方法,其特征在于,包括:
持续接收来自流处理平台的第一流式数据和第二流式数据,任一个第一流式数据对应0个第二流式数据或至少一个第二流式数据,任一个第二流式数据对应一个第一流式数据;
在接收到任一个对应有第二流式数据的第一流式数据后,若确定与其对应的所有第二流式数据已全部接收到,则对所述任一个对应有第二流式数据的第一流式数据以及与其对应的所有第二流式数据进行关联处理,在关联处理后得到的关联数据满足预设条件时,将所述任一个对应有第二流式数据的第一流式数据存入数据库;
在接收到任一个第二流式数据后,若确定与其对应的目标第一流式数据已接收到,且与所述目标第一流式数据对应的所有第二流式数据已全部接收到,则对所述目标第一流式数据以及与其对应的所有第二流式数据进行关联处理,在关联处理后得到的关联数据满足预设条件时,将所述目标第一流式数据存入数据库;
其中,所述对所述任一个对应有第二流式数据的第一流式数据以及与其对应的所有第二流式数据进行关联处理的步骤之前,包括:
获取所述任一个对应有第二流式数据的第一流式数据包括的第一数据标识;
确定所述第一数据标识对应的第二数据标识,所述第一数据标识对应的所述第二数据标识的数量为N,N为大于0正整数;
根据所述第一数据标识生成第一数据索引;
查询数据存储中间件中与所述第一数据索引对应的第二数据标识,所述第一数据索引对应的第二数据标识的数量为M,M为大于0正整数;
若所述第一数据标识对应的第二数据标识与所述第一数据索引对应的第二数据标识相同,确定与所述任一个对应有第二流式数据的第一流式数据对应的所有第二流式数据已全部接收到;
若所述第一数据标识对应的第二数据标识与所述第一数据索引对应的第二数据标识不相同,确定与所述任一个对应有第二流式数据的第一流式数据对应的所有第二流式数据没有全部接收到。
2.如权利要求1所述的多数据流处理方法,其特征在于,所述确定与所述任一个对应有第二流式数据的第一流式数据对应的所有第二流式数据没有全部接收到的步骤之后,还包括:
确定所述第一数据标识对应的第二数据标识与所述第一数据索引对应的第二数据标识之间的补集数据;
根据所述第一数据标识生成第二数据索引;
将所述第二数据索引与所述补集数据存入所述数据存储中间件。
3.如权利要求1所述的多数据流处理方法,其特征在于,所述对所述目标第一流式数据以及与其对应的所有第二流式数据进行关联处理的步骤之前,包括:
确定所述任一个第二流式数据对应的第二数据标识,以及所述第二数据标识对应的目标第一数据标识;
根据所述第二数据标识对应的目标第一数据标识生成第二数据索引;
通过所述第二数据索引查询数据存储中间件;
若所述数据存储中间件中存有与所述第二数据索引对应的第二数据标识,确定与所述任一个第二流式数据对应的目标第一流式数据已接收到;
若所述数据存储中间件中不存有与所述第二数据索引对应的第二数据标识,确定与所述任一个第二流式数据对应的目标第一流式数据没有接收到。
4.如权利要求3所述的多数据流处理方法,其特征在于,还包括:
若所述数据存储中间件中存有与所述第二数据索引对应的第二数据标识,确定所述第二数据标识与所述第二数据索引对应的第二数据标识是否相同;
在确定所述第二数据标识与所述第二数据索引对应的第二数据标识相同时,确定与所述目标第一流式数据对应的所有第二流式数据已全部接收到;
在确定所述第二数据标识与所述第二数据索引对应的第二数据标识不相同时,确定与所述目标第一流式数据对应的所有第二流式数据没有全部接收到;
其中,所述方法还包括:
若所述数据存储中间件中不存有与所述第二数据索引对应的第二数据标识,根据所述目标第一数据标识生成第一数据索引;
将所述第一数据索引与所述任一个第二流式数据对应的第二数据标识存入所述数据存储中间件。
5.如权利要求4所述的多数据流处理方法,其特征在于,所述确定与所述目标第一流式数据对应的所有第二流式数据没有全部接收到的步骤之后,还包括:
根据所述第二数据标识更新所述数据存储中间件中与所述第二数据索引对应的第二数据标识。
6.如权利要求1所述的多数据流处理方法,其特征在于,
对所述任一个对应有第二流式数据的第一流式数据以及与其对应的所有第二流式数据进行关联处理的步骤,包括:
确定所述任一个对应有第二流式数据的第一流式数据所对应的第一金额;
确定各个第二流式数据对应的第二金额;
根据所述第一金额以及各个第二流式数据对应的第二金额获得所述任一个对应有第二流式数据的第一流式数据所对应的第三金额,所述第三金额为关联处理后的关联数据;
其中,所述对所述目标第一流式数据以及与其对应的所有第二流式数据进行关联处理的步骤,包括:
确定所述目标第一流式数据对应的第一金额;
确定与所述目标第一流式数据对应的各个所述第二流式数据所对应的第二金额;
根据所述目标第一流式数据对应的第一金额,及其对应的各个所述第二流式数据所对应的第二金额获得所述目标第一流式数据对应的第三金额,所述第三金额为关联处理后的关联数据。
7.一种实现权利要求1所述多数据流处理方法的装置,其特征在于,包括:
流式数据接收模块,用于持续接收来自流处理平台的第一流式数据和第二流式数据,任一个第一流式数据对应0个第二流式数据或至少一个第二流式数据,任一个第二流式数据对应一个第一流式数据;
第一数据处理模块,用于在接收到任一个对应有第二流式数据的第一流式数据后,若确定与其对应的所有第二流式数据已全部接收到,则对所述任一个对应有第二流式数据的第一流式数据以及与其对应的所有第二流式数据进行关联处理,在关联处理后得到的关联数据满足预设条件时,将所述任一个对应有第二流式数据的第一流式数据存入数据库;
第二数据处理模块,用于在接收到任一个第二流式数据后,若确定与其对应的目标第一流式数据已接收到,且与所述目标第一流式数据对应的所有第二流式数据已全部接收到,则对所述目标第一流式数据以及与其对应的所有第二流式数据进行关联处理,在关联处理后得到的关联数据满足预设条件时,将所述目标第一流式数据存入数据库。
8.一种计算机设备,包括存储器、处理器及存储在存储器上并可在处理器上运行的计算机程序,其特征在于,所述处理器执行所述计算机程序时实现权利要求1至6中任一项所述方法的步骤。
9.一种计算机可读存储介质,其上存储有计算机程序,其特征在于,所述计算机程序被处理器执行时实现权利要求1至6中任一项所述的方法的步骤。
CN202010825699.0A 2020-08-17 2020-08-17 多数据流处理方法、装置、计算机设备和存储介质 Active CN112115136B (zh)

Priority Applications (2)

Application Number Priority Date Filing Date Title
CN202010825699.0A CN112115136B (zh) 2020-08-17 2020-08-17 多数据流处理方法、装置、计算机设备和存储介质
CA3128347A CA3128347A1 (en) 2020-08-17 2021-08-16 Multi-data-stream processing method, apparutus, computer device and storage medium

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN202010825699.0A CN112115136B (zh) 2020-08-17 2020-08-17 多数据流处理方法、装置、计算机设备和存储介质

Publications (2)

Publication Number Publication Date
CN112115136A CN112115136A (zh) 2020-12-22
CN112115136B true CN112115136B (zh) 2022-11-15

Family

ID=73804983

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202010825699.0A Active CN112115136B (zh) 2020-08-17 2020-08-17 多数据流处理方法、装置、计算机设备和存储介质

Country Status (2)

Country Link
CN (1) CN112115136B (zh)
CA (1) CA3128347A1 (zh)

Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20120330988A1 (en) * 2011-06-24 2012-12-27 Douglass Adam Christie Systems And Methods For Performing Index Joins Using Auto Generative Queries
CN107679173A (zh) * 2017-09-29 2018-02-09 苏宁云商集团股份有限公司 一种实时数据处理方法及装置
CN109614417A (zh) * 2018-10-30 2019-04-12 北京奇艺世纪科技有限公司 基于数据流的报表指标的显示方法、装置及终端

Patent Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20120330988A1 (en) * 2011-06-24 2012-12-27 Douglass Adam Christie Systems And Methods For Performing Index Joins Using Auto Generative Queries
CN107679173A (zh) * 2017-09-29 2018-02-09 苏宁云商集团股份有限公司 一种实时数据处理方法及装置
CN109614417A (zh) * 2018-10-30 2019-04-12 北京奇艺世纪科技有限公司 基于数据流的报表指标的显示方法、装置及终端

Also Published As

Publication number Publication date
CN112115136A (zh) 2020-12-22
CA3128347A1 (en) 2022-02-17

Similar Documents

Publication Publication Date Title
CN109474578B (zh) 报文消息校验方法、装置、计算机设备和存储介质
US8965914B2 (en) Grouping identity records to generate candidate lists to use in an entity and relationship resolution process
US11251966B2 (en) Sending cross-chain authenticatable messages
CN107038182B (zh) 分表数据的完备性检查方法及装置
CN107633016B (zh) 数据处理方法及装置和电子设备
CN109614209B (zh) 一种任务处理方法、应用服务器及系统
CN105243169B (zh) 一种数据查询方法及系统
CN110968478B (zh) 日志采集方法、服务器及计算机存储介质
CN109903034B (zh) 规则匹配方法、装置、计算机可读存储介质和计算机设备
CN110855477A (zh) 链路日志监控方法、装置、计算机设备和存储介质
CN110795171A (zh) 业务数据处理方法、装置、计算机设备及存储介质
CN113760976B (zh) 业务的处理方法、装置、设备及存储介质
CN110673933A (zh) 基于ZooKeeper的分布式异步队列实现方法、装置、设备及介质
CN113283987A (zh) 业务处理方法、装置、区块链网关、区块链节点及存储介质
CN111177121A (zh) 订单数据反馈方法、装置、计算机设备及存储介质
CN107066522B (zh) 数据库的访问方法和装置
CN111311360A (zh) 资源的退还方法和装置、存储介质、电子装置
CN108984754B (zh) 客户信息更新方法、装置、计算机设备及存储介质
CN112115136B (zh) 多数据流处理方法、装置、计算机设备和存储介质
CN110188081B (zh) 基于cassandra数据库的日志数据存储方法、装置和计算机设备
CN110765131A (zh) 货源数据的数据压缩方法、装置、计算机设备和存储介质
CN109857629B (zh) 一种扫描检测方法及装置
CN116150273A (zh) 数据处理方法、装置、计算机设备及存储介质
US20130018911A1 (en) Variable-Length Nonce Generation
CN113760353A (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
GR01 Patent grant
GR01 Patent grant