CN113760870A - 业务数据的处理方法、装置及设备 - Google Patents
业务数据的处理方法、装置及设备 Download PDFInfo
- Publication number
- CN113760870A CN113760870A CN202010522229.7A CN202010522229A CN113760870A CN 113760870 A CN113760870 A CN 113760870A CN 202010522229 A CN202010522229 A CN 202010522229A CN 113760870 A CN113760870 A CN 113760870A
- Authority
- CN
- China
- Prior art keywords
- service
- service data
- data
- database
- processing
- 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
Links
- 238000012545 processing Methods 0.000 title claims abstract description 127
- 238000000034 method Methods 0.000 title claims abstract description 72
- 238000012790 confirmation Methods 0.000 claims description 12
- 238000012795 verification Methods 0.000 claims description 9
- 230000008569 process Effects 0.000 abstract description 15
- 238000010586 diagram Methods 0.000 description 16
- 238000007781 pre-processing Methods 0.000 description 9
- 238000004590 computer program Methods 0.000 description 5
- 230000006870 function Effects 0.000 description 5
- 238000004891 communication Methods 0.000 description 3
- 230000008878 coupling Effects 0.000 description 3
- 238000010168 coupling process Methods 0.000 description 3
- 238000005859 coupling reaction Methods 0.000 description 3
- 230000007246 mechanism Effects 0.000 description 3
- 230000003287 optical effect Effects 0.000 description 3
- 238000004364 calculation method Methods 0.000 description 2
- 230000000694 effects Effects 0.000 description 2
- 230000005540 biological transmission Effects 0.000 description 1
- 238000013461 design Methods 0.000 description 1
- 238000012986 modification Methods 0.000 description 1
- 230000004048 modification Effects 0.000 description 1
- 230000002093 peripheral effect Effects 0.000 description 1
- 230000002085 persistent effect Effects 0.000 description 1
- ZLIBICFPKPWGIZ-UHFFFAOYSA-N pyrimethanil Chemical compound CC1=CC(C)=NC(NC=2C=CC=CC=2)=N1 ZLIBICFPKPWGIZ-UHFFFAOYSA-N 0.000 description 1
- 238000011084 recovery Methods 0.000 description 1
- 230000003068 static effect Effects 0.000 description 1
- 238000006467 substitution reaction Methods 0.000 description 1
- 230000000007 visual effect Effects 0.000 description 1
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/20—Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
- G06F16/21—Design, administration or maintenance of databases
- G06F16/215—Improving data quality; Data cleansing, e.g. de-duplication, removing invalid entries or correcting typographical errors
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/20—Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
- G06F16/23—Updating
- G06F16/2365—Ensuring data consistency and integrity
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements 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/46—Multiprogramming arrangements
- G06F9/54—Interprogram communication
- G06F9/546—Message passing systems or structures, e.g. queues
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2209/00—Indexing scheme relating to G06F9/00
- G06F2209/54—Indexing scheme relating to G06F9/54
- G06F2209/548—Queue
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Databases & Information Systems (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Data Mining & Analysis (AREA)
- Software Systems (AREA)
- Computer Security & Cryptography (AREA)
- Quality & Reliability (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
本发明实施例提供一种业务数据的处理方法、装置及设备,该方法包括:获取待处理的第一业务数据,确定第一业务数据中的业务关键字,并根据该业务关键字确定第一业务数据是否已被统计,在确定第一业务数据未被统计时,对第一业务数据进行统计处理,得到统计结果,并将统计结果存储至第一数据库中。在上述数据处理过程中,只有在确定第一业务数据未被统计时,才对第一业务数据进行统计处理,实现了在业务层面上的数据幂等性,避免了对重复的业务数据进行重复统计处理,保证了端到端数据的一致性。
Description
技术领域
本发明实施例涉及大数据技术领域,尤其涉及一种业务数据的处理方法、装置及设备。
背景技术
在一些业务场景下,需要对大数据的实时累计值进行统计并展示。以电商领域为例,电商平台需要对订单数量、订单金额、商品销量等数据进行实时统计,并对统计结果进行展示,以及时了解销售情况。
现有技术中,业务数据由各业务系统产生,业务系统产生业务数据之后,业务数据需要在多个节点之间传递和处理,最终处理结果提交至数据库中,供显示大屏进行显示。
在实现本发明过程中,发明人发现现有技术中至少存在如下问题:上述业务数据处理过程中,可能会存在端到端数据不一致的问题。例如,可能会对某些订单进行重复统计,导致展示的订单统计结果与业务系统实际产生的订单情况并不一致。
发明内容
本发明实施例提供一种业务数据的处理方法、装置及设备,能够避免对重复的业务数据进行重复处理,从而保证端到端数据一致性。
第一方面,本发明实施例提供一种业务数据的处理方法,包括:
获取待处理的第一业务数据;
确定所述第一业务数据中的业务关键字,并根据所述业务关键字确定所述第一业务数据是否已被统计;
在确定所述第一业务数据未被统计时,对所述第一业务数据进行统计处理,得到统计结果;
将所述统计结果存储至第一数据库中。
一种可能的实现方式中,根据所述业务关键字确定所述第一业务数据是否已被统计,包括:
判断第二数据库中是否存在所述业务关键字,所述第二数据库用于存储已被统计的业务数据中的业务关键字;
若所述第二数据库中存在所述业务关键字,则确定所述第一业务数据已被统计;
若所述第二数据库中不存在所述业务关键字,则确定所述第一业务数据未被统计。
一种可能的实现方式中,确定所述第一业务数据中的业务关键字,包括:
确定所述第一业务数据对应的业务类型;
根据所述业务类型以及预设对应关系,确定所述第一业务数据中的业务关键字,其中,所述预设对应关系用于指示不同业务类型与不同业务关键字之间的对应关系。
一种可能的实现方式中,根据所述业务关键字确定所述第一业务数据是否已被统计之前,还包括:
根据所述业务类型,获取所述业务类型对应的处理方式,所述处理方式包括解析方式和/或校验方式;
根据所述处理方式,对所述第一业务数据进行解析处理和/或校验处理。
一种可能的实现方式中,所述方法应用于采用分布式流处理框架Flink的服务器,将所述统计结果存储至第一数据库中,包括:
通过所述Flink将所述统计结果存储至所述第一数据库中,并根据所述统计结果生成检查点信息,所述检查点信息用于在所述Flink故障时根据所述检查点信息恢复数据。
一种可能的实现方式中,通过所述Flink将所述统计结果存储至所述第一数据库中,并根据所述统计结果生成检查点信息,包括:
向所述Flink和所述第一数据库发送预提交请求;
在从所述Flink接收到预提交确认消息,以及从所述第一数据库接收到预提交确认消息后,向所述Flink和所述第一数据库发送提交请求,使得所述Flink将所述统计结果存储至所述第一数据库中,并根据所述统计结果生成检查点信息。
一种可能的实现方式中,获取待处理的第一业务数据,包括:
通过所述Flink从Kafka消息队列中获取第一消息,所述第一消息包括所述第一业务数据,所述Kafka消息队列用于存储从各业务系统服务器产生的消息,所述Kafka消息队列中不存在重复消息。
一种可能的实现方式中,对所述第一业务数据进行统计处理,得到统计结果,包括:
获取统计频度信息,并将所述第一业务数据加入与所述统计频度信息对应的缓存队列中;
根据所述统计频度信息,对所述缓存队列中的业务数据进行统计处理,得到所述统计结果。
第二方面,本发明实施例提供一种业务数据的处理装置,包括:
获取模块,用于获取待处理的第一业务数据;
处理模块,用于确定所述第一业务数据中的业务关键字,并根据所述业务关键字确定所述第一业务数据是否已被统计;
所述处理模块,还用于在确定所述第一业务数据未被统计时,对所述第一业务数据进行统计处理,得到统计结果;
提交模块,用于将所述统计结果存储至第一数据库中。
一种可能的实现方式中,所述处理模块具体用于:
判断第二数据库中是否存在所述业务关键字,所述第二数据库用于存储已被统计的业务数据中的业务关键字;
若所述第二数据库中存在所述业务关键字,则确定所述第一业务数据已被统计;
若所述第二数据库中不存在所述业务关键字,则确定所述第一业务数据未被统计。
一种可能的实现方式中,所述处理模块具体用于:
确定所述第一业务数据对应的业务类型;
根据所述业务类型以及预设对应关系,确定所述第一业务数据中的业务关键字,其中,所述预设对应关系用于指示不同业务类型与不同业务关键字之间的对应关系。
一种可能的实现方式中,所述处理模块还用于:
根据所述业务类型,获取所述业务类型对应的处理方式,所述处理方式包括解析方式和/或校验方式;
根据所述处理方式,对所述第一业务数据进行解析处理和/或校验处理。
一种可能的实现方式中,所述方法应用于采用分布式流处理框架Flink的服务器,所述提交模块具体用于:
通过所述Flink将所述统计结果存储至所述第一数据库中,并根据所述统计结果生成检查点信息,所述检查点信息用于在所述Flink故障时根据所述检查点信息恢复数据。
一种可能的实现方式中,所述提交模块具体用于:
向所述Flink和所述第一数据库发送预提交请求;
在从所述Flink接收到预提交确认消息,以及从所述第一数据库接收到预提交确认消息后,向所述Flink和所述第一数据库发送提交请求,使得所述Flink将所述统计结果存储至所述第一数据库中,并根据所述统计结果生成检查点信息。
一种可能的实现方式中,所述获取模块具体用于:
通过所述Flink从Kafka消息队列中获取第一消息,所述第一消息包括所述第一业务数据,所述Kafka消息队列用于存储从各业务系统服务器产生的消息,所述Kafka消息队列中不存在重复消息。
一种可能的实现方式中,所述处理模块具体用于:
获取统计频度信息,并将所述第一业务数据加入与所述统计频度信息对应的缓存队列中;
根据所述统计频度信息,对所述缓存队列中的业务数据进行统计处理,得到所述统计结果。
第三方面,本发明实施例提供一种电子设备,包括:存储器和处理器;
所述存储器用于存储计算机执行指令,所述处理器运行所述计算机执行指令实现如第一方面任一项所述的方法。
第四方面,本发明实施例提供一种计算机可读存储介质,所述计算机可读存储介质中存储有计算机执行指令,所述计算机执行指令被处理器执行时用于实现如第一方面任一项所述的方法。
本发明实施例提供的业务数据的处理方法、装置及设备,该方法包括:获取待处理的第一业务数据,确定第一业务数据中的业务关键字,并根据该业务关键字确定第一业务数据是否已被统计,在确定第一业务数据未被统计时,对第一业务数据进行统计处理,得到统计结果,并将统计结果存储至第一数据库中。在上述数据处理过程中,只有在确定第一业务数据未被统计时,才对第一业务数据进行统计处理,实现了在业务层面上的数据幂等性,避免了对重复的业务数据进行重复统计处理,保证了端到端数据的一致性。
附图说明
为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动性的前提下,还可以根据这些附图获得其他的附图。
图1为本发明实施例适用的一种可能的系统架构的示意图;
图2为本发明一个实施例提供的业务数据的处理方法的流程示意图;
图3为本发明实施例提供的第一业务数据的处理过程的示意图;
图4为本发明另一个实施例提供的业务数据的处理方法的流程示意图;
图5为本发明实施例提供的两阶段提交的示意图;
图6为本发明实施例提供的Flink容错机制的示意图;
图7为本发明实施例提供的组件架构示意图;
图8为本发明实施例提供的业务数据的处理系统的示意图;
图9为本发明一个实施例提供的业务数据的处理装置的结构示意图;
图10为本发明一个实施例提供的电子设备的结构示意图。
具体实施方式
下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
本发明的说明书和权利要求书及上述附图中的术语“第一”、“第二”、“第三”“第四”等(如果存在)是用于区别类似的对象,而不必用于描述特定的顺序或先后次序。应该理解这样使用的数据在适当情况下可以互换,以便这里描述的本发明的实施例例如能够以除了在这里图示或描述的那些以外的顺序实施。此外,术语“包括”和“具有”以及他们的任何变形,意图在于覆盖不排他的包含,例如,包含了一系列步骤或单元的过程、方法、系统、产品或设备不必限于清楚地列出的那些步骤或单元,而是可包括没有清楚地列出的或对于这些过程、方法、产品或设备固有的其它步骤或单元。
首先对本发明实施例中涉及的概念进行介绍。
幂等性:是指被执行多次造成的影响和只执行一次造成的影响相同。
Kafka:Kafka是一种分布式的,基于发布/订阅的消息系统,是由LinkedIn开发并开源的分布式消息系统,因其分布式及高吞吐率而被广泛使用。
Flink:是由Apache软件基金会开发的开源流处理框架,其核心是用Java和Scala编写的分布式流数据流引擎。Flink以数据并行和流水线方式执行。
Exactly once:对于一条消息,接收端确保只收到一次,exactly-once语义就是保证最后的数据处理的结果和数据摄入时没有数据的丢失与重复。
本发明实施例适用于大数据领域中需要对业务数据进行实时统计的业务场景。下面结合图1对本发明实施例可能的系统架构进行介绍。图1为本发明实施例适用的一种可能的系统架构的示意图。如图1所示,该系统架构包括业务系统服务器、消息发布订阅服务器、大数据处理服务器、以及数据库。
其中,各业务系统服务器作为服务端业务数据的来源,即,业务系统服务器可以获取到用户通过操作业务系统的客户端产生的业务数据。各个业务系统服务器与消息发布订阅服务器连接。各业务系统服务器将产生的业务数据发送至消息发布订阅服务器。大数据处理服务器也与消息发布订阅服务器连接,大数据处理服务器可以从消息订阅服务器订阅业务数据。
对于消息发布订阅服务器而言,各业务系统服务器作为业务数据的生产者,大数据处理服务器作为业务数据的消费者。这样,各业务系统服务器产生的业务数据,可以实时被传递至大数据处理服务器,以使大数据处理服务器对业务数据进行实时统计计算,得到统计结果。
进一步的,大数据处理服务器将统计结果提交至数据库中。数据库中的数据可以被显示大屏呈现。通过上述过程,实现了对业务数据的实时统计和展示。
结合图1,消息发布订阅服务器和大数据处理服务器由于需要接收和处理多个业务系统产生的业务数据,因此,消息发布订阅服务器和大数据处理服务器通常采用分布式的集群服务架构。
现有技术中,业务系统产生业务数据之后,业务数据需要在多个节点之间出传递和处理,最终提交至数据库中,供显示大屏进行展示。然而,上述业务数据处理过程中,由于业务数据需要在多个节点之间传递和处理,当出现网络故障、某个节点故障、程序故障等问题时,经常会导致节点之间消息的重复发送。例如,发送端发送某个业务数据后,可能由于网络延迟等原因,未及时接收到接收端的确认,发送端为了避免丢失业务数据,可能会对该业务数据重复发送。再例如,若某个节点出现故障,在其故障恢复后,也可能会对故障之前的一些业务数据进行重复处理,以尽量保证不丢失业务数据。
可见,上述业务数据的处理过程,不可避免的存在业务数据重复发送或重复处理的情况,导致端到端数据不一致的问题。例如,以订单业务为例,当存在某些订单被重复统计时,会导致最终展示的订单统计结果与业务系统实际产生的订单情况不一致。
本发明实施例提供的业务数据的处理方法,可以避免对业务数据的重复处理,保证端到端数据的一致性。
下面以具体地实施例对本发明的技术方案以及本发明的技术方案如何解决上述技术问题进行详细说明。下面这几个具体的实施例可以相互结合,对于相同或相似的概念或过程可能在某些实施例中不再赘述。下面将结合附图,对本发明的实施例进行描述。
图2为本发明一个实施例提供的业务数据的处理方法的流程示意图。本实施例的方法可以由图1中的大数据处理服务器执行。以第一业务数据的处理过程为例,图3为本发明实施例提供的第一业务数据的处理过程的示意图。如图2和图3所示,本实施例的方法包括:
S201:获取待处理的第一业务数据。
其中,第一业务数据可以是大数据处理服务器接收到的任意一个业务数据。
可选的,获取到第一业务数据之后,可以对第一业务数据进行预处理。其中,预处理包括但不限于:解析处理、校验处理等。其中,解析处理用于对业务数据进行解析,得到业务数据中的各字段信息。校验处理用于对业务数据中的各字段信息进行校验,例如:针对某些字段进行非空校验,针对某些字段进行取值范围校验,等。
实际应用场景中,可以包括多种业务类型的业务数据。针对不同业务类型的业务数据,可以采用不同的预处理方式。一种可能的实施方式中,如图3所示,可以根据第一业务数据对应的业务类型,获取该业务类型对应的处理方式,所述处理方式包括解析方式和/或校验方式;根据所述处理方式,对所述第一业务数据进行解析处理和/或校验处理。
可选的,不同业务类型对应的预处理方式可能存在交集。为了方便对预处理方式进行复用,本实施例中,可以事先针对各个业务场景的预处理需求进行总结归纳,确定出基础预处理方式和扩展预处理方式。针对基础预处理方式,提供基础组件,针对扩展预处理方式,提供可扩展组件。进而,建立业务类型与基础组件和可扩展组件之间的对应关系。这样,只需要根据业务类型,即可确定出需要采用哪些组件对该业务数据进行预处理,提高了预处理方式的复用性和可扩展性。
S202:确定所述第一业务数据中的业务关键字,并根据所述业务关键字确定所述第一业务数据是否已被统计。
本发明实施例为了避免由于业务数据重复发送或者重复处理导致的端到端数据不一致的问题,提供一种业务幂等的方案,从业务层面保证业务数据只被统计一次。
具体的,每个业务数据中包括业务关键字,业务关键字是业务数据中能够唯一标识该业务数据的关键字。业务关键字可以包括一个或者多个关键字。例如,订单业务中,订单编号可以作为业务关键字。实时订单销量业务中,订单编号和订单状态这两个字段可以作为业务关键字。
可选的,不同业务类型的业务数据对应的业务关键字可以不同。示例性的,针对订单业务类型,可以采用订单编号作为业务关键字;针对用户业务类型,可以采用用户标识作为业务关键字;等。因此,可以事先针对不同业务类型,确定出不同业务类型对应的业务关键字,建立业务类型与业务关键字之间的对应关系。
一种可能的实施方式中,可以采用如下可行的方式确定第一业务数据中的业务关键字:确定第一业务数据对应的业务类型;根据该业务类型以及上述对应关系,确定出第一业务中的业务关键字。
本实施例中,当确定出第一业务数据中的业务关键字后,可以根据该业务关键字确定该第一业务数据是否已被统计,即,确定该第一业务数据是否为重复业务数据。若该第一业务数据已被统计过,则可以将该第一业务数据丢弃,避免对重复的业务数据进行重复统计。若该第一业务数据未被统计过,则可以继续执行后续的S203。
具体实现过程中,可以对已统计过的业务数据的业务关键字进行记录,这样,当处理第一业务数据时,可以根据之前记录的业务关键字,判断第一业务数据是否已被统计。
一种可能的实施方式中,可以采用第二数据库存储已被统计的业务数据中的业务关键字。相应的,S202可以具体包括:判断第二数据库中是否存在第一业务数据中的业务关键字。若存在,则确定该第一业务数据已被统计。若不存在,则确定该第一业务数据未被统计。
在确定该第一业务数据未被统计的情况下,可以将该第一业务数据中的业务关键字存储到第二数据库中。这样,后续接收到包括相同业务关键字的新业务数据后,即可根据第二数据库确定出该新业务数据为重复数据,从而达到对业务数据去重的目的。
可选的,所述第二数据库可以采用远程字典服务(Remote Dictionary Server,Redis)数据库。Redis数据库是一种开源的使用ANSI C语言编写、支持网络、可基于内存亦可持久化的日志型、Key-Value数据库。通过采用Redis数据库对已处理的业务数据的业务关键字进行存储,能够提高业务数据去重的处理效率。
本实施例中,通过根据第一业务数据中的业务关键字,确定该第一业务数据是否已被统计,达到在业务层面的数据幂等处理,保证了重复的业务数据仅被处理一次。以订单业务为例,经过本实施例的业务层面的幂等处理之后,能够保证同一个订单的下单类型只能被累计一次,取消订单只能被扣减一次。
需要说明的是,本实施例中的业务层面的幂等处理并不等同于消息层面的幂等处理。经过消息层面的幂等处理后只能保证不存在重复的消息,但是,有可能两个不同的消息中携带的是相同的业务数据,因此,依然可能存在对业务数据进行重复统计的问题。本实施例通过在业务层面进行幂等处理,能够从本质上避免对业务数据的重复统计,保证端到端数据的一致性。
S203:在确定所述第一业务数据未被统计时,对所述第一业务数据进行统计处理,得到统计结果。
S204:将所述统计结果存储至第一数据库中。
本实施例中,只有在确定第一业务数据未被统计时,才对第一业务数据进行统计处理,避免了对业务数据进行重复统计,保证了统计结果的准确性。
可选的,本实施例中对业务数据进行统计时,可以根据预设的统计频度进行统计。示例性的,可以5分钟统计一次、15分钟统计一次、半小时统计一次、1小时统计一次,12小时统计一次等。其中,统计频度信息可以是根据实际应用场景预先配置的。
可选的,不同的业务类型可以对应不同的统计频度信息。
一种可能的实施方式中,S203可以具体包括:获取统计频度信息,并将该第一业务数据加入与所述统计频度信息对应的缓存队列中。根据统计频度信息,对缓存队列中的业务数据进行统计处理,得到统计结果。以统计频度为15分钟为例,设置15分钟的时间窗口,并为该时间窗口设置缓存队列。当确定第一业务数据未被统计时,先将该第一业务数据加入该缓存队列中。当15分钟的时间窗口到时,对该缓存队列中的业务数据进行统计处理,得到统计结果。
得到统计结果之后,将统计结果提交至第一数据库中。第一数据库中的数据可以通过显示大屏进行展示。
可选的,本实施例中的第一数据库可以采用关系型数据库,例如,Mysql数据库,方便对数据进行可视化展示。
本实施例提供的业务数据的处理方法,包括:获取待处理的第一业务数据,确定第一业务数据中的业务关键字,并根据该业务关键字确定第一业务数据是否已被统计,在确定第一业务数据未被统计时,对第一业务数据进行统计处理,得到统计结果,并将统计结果存储至第一数据库中。在上述数据处理过程中,只有在确定第一业务数据未被统计时,才对第一业务数据进行统计处理,实现了在业务层面上的数据幂等性,避免了对重复的业务数据进行重复统计处理,保证了端到端数据的一致性。
在上述任一实施例的基础上,下面结合一个具体的实施例对本发明技术方案进行更详细的描述。
图4为本发明另一个实施例提供的业务数据的处理方法的流程示意图。本实施例的方法可以应用于图1所示的系统架构,该系统架构中,消息发布订阅服务器可以采用Kafka处理框架,大数据处理服务器采用分布式流处理框架Flink,数据库可以采用Mysql数据库。
如图4所示,本实施例的方法可以包括:
S401:通过Flink从Kafka消息队列中获取第一消息,所述第一消息中包括所述第一业务数据,所述Kafka消息队列用于存储各业务系统服务器产生的消息,所述Kafka消息队列中不存在重复消息。
本实施例中,各业务系统服务器产生的业务数据对接Kafka。Kafka是一种高吞吐量的分布式发布订阅消息系统,在大数据领域一般作为消息的接入来源。Kafka可以接收各业务系统服务器发送的消息,并将消息维护在消息队列中。Flink可以向Kafka订阅消息,并从Kafka消息队列中获取消息,得到消息中的业务数据。
其中,Kafka使用0.11.0.0以上版本。Kafka 0.11.0.0版本引入了消息幂等功能。对于业务系统服务器重复发送的消息,Kafka只会写入到消息队列中一次。在具体实现时,需要对Kafka开启正好一次语义(Exactly Once)功能。
本实施例中,通过采用Kafka的正好一次语义功能,使得Kafka消息队列中不存在重复消息,从消息层面上保证了幂等性,保证了Kafka到Flink的数据一致性。
S402:确定所述第一业务数据中的业务关键字,并根据所述业务关键字确定所述第一业务数据是否已被统计。
S403:在确定所述第一业务数据未被统计时,对所述第一业务数据进行统计处理,得到统计结果。
应理解,S402和S403的具体实施方式与图2中的S202和S203类似,此处不作赘述。其中,S402和S403可以在Flink中实现,在业务层面上保证了Flink内部的数据一致性。
S404:通过Flink将所述统计结果存储至Mysql数据库中,并根据所述统计结果生成检查点信息,所述检查点信息用于在Flink故障时根据所述检查点信息恢复数据。
具体的,可以根据实际应用场景,在Flink中配置统计频度信息。然后,根据Flink配置的统计频度信息,对业务数据进行统计,并通过Flink将统计结果存储至Mysql数据库中。
实际应用中,Flink向Mysql数据库提交数据过程中,若Flink出现故障或者崩溃重启,为了保证不丢失业务数据,在Flink重新运行后,可能会向Mysql数据库再次发送数据,而这些数据有可能Mysql数据库已经收到,因此,会导致数据重复提交。
本实施例中,为了避免Flink向Mysql数据库重复提交数据的问题,采用两阶段提交的方式。其中,Flink采用1.4.0及以上版本,Mysql数据库采用5.5及以上版本。上述两个版本的Flink和Mysql数据库均支持两阶段提交。本实施例中通过将Flink和Mysql数据库的两阶段提交结合使用,能够避免数据重复提交的问题。
一种可能的实施方式中,图5为本发明实施例提供的两阶段提交的示意图。如图5所示,向Flink和Mysql数据库发送预提交请求;在从Flink接收到预提交确认消息,以及从Mysql数据库接收到预提交确认消息后,向Flink和Mysql数据库发送提交请求,使得Flink将所述统计结果存储至Mysql数据库中,并根据统计结果生成检查点信息。
本实施例的两阶段提交包括:预提交阶段和正式提交阶段。在预提交阶段,大数据处理服务器作为协调者,向Flink和Mysql数据库发送预提交请求,若接收到Flink的预提交确认消息,并且接收到Mysql数据库的预提交确认消息,说明Flink和Mysql数据库均已满足数据提交条件。然后,进入正式提交阶段,向Flink和Mysql数据库发送提交请求,Flink会将统计结果提交至Mysql数据库中,同时,Flink还会根据统计结果生成检查点信息。通过采用两阶段提交,可以保证Flink到Mysql数据库的数据一致性。
进一步的,本实施例中的Flink还支持容错机制,Flink容错机制通过持续创建分布式数据流及其状态一致性的快照来实现。图6为本发明实施例提供的Flink容错机制的示意图。如图6所示,将Flink的检查点(checkpoint)功能打开。Flink在进行数据处理过程中,可以定期的对各个算子(Operator)处理的数据进行快照存储(Snapshot),生成检查点(checkpoint)信息,也就是说,Flink会按照时间间隔对数据进行备份。当Flink遇到故障时(例如设备故障、网络故障、软件故障等),Flink停止分布式数据流。Flink重启所有算子,并根据最近一次检查点信息对各个算子进行重置,使其恢复到最近一次备份的状态。并从最近一次检查点的状态开始重新执行。
本实施例中,通过将Flink的两阶段提交和检查点功能结合起来,保证在向Mysql数据库提交数据的同时,生成检查点信息,这样,确保了生成检查点的数据均是已被提交的,未生成检查点的数据均是未被提交的。当Flink由于故障需要恢复数据时,根据检查点信息恢复数据并重新开始执行,能够避免向Mysql数据库提交重复的数据,保证了Flink到Mysql数据库的数据一致性。
一种可能的实施方式中,本实施例可以采用基础组件及差异化配置实现。图7为本发明实施例提供的组件架构示意图。如图7所示,针对不同业务场景的共性的内容,可以采用基础组件实现。例如,基础组件可以包括:业务消费组件、业务解析及校验组件、业务幂等组件、Flink计算组件、数据提交组件、Flink容错及故障恢复组件等。每个组件可以遵循SPI设计原则,方便用户进行少量个性化编码。相同业务场景的可直接按照本方案提供的业务模型进行选择配置,即,只需进行少量的差异化配置即可使用。其中,差异化配置可以包括:业务类型配置、Kafka配置、Redis配置、Flink配置、Mysql配置等。
图8为本发明实施例提供的业务数据的处理系统的示意图。如图8所示,在数据来源阶段,由0.11.0.0及以上版本的Kafka对接各业务系统,实现消息层面的幂等处理。在数据加工阶段,由1.4.0及以上版本的Flink实现,可以根据业务类型进行解析和校验处理,保证复用性;采用Redis数据库实现业务层面的幂等处理,避免业务数据的重复统计;支持检查点功能,在出现故障时保证数据的一致性;支持两阶段提交,避免了重复提交数据。在数据展示阶段,由5.5及以上版本的Mysql数据库实现,与Flink的两阶段提交配合。
本实施例中,通过上述数据处理过程,保证了数据来源(Kafka)、数据加工(Flink)、数据展示(Mysql)三个阶段的数据一致性,实现端到端的数据一致性。
图9为本发明一个实施例提供的业务数据的处理装置的结构示意图。该装置可以为软件和/或硬件的形式。如图9所示,本实施例提供的业务数据的处理装置10,包括:获取模块11、处理模块12和提交模块13。其中,获取模块11,用于获取待处理的第一业务数据;
处理模块12,用于确定所述第一业务数据中的业务关键字,并根据所述业务关键字确定所述第一业务数据是否已被统计;
所述处理模块12,还用于在确定所述第一业务数据未被统计时,对所述第一业务数据进行统计处理,得到统计结果;
提交模块13,用于将所述统计结果存储至第一数据库中。
一种可能的实现方式中,所述处理模块12具体用于:
判断第二数据库中是否存在所述业务关键字,所述第二数据库用于存储已被统计的业务数据中的业务关键字;
若所述第二数据库中存在所述业务关键字,则确定所述第一业务数据已被统计;
若所述第二数据库中不存在所述业务关键字,则确定所述第一业务数据未被统计。
一种可能的实现方式中,所述处理模块12具体用于:
确定所述第一业务数据对应的业务类型;
根据所述业务类型以及预设对应关系,确定所述第一业务数据中的业务关键字,其中,所述预设对应关系用于指示不同业务类型与不同业务关键字之间的对应关系。
一种可能的实现方式中,所述处理模块12还用于:
根据所述业务类型,获取所述业务类型对应的处理方式,所述处理方式包括解析方式和/或校验方式;
根据所述处理方式,对所述第一业务数据进行解析处理和/或校验处理。
一种可能的实现方式中,所述方法应用于采用分布式流处理框架Flink的服务器,所述提交模块13具体用于:
通过所述Flink将所述统计结果存储至所述第一数据库中,并根据所述统计结果生成检查点信息,所述检查点信息用于在所述Flink故障时根据所述检查点信息恢复数据。
一种可能的实现方式中,所述提交模块13具体用于:
向所述Flink和所述第一数据库发送预提交请求;
在从所述Flink接收到预提交确认消息,以及从所述第一数据库接收到预提交确认消息后,向所述Flink和所述第一数据库发送提交请求,使得所述Flink将所述统计结果存储至所述第一数据库中,并根据所述统计结果生成检查点信息。
一种可能的实现方式中,所述获取模块11具体用于:
通过所述Flink从Kafka消息队列中获取第一消息,所述第一消息包括所述第一业务数据,所述Kafka消息队列用于存储从各业务系统服务器产生的消息,所述Kafka消息队列中不存在重复消息。
一种可能的实现方式中,所述处理模块12具体用于:
获取统计频度信息,并将所述第一业务数据加入与所述统计频度信息对应的缓存队列中;
根据所述统计频度信息,对所述缓存队列中的业务数据进行统计处理,得到所述统计结果。
本实施例提供的业务数据的处理装置,可用于执行上述任一方法实施例的技术方案,其实现原理和技术效果类似,此处不作赘述。
图10为本发明一个实施例提供的电子设备的结构示意图。该电子设备可以作为大数据处理服务器。如图10所示,本实施例的电子设备20,包括:处理器21以及存储器22;其中,存储器22,用于存储计算机程序;处理器21,用于执行存储器存储的计算机程序,以实现上述实施例中的业务数据的处理方法。具体可以参见前述方法实施例中的相关描述。
可选地,存储器22既可以是独立的,也可以跟处理器21集成在一起。
当所述存储器22是独立于处理器21之外的器件时,所述电子设备20还可以包括:总线23,用于连接所述存储器22和处理器21。
可选的,电子设备20还可以包括通信部件24,用于与其他设备进行通信。
本实施例提供的电子设备,可用于执行上述任一方法实施例中的技术方案,其实现原理和技术效果类似,本实施例此处不再赘述。
本发明实施例还提供一种计算机可读存储介质,当该存储介质中的指令由处理器执行时,能够执行上述任意方法实施例中的业务数据的处理方法。
本发明实施例还提供一种芯片,包括:存储器、处理器以及计算机程序,所述计算机程序存储在所述存储器中,所述处理器运行所述计算机程序执行上述任一方法实施例中的技术方案。
在本发明所提供的几个实施例中,应该理解到,所揭露的设备和方法,可以通过其它的方式实现。例如,以上所描述的设备实施例仅仅是示意性的,例如,所述模块的划分,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式,例如多个模块可以结合或者可以集成到另一个系统,或一些特征可以忽略,或不执行。另一点,所显示或讨论的相互之间的耦合或直接耦合或通信连接可以是通过一些接口,装置或模块的间接耦合或通信连接,可以是电性,机械或其它的形式。
所述作为分离部件说明的模块可以是或者也可以不是物理上分开的,作为模块显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部模块来实现本实施例方案的目的。
另外,在本发明各个实施例中的各功能模块可以集成在一个处理单元中,也可以是各个模块单独物理存在,也可以两个或两个以上模块集成在一个单元中。上述模块成的单元既可以采用硬件的形式实现,也可以采用硬件加软件功能单元的形式实现。
上述以软件功能模块的形式实现的集成的模块,可以存储在一个计算机可读取存储介质中。上述软件功能模块存储在一个存储介质中,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)或处理器(英文:processor)执行本发明各个实施例所述方法的部分步骤。
应理解,上述处理器可以是中央处理单元(英文:Central Processing Unit,简称:CPU),还可以是其他通用处理器、数字信号处理器(英文:Digital Signal Processor,简称:DSP)、专用集成电路(英文:Application Specific Integrated Circuit,简称:ASIC)等。通用处理器可以是微处理器或者该处理器也可以是任何常规的处理器等。结合申请所公开的方法的步骤可以直接体现为硬件处理器执行完成,或者用处理器中的硬件及软件模块组合执行完成。
存储器可能包含高速RAM存储器,也可能还包括非易失性存储NVM,例如至少一个磁盘存储器,还可以为U盘、移动硬盘、只读存储器、磁盘或光盘等。
总线可以是工业标准体系结构(Industry Standard Architecture,ISA)总线、外部设备互连(Peripheral Component,PCI)总线或扩展工业标准体系结构(ExtendedIndustry Standard Architecture,EISA)总线等。总线可以分为地址总线、数据总线、控制总线等。为便于表示,本发明附图中的总线并不限定仅有一根总线或一种类型的总线。
上述存储介质可以是由任何类型的易失性或非易失性存储设备或者它们的组合实现,如静态随机存取存储器(SRAM),电可擦除可编程只读存储器(EEPROM),可擦除可编程只读存储器(EPROM),可编程只读存储器(PROM),只读存储器(ROM),磁存储器,快闪存储器,磁盘或光盘。存储介质可以是通用或专用计算机能够存取的任何可用介质。
一种示例性的存储介质耦合至处理器,从而使处理器能够从该存储介质读取信息,且可向该存储介质写入信息。当然,存储介质也可以是处理器的组成部分。处理器和存储介质可以位于专用集成电路(Application Specific Integrated Circuits,简称:ASIC)中。当然,处理器和存储介质也可以作为分立组件存在于电子设备或主控设备中。
本领域普通技术人员可以理解:实现上述各方法实施例的全部或部分步骤可以通过程序指令相关的硬件来完成。前述的程序可以存储于一计算机可读取存储介质中。该程序在执行时,执行包括上述各方法实施例的步骤;而前述的存储介质包括:ROM、RAM、磁碟或者光盘等各种可以存储程序代码的介质。
最后应说明的是:以上各实施例仅用以说明本发明的技术方案,而非对其限制;尽管参照前述各实施例对本发明进行了详细的说明,本领域的普通技术人员应当理解:其依然可以对前述各实施例所记载的技术方案进行修改,或者对其中部分或者全部技术特征进行等同替换;而这些修改或者替换,并不使相应技术方案的本质脱离本发明各实施例技术方案的范围。
Claims (11)
1.一种业务数据的处理方法,其特征在于,包括:
获取待处理的第一业务数据;
确定所述第一业务数据中的业务关键字,并根据所述业务关键字确定所述第一业务数据是否已被统计;
在确定所述第一业务数据未被统计时,对所述第一业务数据进行统计处理,得到统计结果;
将所述统计结果存储至第一数据库中。
2.根据权利要求1所述的方法,其特征在于,根据所述业务关键字确定所述第一业务数据是否已被统计,包括:
判断第二数据库中是否存在所述业务关键字,所述第二数据库用于存储已被统计的业务数据中的业务关键字;
若所述第二数据库中存在所述业务关键字,则确定所述第一业务数据已被统计;
若所述第二数据库中不存在所述业务关键字,则确定所述第一业务数据未被统计。
3.根据权利要求2所述的方法,其特征在于,确定所述第一业务数据中的业务关键字,包括:
确定所述第一业务数据对应的业务类型;
根据所述业务类型以及预设对应关系,确定所述第一业务数据中的业务关键字,其中,所述预设对应关系用于指示不同业务类型与不同业务关键字之间的对应关系。
4.根据权利要求3所述的方法,其特征在于,根据所述业务关键字确定所述第一业务数据是否已被统计之前,还包括:
根据所述业务类型,获取所述业务类型对应的处理方式,所述处理方式包括解析方式和/或校验方式;
根据所述处理方式,对所述第一业务数据进行解析处理和/或校验处理。
5.根据权利要求1至4任一项所述的方法,其特征在于,所述方法应用于采用分布式流处理框架Flink的服务器,将所述统计结果存储至第一数据库中,包括:
通过所述Flink将所述统计结果存储至所述第一数据库中,并根据所述统计结果生成检查点信息,所述检查点信息用于在所述Flink故障时根据所述检查点信息恢复数据。
6.根据权利要求5所述的方法,其特征在于,通过所述Flink将所述统计结果存储至所述第一数据库中,并根据所述统计结果生成检查点信息,包括:
向所述Flink和所述第一数据库发送预提交请求;
在从所述Flink接收到预提交确认消息,以及从所述第一数据库接收到预提交确认消息后,向所述Flink和所述第一数据库发送提交请求,使得所述Flink将所述统计结果存储至所述第一数据库中,并根据所述统计结果生成检查点信息。
7.根据权利要求5所述的方法,其特征在于,获取待处理的第一业务数据,包括:
通过所述Flink从Kafka消息队列中获取第一消息,所述第一消息包括所述第一业务数据,所述Kafka消息队列用于存储从各业务系统服务器产生的消息,所述Kafka消息队列中不存在重复消息。
8.根据权利要求1至4任一项所述的方法,其特征在于,对所述第一业务数据进行统计处理,得到统计结果,包括:
获取统计频度信息,并将所述第一业务数据加入与所述统计频度信息对应的缓存队列中;
根据所述统计频度信息,对所述缓存队列中的业务数据进行统计处理,得到所述统计结果。
9.一种业务数据的处理装置,其特征在于,包括:
获取模块,用于获取待处理的第一业务数据;
处理模块,用于确定所述第一业务数据中的业务关键字,并根据所述业务关键字确定所述第一业务数据是否已被统计;
所述处理模块,还用于在确定所述第一业务数据未被统计时,对所述第一业务数据进行统计处理,得到统计结果;
提交模块,用于将所述统计结果存储至第一数据库中。
10.一种电子设备,其特征在于,包括:存储器和处理器;
所述存储器用于存储计算机执行指令,所述处理器运行所述计算机执行指令实现如权利要求1至8任一项所述的方法。
11.一种计算机可读存储介质,其特征在于,所述计算机可读存储介质中存储有计算机执行指令,所述计算机执行指令被处理器执行时用于实现如权利要求1至8任一项所述的方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202010522229.7A CN113760870A (zh) | 2020-06-10 | 2020-06-10 | 业务数据的处理方法、装置及设备 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202010522229.7A CN113760870A (zh) | 2020-06-10 | 2020-06-10 | 业务数据的处理方法、装置及设备 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN113760870A true CN113760870A (zh) | 2021-12-07 |
Family
ID=78785391
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202010522229.7A Pending CN113760870A (zh) | 2020-06-10 | 2020-06-10 | 业务数据的处理方法、装置及设备 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN113760870A (zh) |
Citations (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN103150347A (zh) * | 2013-02-07 | 2013-06-12 | 浙江大学 | 基于文件热度的动态副本管理方法 |
CN106529845A (zh) * | 2015-09-09 | 2017-03-22 | 上海合印包装服务有限公司 | 一种能判断重复信息录入的印刷送货管理系统 |
CN106997557A (zh) * | 2017-03-23 | 2017-08-01 | 深圳市创梦天地科技有限公司 | 订单信息采集方法及装置 |
CN108804237A (zh) * | 2017-05-05 | 2018-11-13 | 北京京东尚科信息技术有限公司 | 数据实时统计方法、装置、存储介质和电子设备 |
CN108874588A (zh) * | 2018-06-08 | 2018-11-23 | 郑州云海信息技术有限公司 | 一种数据库实例恢复方法和装置 |
CN110784419A (zh) * | 2019-10-22 | 2020-02-11 | 中国铁道科学研究院集团有限公司电子计算技术研究所 | 铁路电务专业数据可视化方法及系统 |
-
2020
- 2020-06-10 CN CN202010522229.7A patent/CN113760870A/zh active Pending
Patent Citations (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN103150347A (zh) * | 2013-02-07 | 2013-06-12 | 浙江大学 | 基于文件热度的动态副本管理方法 |
CN106529845A (zh) * | 2015-09-09 | 2017-03-22 | 上海合印包装服务有限公司 | 一种能判断重复信息录入的印刷送货管理系统 |
CN106997557A (zh) * | 2017-03-23 | 2017-08-01 | 深圳市创梦天地科技有限公司 | 订单信息采集方法及装置 |
CN108804237A (zh) * | 2017-05-05 | 2018-11-13 | 北京京东尚科信息技术有限公司 | 数据实时统计方法、装置、存储介质和电子设备 |
CN108874588A (zh) * | 2018-06-08 | 2018-11-23 | 郑州云海信息技术有限公司 | 一种数据库实例恢复方法和装置 |
CN110784419A (zh) * | 2019-10-22 | 2020-02-11 | 中国铁道科学研究院集团有限公司电子计算技术研究所 | 铁路电务专业数据可视化方法及系统 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US10437703B2 (en) | Correlation of source code with system dump information | |
US9559928B1 (en) | Integrated test coverage measurement in distributed systems | |
CN106874133B (zh) | 流式计算系统中计算节点的故障处理 | |
CN110489699B (zh) | 一种异步数据采集方法及系统 | |
CN108647357B (zh) | 数据查询的方法及装置 | |
US9454590B2 (en) | Predicting validity of data replication prior to actual replication in a transaction processing system | |
CN103019879A (zh) | 浏览器崩溃信息的处理方法及系统 | |
US10783453B2 (en) | Systems and methods for automated incident response | |
CN103077108A (zh) | 一种对浏览器崩溃进行预警的方法和系统 | |
CN114048217A (zh) | 增量数据的同步方法和装置、电子设备和存储介质 | |
CN111680104B (zh) | 数据同步方法、装置、计算机设备及可读存储介质 | |
CN111639132B (zh) | 日志同步方法及设备 | |
CN111753012A (zh) | 数据同步方法、装置、设备及存储介质 | |
CN106991606B (zh) | 交易数据处理方法及装置 | |
CN112100182A (zh) | 数据入库处理方法、装置和服务器 | |
US11816163B2 (en) | Systems and methods for improved transactional mainframes | |
CN109284331B (zh) | 基于业务数据资源的制证信息获取方法、终端设备及介质 | |
CN112529632B (zh) | 基于流式引擎的计费方法、装置、系统、介质与设备 | |
CN113254267B (zh) | 分布式数据库的数据备份方法和装置 | |
CN111523921B (zh) | 漏斗分析方法、分析设备、电子设备及可读存储介质 | |
CN110046172B (zh) | 在线计算数据处理方法及系统 | |
CN113760870A (zh) | 业务数据的处理方法、装置及设备 | |
CN112148762A (zh) | 一种实时数据流的统计方法和装置 | |
CN114218173B (zh) | 传帐类交易文件的批处理系统、处理方法、介质和设备 | |
CN114996057A (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 |