CN114416407B - 一种实时数据的乱序修复系统、方法及计算机设备 - Google Patents

一种实时数据的乱序修复系统、方法及计算机设备 Download PDF

Info

Publication number
CN114416407B
CN114416407B CN202210314616.0A CN202210314616A CN114416407B CN 114416407 B CN114416407 B CN 114416407B CN 202210314616 A CN202210314616 A CN 202210314616A CN 114416407 B CN114416407 B CN 114416407B
Authority
CN
China
Prior art keywords
data
order
sequence
reference data
time
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
CN202210314616.0A
Other languages
English (en)
Other versions
CN114416407A (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.)
Shugen Gezhi Technology Hunan Co ltd
Rootcloud Technology Co Ltd
Original Assignee
Rootcloud Technology 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 Rootcloud Technology Co Ltd filed Critical Rootcloud Technology Co Ltd
Priority to CN202210314616.0A priority Critical patent/CN114416407B/zh
Publication of CN114416407A publication Critical patent/CN114416407A/zh
Application granted granted Critical
Publication of CN114416407B publication Critical patent/CN114416407B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements 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/46Multiprogramming arrangements
    • G06F9/54Interprogram communication
    • G06F9/546Message passing systems or structures, e.g. queues
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2209/00Indexing scheme relating to G06F9/00
    • G06F2209/54Indexing scheme relating to G06F9/54
    • G06F2209/547Messaging middleware

Landscapes

  • Engineering & Computer Science (AREA)
  • Software Systems (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Management, Administration, Business Operations System, And Electronic Commerce (AREA)
  • Debugging And Monitoring (AREA)

Abstract

本申请提供一种实时数据的乱序修复系统、方法及计算机设备。该系统包括实时数据处理引擎、时序数据库、乱序回补任务提交器、批处理引擎和数据漏,实时数据处理引擎包括第一解码器、乱序侦测器和第一处理器,批处理引擎包括第二解码器和第二处理器。本申请可以识别参考数据序列中的乱序区间并删除乱序区间对应的乱序数据,得到第一数据序列并幂等写入数据漏。将时序数据库中乱序区间对应的原始数据解码为第二数据序列,并通过第二处理器幂等写入数据漏,使得数据漏基于第一数据序列和第二数据序列得到修复后的目标数据序列。本申请可以有效地侦测实时数据中是否存在乱序数据,并对乱序区间内的数据进行回补修复。

Description

一种实时数据的乱序修复系统、方法及计算机设备
技术领域
本申请涉及计算机技术领域,尤其涉及一种实时数据的乱序修复系统、方法及计算机设备。
背景技术
对实时数据处理的过程中,有两个重要的参数用于表征数据是否发生乱序,即处理时间和事件时间。其中,处理时间是指数据到达实时处理引擎端进行处理时的实际系统时间,事件时间是指数据在数据源测生成时,通过数据内部字段声明的数据生成时间。通常情况下,数据的处理时间和事件时间相差不大,数据乱序是指实时处理引擎先处理的数据对应的事件时间大于后处理的数据对应的事件时间。
现有技术是通过微批处理解决上述数据乱序的问题。具体地,通过聚合一个时间窗口内的数据,对时间窗口内部的数据按照其事件时间进行排序,直接聚合或输出到下游节点,其中,时间窗口可以类似理解为一个时间段。现有技术能够容忍在时间窗口内的乱序,在一定程度上权衡了实时性和正确性,但是对于超出时间窗口配置的乱序不能进行修复,具有较大的局限性。
发明内容
为了解决上述技术问题,本申请提供了一种实时数据的乱序修复系统、方法及计算机设备,具体方案如下:
第一方面,本申请实施例提供了一种实时数据的乱序修复系统,所述实时数据的乱序修复系统包括实时数据处理引擎、时序数据库、乱序回补任务提交器、批处理引擎和数据漏,其中,所述实时数据处理引擎包括第一解码器、乱序侦测器和第一处理器,所述批处理引擎包括第二解码器和第二处理器;
所述第一解码器用于将原始数据序列解码为参考数据序列,将所述参考数据序列发送至所述乱序侦测器,以及将所述原始数据序列中各所述原始数据发送至所述时序数据库,其中,所述原始数据序列中的各原始数据按照对应的处理时间升序排列,各原始数据的处理时间和事件时间传递至所述参考数据序列中对应的各参考数据;
所述时序数据库用于以各所述事件时间为索引,将对应的各所述原始数据进行存储;所述乱序侦测器用于基于各所述处理时间和各所述事件时间判断所述参考数据序列中存在乱序数据时,识别所述参考数据序列中的乱序区间并将所述乱序区间发送至所述乱序回补任务提交器,以及删除所述乱序区间对应的所述乱序数据,得到第一数据序列并通过所述第一处理器幂等写入所述数据漏;
所述乱序回补任务提交器用于触发所述第二解码器以将所述时序数据库中所述乱序区间对应的原始数据解码为第二数据序列,并通过所述第二处理器幂等写入所述数据漏;所述数据漏基于所述第一数据序列和所述第二数据序列得到修复后的目标数据序列,其中,目标数据序列中各目标数据按对应的所述事件时间的数值大小进行排序。
根据本申请公开的一种具体实施方式,所述乱序侦测器具体用于:
判断所述参考数据序列中第N个参考数据对应的事件时间是否大于第(N-1)个参考数据对应的事件时间,其中N为正整数,N≥2;
若所述参考数据序列中第N个参考数据对应的事件时间小于第(N-1)个参考数据对应的事件时间,判定所述参考数据序列发生乱序并将所述第N个参考数据确定为所述乱序数据;
若所述参考数据序列中第N个参考数据对应的事件时间大于第(N-1)个参考数据对应的事件时间,判定所述参考数据序列未发生乱序并将所述第N个参考数据确定为顺序数据。
根据本申请公开的一种具体实施方式,所述乱序侦测器具体用于:
将所述参考数据序列中,连续的M个所述乱序数据对应的事件时间确定为预设区间,其中M为正整数,M≥1;
若所述参考数据序列中的所述预设区间的数量为一个,或,所述参考数据序列中的所述预设区间的数量至少为两个且相邻两个所述预设区间之间的所述顺序数据的数量超过预设阈值,将所述预设区间确定为所述乱序区间;
若所述参考数据序列中的所述预设区间的数量至少为两个,且相邻两个所述预设区间之间的所述顺序数据的数量未超过所述预设阈值,将相邻两个所述预设区间以及相邻两个所述预设区间之间的所述顺序数据合并为所述乱序区间,其中,选取相邻两个所述预设区间中次序在前的所述预设区间中起点对应的事件时间为所述乱序区间的起点,选取相邻两个所述预设区间中次序在后的所述预设区间中终点对应的事件时间为所述乱序区间的终点。
根据本申请公开的一种具体实施方式,所述实时数据的乱序修复系统还包括消息中间件,所述乱序侦测器通过所述消息中间件与所述第二解码器通信连接;
所述消息中间件用于接收所述乱序侦测器发送的所述乱序区间,并将所述乱序区间发送至所述乱序回补任务提交器;
所述乱序回补任务提交器用于生成对应所述乱序区间的批处理任务,其中,所述批处理任务用于指示所述第二解码器以将所述时序数据库中所述乱序区间对应的原始数据解码为第二数据序列,并通过所述第二处理器幂等写入所述数据漏。
第二方面,本申请实施例提供了一种实时数据的乱序修复方法,应用于第一方面中任一项所述的实时数据的乱序修复系统,所述实时数据的乱序修复方法包括:
第一解码器将原始数据序列解码为参考数据序列,将所述参考数据序列发送至乱序侦测器,以及将所述原始数据序列中各所述原始数据发送至时序数据库,其中,所述原始数据序列中的各原始数据按照对应的处理时间升序排列,各原始数据的处理时间和事件时间传递至所述参考数据序列中对应的各参考数据;
所述时序数据库以各所述事件时间为索引,将对应的各所述原始数据进行存储;
所述乱序侦测器基于各所述处理时间和各所述事件时间判断所述参考数据序列中存在乱序数据时,识别所述参考数据序列中的乱序区间并将所述乱序区间发送至乱序回补任务提交器,以及删除所述乱序区间对应的所述乱序数据,得到第一数据序列并通过第一处理器幂等写入数据漏;
所述乱序回补任务提交器接收所述乱序区间后,触发第二解码器以将所述时序数据库中所述乱序区间对应的原始数据解码为第二数据序列,并通过第二处理器幂等写入所述数据漏;
所述数据漏基于所述第一数据序列和所述第二数据序列得到修复后的目标数据序列,其中,目标数据序列中各目标数据按对应的所述事件时间的数值大小进行排序。
根据本申请公开的一种具体实施方式,所述乱序侦测器基于各所述处理时间和各所述事件时间判断所述参考数据序列中存在乱序数据的步骤,包括:
判断所述参考数据序列中第N个参考数据对应的事件时间是否大于第(N-1)个参考数据对应的事件时间,其中N为正整数,N≥2;
若所述参考数据序列中第N个参考数据对应的事件时间小于第(N-1)个参考数据对应的事件时间,判定所述参考数据序列发生乱序并将所述第N个参考数据确定为乱序数据;
若所述参考数据序列中第N个参考数据对应的事件时间大于第(N-1)个参考数据对应的事件时间,判定所述参考数据序列未发生乱序并将所述第N个参考数据确定为顺序数据。
根据本申请公开的一种具体实施方式,所述乱序侦测器识别所述参考数据序列中的乱序区间的步骤,包括:
将所述参考数据序列中,连续的M个所述乱序数据对应的事件时间确定为预设区间,其中M为正整数,M≥1;
若所述参考数据序列中的所述预设区间的数量为一个,或,所述参考数据序列中的所述预设区间的数量至少为两个且相邻两个所述预设区间之间的所述顺序数据的数量超过预设阈值,将所述预设区间确定为所述乱序区间;
若所述参考数据序列中的所述预设区间的数量至少为两个,且相邻两个所述预设区间之间的所述顺序数据的数量未超过所述预设阈值,将相邻两个所述预设区间以及相邻两个所述预设区间之间的所述顺序数据合并为所述乱序区间,其中,选取相邻两个所述预设区间中次序在前的所述预设区间中起点对应的事件时间为所述乱序区间的起点,选取相邻两个所述预设区间中次序在后的所述预设区间中终点对应的事件时间为所述乱序区间的终点。
根据本申请公开的一种具体实施方式,所述实时数据的乱序修复系统还包括消息中间件,所述乱序侦测器通过所述消息中间件与所述第二解码器通信连接;
所述乱序侦测器将所述乱序区间发送至所述乱序回补任务提交器的步骤,包括:
所述消息中间件接收所述乱序侦测器发送的所述乱序区间,并将所述乱序区间发送至所述乱序回补任务提交器;
所述乱序回补任务提交器生成对应所述乱序区间的批处理任务,其中,所述批处理任务用于指示所述第二解码器以将所述时序数据库中所述乱序区间对应的原始数据解码为第二数据序列,并通过所述第二处理器幂等写入所述数据漏。
第三方面,本申请实施例提供了一种计算机设备,所述计算机设备包括处理设备和存储器,所述处理设备上加载有第一方面中任一项所述的实时数据的乱序修复系统,所述存储器存储有计算机程序,所述计算机程序在所述处理器上执行时实现第二方面中任一项实施例所述的实时数据的乱序修复方法。
第四方面,本申请实施例提供了一种计算机可读存储介质,所述计算机可读存储介质存储有计算机程序,所述计算机程序在处理设备上执行时实现第二方面中任一项实施例所述的实时数据的乱序修复方法。
相对于现有技术而言,本申请具有以下有益效果:
本申请提供一种实时数据的乱序修复系统、方法及计算机设备。该系统包括实时数据处理引擎、时序数据库、乱序回补任务提交器、批处理引擎和数据漏,实时数据处理引擎包括第一解码器、乱序侦测器和第一处理器,批处理引擎包括第二解码器和第二处理器。本申请可以识别参考数据序列中的乱序区间并删除乱序区间对应的乱序数据,得到第一数据序列并幂等写入数据漏。将时序数据库中乱序区间对应的原始数据解码为第二数据序列,并通过第二处理器幂等写入数据漏,使得数据漏基于第一数据序列和第二数据序列得到修复后的目标数据序列。本申请可以有效地侦测实时数据中是否存在乱序数据,并对乱序区间内的数据进行回补修复。
附图说明
为了更清楚地说明本发明的技术方案,下面将对实施例中所需要使用的附图作简单地介绍,应当理解,以下附图仅示出了本发明的某些实施例,因此不应被看作是对本发明保护范围的限定。在各个附图中,类似的构成部分采用类似的编号。
图1为本申请实施例提供的一种实时数据的乱序修复系统的系统组成示意图;
图2为本申请实施例提供的一种实时数据的乱序修复系统涉及的乱序数据的示意图;
图3为本申请实施例提供的一种实时数据的乱序修复方法的流程示意图。
具体实施方式
下面将结合本发明实施例中附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。
通常在此处附图中描述和示出的本发明实施例的组件可以以各种不同的配置来布置和设计。因此,以下对在附图中提供的本发明的实施例的详细描述并非旨在限制要求保护的本发明的范围,而是仅仅表示本发明的选定实施例。基于本发明的实施例,本领域技术人员在没有做出创造性劳动的前提下所获得的所有其他实施例,都属于本发明保护的范围。
在下文中,可在本发明的各种实施例中使用的术语“包括”、“具有”及其同源词仅意在表示特定特征、数字、步骤、操作、元件、组件或前述项的组合,并且不应被理解为首先排除一个或更多个其它特征、数字、步骤、操作、元件、组件或前述项的组合的存在或增加一个或更多个特征、数字、步骤、操作、元件、组件或前述项的组合的可能性。
此外,术语“第一”、“第二”、“第三”等仅用于区分描述,而不能理解为指示或暗示相对重要性。
除非另有限定,否则在这里使用的所有术语(包括技术术语和科学术语)具有与本发明的各种实施例所属领域普通技术人员通常理解的含义相同的含义。所述术语(诸如在一般使用的词典中限定的术语)将被解释为具有与在相关技术领域中的语境含义相同的含义并且将不被解释为具有理想化的含义或过于正式的含义,除非在本发明的各种实施例中被清楚地限定。
下面结合附图,对本申请的一些实施方式作详细说明。在不冲突的情况下,下述的实施例及实施例中的特征可以相互结合。
实时数据的乱序会引发的计算准确性的问题,例如,对于一个统计开关的开合次数的方案,如实时数据对应的事件时间发生乱序会影响后续计算结果,具体请参见表1和表2:
表1
Figure T_220328134810677_677707001
表2
Figure T_220328134810755_755846002
如表2中粗体部分所示,在乱序情况中,T+3和T+4时刻对应的实时数据发生乱序错误,则会导致这两个事件时间对应的开关状态识别有误,进一步导致后续的总开合次数统计产生偏差。
现有方案一般通过聚合一个时间窗口内的实时数据,对还时间窗口内部的实时数据,按照对应的事件时间进行排序,直接聚合或输出到下游节点进行后续处理。这种方案能容忍在时间窗口内的乱序,但无法处理超出时间窗口配置的乱序情况。
为了解决有效地识别实时数据中的乱序数据并准确地进行修复,本申请提供一种实时数据的乱序修复系统。参见图1,图1为本申请实施例提供的一种实时数据的乱序修复系统10的系统组成示意图。
所述系统包括实时数据处理引擎11、时序数据库12、乱序回补任务提交器13、批处理引擎14和数据漏15,其中,所述实时数据处理引擎11包括第一解码器111、乱序侦测器112和第一处理器113,所述批处理引擎14包括第二解码器141和第二处理器142;
所述第一解码器111用于将原始数据序列解码为参考数据序列,将所述参考数据序列发送至所述乱序侦测器112,以及将所述原始数据序列中各所述原始数据发送至所述时序数据库12,其中,所述原始数据序列中的各原始数据按照对应的处理时间升序排列,各原始数据的处理时间和事件时间传递至所述参考数据序列中对应的各参考数据;
所述时序数据库12用于以各所述事件时间为索引,将对应的各所述原始数据进行存储;
所述乱序侦测器112用于基于各所述处理时间和各所述事件时间判断所述参考数据序列中存在乱序数据时,识别所述参考数据序列中的乱序区间并将所述乱序区间发送至所述乱序回补任务提交器13,以及删除所述乱序区间对应的所述乱序数据,得到第一数据序列并通过所述第一处理器113幂等写入所述数据漏15;
所述乱序回补任务提交器13用于触发所述第二解码器141以将所述时序数据库12中所述乱序区间对应的原始数据解码为第二数据序列,并通过所述第二处理器142幂等写入所述数据漏15;
所述数据漏15基于所述第一数据序列和所述第二数据序列得到修复后的目标数据序列,其中,目标数据序列中各目标数据按对应的所述事件时间的数值大小进行排序。
具体实施时,可以将上述实时数据的乱序修复系统10分为两个主要的架构:实时数据处理侧和批处理回补侧,下面分别对这两个主要的架构对应的数据处理流程进行介绍:
一、实时数据处理侧
1.实时处理引擎在收到数据源推送的原始数据序列后,通过第一解码器111对原始数据序列中的各原始数据解码,解析其事件时间并将事件时间作为索引写入时序数据库12中,同时将解码后的参考数据序列传入乱序侦测器112。
2.乱序侦测器112根据次序相邻的原始数据的事件时间判断其是否为乱序数据,若为乱序数据,直接丢弃或删除。而且可以利用乱序区间归并算法识别参考数据序列中的乱序区间,将乱序区间发送至乱序任务提交器。乱序回补任务提交器13用于生成对应所述乱序区间的批处理任务,其中,所述批处理任务用于指示所述第二解码器141以将所述时序数据库12中所述乱序区间对应的原始数据解码为第二数据序列,并通过所述第二处理器142幂等写入所述数据漏15。
所述实时数据的乱序修复系统10还包括消息中间件16,所述乱序侦测器112通过所述消息中间件16与所述第二解码器141通信连接。所述消息中间件16用于接收所述乱序侦测器112发送的所述乱序区间,并将所述乱序区间发送至所述乱序回补任务提交器13。
具体实施时,对于两个通信连接的单元,数据的发送方为发布者,数据的接收方为订阅者,而服务端存放消息的容器称为主题。发布者将数据发送到主题中,订阅者在接收数据之前需要先“订阅主题”。每份订阅中,订阅者都可以接收到主题对应的所有数据。在单体架构中,所有的代码、模块都放在一份代码中,如果其中一个模块需要升级,哪怕只修改了一点点,整个系统也要一起升级,这样耦合度太高,同时代码管理也比较难。通过调用远程接口的方式可以实现系统间的互相调用。但是这种方式的耦合度比较高,为了实现更强的拓展性架构,可以在分布式系统中引入消息中间件16,消息中间件16只负责数据或消息的转发,通过消息中间件16可以解决系统的高耦合问题。
3.严格顺序的实时数据,即前文所述第一数据序列会由第一处理器113处理后输出到数据漏15中。
二、批处理回补侧
1.乱序回补任务提交器13会订阅消息中间件16中的乱序消息主题,根据参考数据序列中乱序部分对应的乱序区间生成批处理回补任务。
2.批处理回补任务将乱序区间在时序数据库12中对应的原始数据解码为第二数据序列后,发送至与第一处理器113具有相同实现的第二处理器142进行数据处理。其中,实现是指程序设计中“类之间的关系”。
3.将第二数据序列写入到前文所述的数据漏15中。
具体地,第一数据序列和第二数据序列均通过幂等的方式写入数据漏15中。在编程领域中,一次幂等操作的特点是指:其任意多次执行所产生的影响均与一次执行的影响相同,可以通过数学表达式f(x)=f(f(x))来表达,采用幂等写入不会对系统数据的一致性进行破坏,使得数据漏15可以基于第一数据序列和第二数据序列得到修复后的目标数据序列,其中,目标数据序列中各目标数据按对应的事件时间的数值大小进行排序。
前文所述的乱序侦测器112具体用于:
判断所述参考数据序列中第N个参考数据对应的事件时间是否大于第(N-1)个参考数据对应的事件时间,其中N为正整数,N≥2;
若所述参考数据序列中第N个参考数据对应的事件时间小于第(N-1)个参考数据对应的事件时间,判定所述参考数据序列发生乱序并将所述第N个参考数据确定为所述乱序数据;
若所述参考数据序列中第N个参考数据对应的事件时间大于第(N-1)个参考数据对应的事件时间,判定所述参考数据序列未发生乱序并将所述第N个参考数据确定为顺序数据。
所述乱序侦测器112还用于:
将所述参考数据序列中,连续的M个所述乱序数据对应的事件时间确定为预设区间,其中M为正整数,M≥1;
若所述参考数据序列中的所述预设区间的数量为一个,或,所述参考数据序列中的所述预设区间的数量至少为两个且相邻两个所述预设区间之间的所述顺序数据的数量超过预设阈值,将所述预设区间确定为所述乱序区间;
若所述参考数据序列中的所述预设区间的数量至少为两个,且相邻两个所述预设区间之间的所述顺序数据的数量未超过所述预设阈值,将相邻两个所述预设区间以及相邻两个所述预设区间之间的所述顺序数据合并为所述乱序区间,其中,选取相邻两个所述预设区间中次序在前的所述预设区间中起点对应的事件时间为所述乱序区间的起点,选取相邻两个所述预设区间中次序在后的所述预设区间中终点对应的事件时间为所述乱序区间的终点。
参见图2,图2为本申请实施例提供的一种实时数据的乱序修复系统涉及的乱序数据的示意图。具体实施时,为了能够正确识别乱序区间以及将比较相邻的乱序区间进行合并,以减少乱序回补批任务的启动次数或提交次数。
图2中横轴表示原始数据或参考数据的处理时间,纵轴表示原始数据或参考数据的事件时间,中空点表示顺序数据,黑点表示乱序数据。任一参考数据的处理时间的次序应与对应的事件时间的次序相同,否则可以将该参考数据判定为乱序数据。
对于参考数据序列中第N个参考数据,可以判断其对应的事件时间是否大于第(N-1)个参考数据对应的事件时间,其中N为正整数,N≥2,若参考数据序列中第N个参考数据对应的事件时间小于第(N-1)个参考数据对应的事件时间,判定参考数据序列发生乱序并将第N个参考数据确定为乱序数据,例如图2中,处理时间为2的参考数据对应的事件时间为6,而处理时间为3的参考数据对应的事件时间为2,因此处理时间为3的参考数据即为乱序数据。
以处理时间为参考,图2中的乱序数据对应的区间包括[3,7)、[12,13)、[15,17)、[18,19)这四个时间段即预设区间。但后面三段的时间差间隔比较小,即相邻两个所述预设区间之间的所述顺序数据的数量超过预设阈值。具体实施时,预设阈值的数值可以根据用户的需求和居停应用场景自定义,这里不做具体限定。可以通过乱序区间归并算法,能够将后面三段合并为[12,19)一个完整的区间,对应的事件时间的区间[11,15)即为图2所示的参考数据序列的一个乱序区间。
对于乱序区间归并算法,可以定义持久化状态表示当前的乱序状态:{乱序的起点事件时间,乱序的终点事件时间,顺序数据的数量}。按照处理时间将参考数据由小到大排序,从第2个参考数据开始,依次判断当前的参考数据是否为乱序数据,下面分别对不同的判定结果进行详细说明:
1.当前数据为乱序数据
若当前乱序状态不存在,即次序在前的参考数据持续为顺序上报,则初始化乱序状态为{当前参考数据的事件时间,上一个参考数据的事件时间,0};
若当前乱序状态存在,即次序在前的参考数据为乱序数据,更新乱序状态为{min(原乱序状态的乱序起点对应的事件时间,当前参考数据的事件时间),max(原乱序状态的乱序终点对应的事件时间,上一个参考数据的事件时间),0},其中,min(x,y)是指取(x,y)中的最小值,max(x,y)是指取(x,y)中的最大值;
2.当前数据为顺序数据
若当前乱序状态不存在,即次序在前的参考数据持续为顺序上报,则无需任何操作;
若当前乱序状态存在,即次序在前的参考数据为乱序数据,更新乱序状态中“顺序数据的数量”增1,然后比较顺序数据的数量是否超过预设阈值,若超过,则输出一个乱序区间{起点=当前乱序状态的起点对应的事件时间,终点=当前乱序状态的终点对应的事件时间}。
本申请提供的实时数据的乱序修复系统包括实时数据处理引擎、时序数据库、乱序回补任务提交器、批处理引擎和数据漏,实时数据处理引擎包括第一解码器、乱序侦测器和第一处理器,批处理引擎包括第二解码器和第二处理器。可以识别参考数据序列中的乱序区间并删除乱序区间对应的乱序数据,得到第一数据序列并幂等写入数据漏。将时序数据库中乱序区间对应的原始数据解码为第二数据序列,并通过第二处理器幂等写入数据漏,使得数据漏基于第一数据序列和第二数据序列得到修复后的目标数据序列。本申请可以有效地侦测实时数据中是否存在乱序数据,识别乱序数据对应的乱序区间,对相邻的乱序区间进行归以及对乱序区间对应的参考数据进行回补修复,减少乱序回补任务器进行回补修复的次数。
与上述系统实施例相对应,参见图3,本申请还提供了一种实时数据的乱序修复方法,所述方法包括:
步骤S301,第一解码器将原始数据序列解码为参考数据序列,将所述参考数据序列发送至乱序侦测器,以及将所述原始数据序列中各所述原始数据发送至时序数据库,其中,所述原始数据序列中的各原始数据按照对应的处理时间升序排列,各原始数据的处理时间和事件时间传递至所述参考数据序列中对应的各参考数据。
步骤S302,所述时序数据库以各所述事件时间为索引,将对应的各所述原始数据进行存储;
步骤S303,所述乱序侦测器基于各所述处理时间和各所述事件时间判断所述参考数据序列中存在乱序数据时,识别所述参考数据序列中的乱序区间并将所述乱序区间发送至乱序回补任务提交器,以及删除所述乱序区间对应的所述乱序数据,得到第一数据序列并通过第一处理器幂等写入数据漏。
具体地,所述乱序侦测器基于各所述处理时间和各所述事件时间判断所述参考数据序列中存在乱序数据的步骤,包括:
判断所述参考数据序列中第N个参考数据对应的事件时间是否大于第(N-1)个参考数据对应的事件时间,其中N为正整数,N≥2;
若所述参考数据序列中第N个参考数据对应的事件时间小于第(N-1)个参考数据对应的事件时间,判定所述参考数据序列发生乱序并将所述第N个参考数据确定为乱序数据;
若所述参考数据序列中第N个参考数据对应的事件时间大于第(N-1)个参考数据对应的事件时间,判定所述参考数据序列未发生乱序并将所述第N个参考数据确定为顺序数据。
具体地,所述乱序侦测器识别所述参考数据序列中的乱序区间的步骤,包括:
将所述参考数据序列中,连续的M个所述乱序数据对应的事件时间确定为预设区间,其中M为正整数,M≥1;
若所述参考数据序列中的所述预设区间的数量为一个,或,所述参考数据序列中的所述预设区间的数量至少为两个且相邻两个所述预设区间之间的所述顺序数据的数量超过预设阈值,将所述预设区间确定为所述乱序区间;
若所述参考数据序列中的所述预设区间的数量至少为两个,且相邻两个所述预设区间之间的所述顺序数据的数量未超过所述预设阈值,将相邻两个所述预设区间以及相邻两个所述预设区间之间的所述顺序数据合并为所述乱序区间,其中,选取相邻两个所述预设区间中次序在前的所述预设区间中起点对应的事件时间为所述乱序区间的起点,选取相邻两个所述预设区间中次序在后的所述预设区间中终点对应的事件时间为所述乱序区间的终点。
具体地,所述实时数据的乱序修复系统还包括消息中间件,所述乱序侦测器通过所述消息中间件与所述第二解码器通信连接;
所述乱序侦测器将所述乱序区间发送至所述乱序回补任务提交器的步骤,包括:
所述消息中间件接收所述乱序侦测器发送的所述乱序区间,并将所述乱序区间发送至所述乱序回补任务提交器;
所述乱序回补任务提交器生成对应所述乱序区间的批处理任务,其中,所述批处理任务用于指示所述第二解码器以将所述时序数据库中所述乱序区间对应的原始数据解码为第二数据序列,并通过所述第二处理器幂等写入所述数据漏。
步骤S304,所述乱序回补任务提交器接收所述乱序区间后,触发第二解码器以将所述时序数据库中所述乱序区间对应的原始数据解码为第二数据序列,并通过第二处理器幂等写入所述数据漏。
步骤S305,所述数据漏基于所述第一数据序列和所述第二数据序列得到修复后的目标数据序列,其中,目标数据序列中各目标数据按对应的所述事件时间的数值大小进行排序。
本申请提供实时数据的乱序修复方法、计算机设备和计算机可读存储介质,可以识别参考数据序列中的乱序区间并删除乱序区间对应的乱序数据,得到第一数据序列并幂等写入数据漏。将时序数据库中乱序区间对应的原始数据解码为第二数据序列,并通过第二处理器幂等写入数据漏,使得数据漏基于第一数据序列和第二数据序列得到修复后的目标数据序列。本申请可以有效地侦测实时数据中是否存在乱序数据,识别乱序数据对应的乱序区间,对相邻的乱序区间进行归以及对乱序区间对应的参考数据进行回补修复,减少乱序回补任务器进行回补修复的次数。
本申请所提供的实时数据的乱序修复方法、计算机设备和计算机可读存储介质的具体实施过程,可以参见上述实施例提供的实时数据的乱序修复方法的具体实施过程,在此不再一一赘述。
在本申请所提供的几个实施例中,应该理解到,所揭露的装置和方法,也可以通过其它的方式实现。以上所描述的装置实施例仅仅是示意性的,例如,附图中的流程图和结构图显示了根据本发明的多个实施例的装置、方法和计算机程序产品的可能实现的体系架构、功能和操作。在这点上,流程图或框图中的每个方框可以代表一个模块、程序段或代码的一部分,所述模块、程序段或代码的一部分包含一个或多个用于实现规定的逻辑功能的可执行指令。也应当注意,在作为替换的实现方式中,方框中所标注的功能也可以以不同于附图中所标注的顺序发生。例如,两个连续的方框实际上可以基本并行地执行,它们有时也可以按相反的顺序执行,这依所涉及的功能而定。也要注意的是,结构图和/或流程图中的每个方框、以及结构图和/或流程图中的方框的组合,可以用执行规定的功能或动作的专用的基于硬件的系统来实现,或者可以用专用硬件与计算机指令的组合来实现。
另外,在本发明各个实施例中的各功能模块或单元可以集成在一起形成一个独立的部分,也可以是各个模块单独存在,也可以两个或更多个模块集成形成一个独立的部分。
所述功能如果以软件功能模块的形式实现并作为独立的产品销售或使用时,可以存储在一个计算机可读取存储介质中。基于这样的理解,本发明的技术方案本质上或者说对现有技术做出贡献的部分或者该技术方案的部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质中,包括若干指令用以使得一台计算机设备(可以是智能手机、个人计算机、服务器、或者网络设备等)执行本发明各个实施例所述方法的全部或部分步骤。而前述的存储介质包括:U盘、移动硬盘、只读存储器(ROM,Read-Only Memory)、随机存取存储器(RAM,Random Access Memory)、磁碟或者光盘等各种可以存储程序代码的介质。
以上所述,仅为本发明的具体实施方式,但本发明的保护范围并不局限于此,任何熟悉本技术领域的技术人员在本发明揭露的技术范围内,可轻易想到变化或替换,都应涵盖在本发明的保护范围之内。

Claims (6)

1.一种实时数据的乱序修复系统,其特征在于,所述系统包括实时数据处理引擎、时序数据库、乱序回补任务提交器、批处理引擎和数据漏,其中,所述实时数据处理引擎包括第一解码器、乱序侦测器和第一处理器,所述批处理引擎包括第二解码器和第二处理器;
所述第一解码器用于将原始数据序列解码为参考数据序列,将所述参考数据序列发送至所述乱序侦测器,以及将所述原始数据序列中各原始数据发送至所述时序数据库,其中,所述原始数据序列中的各原始数据按照对应的处理时间升序排列,各原始数据的处理时间和事件时间传递至所述参考数据序列中对应的各参考数据;
所述时序数据库用于以各所述事件时间为索引,将对应的各原始数据进行存储;所述乱序侦测器用于基于各所述处理时间和各所述事件时间判断所述参考数据序列中存在乱序数据时,识别所述参考数据序列中的乱序区间并将所述乱序区间发送至所述乱序回补任务提交器,以及删除所述乱序区间对应的所述乱序数据,得到第一数据序列并通过所述第一处理器幂等写入所述数据漏;
所述乱序回补任务提交器用于触发所述第二解码器以将所述时序数据库中所述乱序区间对应的原始数据解码为第二数据序列,并通过所述第二处理器幂等写入所述数据漏;所述数据漏基于所述第一数据序列和所述第二数据序列得到修复后的目标数据序列,其中,目标数据序列中各目标数据按对应的所述事件时间的数值大小进行排序;
所述乱序侦测器具体用于:
判断所述参考数据序列中第N个参考数据对应的事件时间是否大于第(N-1)个参考数据对应的事件时间,其中N为正整数,N≥2;
若所述参考数据序列中第N个参考数据对应的事件时间小于第(N-1)个参考数据对应的事件时间,判定所述参考数据序列发生乱序并将所述第N个参考数据确定为所述乱序数据;
若所述参考数据序列中第N个参考数据对应的事件时间大于第(N-1)个参考数据对应的事件时间,判定所述参考数据序列未发生乱序并将所述第N个参考数据确定为顺序数据;
所述乱序侦测器具体还用于:
将所述参考数据序列中,连续的M个所述乱序数据对应的事件时间确定为预设区间,其中M为正整数,M≥1;
若所述参考数据序列中的所述预设区间的数量为一个,或,所述参考数据序列中的所述预设区间的数量至少为两个且相邻两个所述预设区间之间的所述顺序数据的数量超过预设阈值,将所述预设区间确定为所述乱序区间;
若所述参考数据序列中的所述预设区间的数量至少为两个,且相邻两个所述预设区间之间的所述顺序数据的数量未超过所述预设阈值,将相邻两个所述预设区间以及相邻两个所述预设区间之间的所述顺序数据合并为所述乱序区间,其中,选取相邻两个所述预设区间中次序在前的所述预设区间中起点对应的事件时间为所述乱序区间的起点,选取相邻两个所述预设区间中次序在后的所述预设区间中终点对应的事件时间为所述乱序区间的终点。
2.根据权利要求1所述的实时数据的乱序修复系统,其特征在于,所述实时数据的乱序修复系统还包括消息中间件,所述乱序侦测器通过所述消息中间件与所述第二解码器通信连接;
所述消息中间件用于接收所述乱序侦测器发送的所述乱序区间,并将所述乱序区间发送至所述乱序回补任务提交器;
所述乱序回补任务提交器用于生成对应所述乱序区间的批处理任务,其中,所述批处理任务用于指示所述第二解码器以将所述时序数据库中所述乱序区间对应的原始数据解码为第二数据序列,并通过所述第二处理器幂等写入所述数据漏。
3.一种实时数据的乱序修复方法,其特征在于,应用于权利要求1-2中任一项所述的实时数据的乱序修复系统,所述实时数据的乱序修复方法包括:
第一解码器将原始数据序列解码为参考数据序列,将所述参考数据序列发送至乱序侦测器,以及将所述原始数据序列中各所述原始数据发送至时序数据库,其中,所述原始数据序列中的各原始数据按照对应的处理时间升序排列,各原始数据的处理时间和事件时间传递至所述参考数据序列中对应的各参考数据;
所述时序数据库以各所述事件时间为索引,将对应的各所述原始数据进行存储;
所述乱序侦测器基于各所述处理时间和各所述事件时间判断所述参考数据序列中存在乱序数据时,识别所述参考数据序列中的乱序区间并将所述乱序区间发送至乱序回补任务提交器,以及删除所述乱序区间对应的所述乱序数据,得到第一数据序列并通过第一处理器幂等写入数据漏;
所述乱序回补任务提交器接收所述乱序区间后,触发第二解码器以将所述时序数据库中所述乱序区间对应的原始数据解码为第二数据序列,并通过第二处理器幂等写入所述数据漏;
所述数据漏基于所述第一数据序列和所述第二数据序列得到修复后的目标数据序列,其中,目标数据序列中各目标数据按对应的所述事件时间的数值大小进行排序;
所述乱序侦测器基于各所述处理时间和各所述事件时间判断所述参考数据序列中存在乱序数据的步骤,包括:
判断所述参考数据序列中第N个参考数据对应的事件时间是否大于第(N-1)个参考数据对应的事件时间,其中N为正整数,N≥2;
若所述参考数据序列中第N个参考数据对应的事件时间小于第(N-1)个参考数据对应的事件时间,判定所述参考数据序列发生乱序并将所述第N个参考数据确定为乱序数据;
若所述参考数据序列中第N个参考数据对应的事件时间大于第(N-1)个参考数据对应的事件时间,判定所述参考数据序列未发生乱序并将所述第N个参考数据确定为顺序数据;
所述乱序侦测器识别所述参考数据序列中的乱序区间的步骤,包括:
将所述参考数据序列中,连续的M个所述乱序数据对应的事件时间确定为预设区间,其中M为正整数,M≥1;
若所述参考数据序列中的所述预设区间的数量为一个,或,所述参考数据序列中的所述预设区间的数量至少为两个且相邻两个所述预设区间之间的所述顺序数据的数量超过预设阈值,将所述预设区间确定为所述乱序区间;
若所述参考数据序列中的所述预设区间的数量至少为两个,且相邻两个所述预设区间之间的所述顺序数据的数量未超过所述预设阈值,将相邻两个所述预设区间以及相邻两个所述预设区间之间的所述顺序数据合并为所述乱序区间,其中,选取相邻两个所述预设区间中次序在前的所述预设区间中起点对应的事件时间为所述乱序区间的起点,选取相邻两个所述预设区间中次序在后的所述预设区间中终点对应的事件时间为所述乱序区间的终点。
4.根据权利要求3所述的实时数据的乱序修复方法,其特征在于,所述实时数据的乱序修复系统还包括消息中间件,所述乱序侦测器通过所述消息中间件与所述第二解码器通信连接;
所述乱序侦测器将所述乱序区间发送至所述乱序回补任务提交器的步骤,包括:
所述消息中间件接收所述乱序侦测器发送的所述乱序区间,并将所述乱序区间发送至所述乱序回补任务提交器;
所述乱序回补任务提交器生成对应所述乱序区间的批处理任务,其中,所述批处理任务用于指示所述第二解码器以将所述时序数据库中所述乱序区间对应的原始数据解码为第二数据序列,并通过所述第二处理器幂等写入所述数据漏。
5.一种计算机设备,其特征在于,所述计算机设备包括处理设备和存储器,所述处理设备上加载有权利要求1至2中任一项所述的实时数据的乱序修复系统,所述存储器存储有计算机程序,所述计算机程序在所述处理器上执行时实现权利要求3至4中任一项所述的实时数据的乱序修复方法。
6.一种计算机可读存储介质,其特征在于,所述计算机可读存储介质存储有计算机程序,所述计算机程序在处理设备上执行时实现权利要求3至4中任一项所述的实时数据的乱序修复方法。
CN202210314616.0A 2022-03-29 2022-03-29 一种实时数据的乱序修复系统、方法及计算机设备 Active CN114416407B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN202210314616.0A CN114416407B (zh) 2022-03-29 2022-03-29 一种实时数据的乱序修复系统、方法及计算机设备

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN202210314616.0A CN114416407B (zh) 2022-03-29 2022-03-29 一种实时数据的乱序修复系统、方法及计算机设备

Publications (2)

Publication Number Publication Date
CN114416407A CN114416407A (zh) 2022-04-29
CN114416407B true CN114416407B (zh) 2022-06-28

Family

ID=81263754

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202210314616.0A Active CN114416407B (zh) 2022-03-29 2022-03-29 一种实时数据的乱序修复系统、方法及计算机设备

Country Status (1)

Country Link
CN (1) CN114416407B (zh)

Families Citing this family (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN116193511B (zh) * 2023-04-21 2023-07-21 广东南方电信规划咨询设计院有限公司 一种5g数据流量乱序处理方法和系统

Family Cites Families (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2786574B2 (ja) * 1992-05-06 1998-08-13 インターナショナル・ビジネス・マシーンズ・コーポレイション コンピュータ・システムにおける順不同ロード動作の性能を改善する方法と装置
JP2007274568A (ja) * 2006-03-31 2007-10-18 Oki Electric Ind Co Ltd パケットロス補償方法、パケット送信装置及びパケット受信装置
CN103024449B (zh) * 2011-09-28 2015-08-19 中国移动通信集团公司 视频帧流处理方法、视频服务器及终端设备
CN104935597B (zh) * 2015-06-17 2018-08-24 新华三技术有限公司 防重放窗口控制方法以及装置
CN112579820B (zh) * 2019-09-27 2023-03-24 浙江宇视科技有限公司 时间跳变的录像数据处理方法、装置、介质及电子设备
CN113934458A (zh) * 2021-09-24 2022-01-14 唯品会(广州)软件有限公司 一种时序指标乱序检测方法、装置及介质

Also Published As

Publication number Publication date
CN114416407A (zh) 2022-04-29

Similar Documents

Publication Publication Date Title
CN110457912B (zh) 数据处理方法、装置和电子设备
Baier et al. Efficient computation of time-bounded reachability probabilities in uniform continuous-time Markov decision processes
CN101166159B (zh) 一种确定垃圾信息的方法及系统
CN105577530B (zh) 一种群聊信息概览方法及装置
CN109146638B (zh) 异常金融交易群体的识别方法及装置
US7698106B2 (en) System and method for benchmarking correlated stream processing systems
CN105339978A (zh) 确定电子邮件线程的话题相关性
CN110826799B (zh) 业务预测方法、装置、服务器及可读存储介质
CN114416407B (zh) 一种实时数据的乱序修复系统、方法及计算机设备
US11734077B2 (en) Evaluation device, evaluation method and evaluation program
CN112181614B (zh) 任务超时监控方法、装置、设备、系统及存储介质
CN113157981B (zh) 一种图网络关系扩散方法和装置
CN112631888A (zh) 分布式系统的故障预测方法、装置、存储介质及电子设备
CN112087530A (zh) 一种将数据上传至区块链系统的方法、装置、设备及介质
CN110972086A (zh) 短信息处理方法、装置、电子设备及计算机可读存储介质
CN114189818A (zh) 消息发送方法、装置、服务器及存储介质
Hélouët et al. Covert channels detection in protocols using scenarios
CN111382239B (zh) 一种交互流程的优化方法及其装置
CN109741073B (zh) 区块链的审查攻击处理方法、系统及电子设备和存储介质
KR101917325B1 (ko) 리시버 스테이트를 이용한 챗봇 대화 관리 장치, 방법 및 컴퓨터 판독가능 저장매체
CN114840421A (zh) 日志数据处理方法及装置
CN112988497B (zh) 管理备份系统的方法、电子设备和计算机程序产品
CN113868479A (zh) 对于业务数据的处理方法及装置
CN111061712A (zh) 一种数据连接操作的处理方法及装置
CN111767435A (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
TR01 Transfer of patent right
TR01 Transfer of patent right

Effective date of registration: 20220916

Address after: Room 501, 5th Floor, Magic Bean Warehouse, Sany Industrial City, No. 1 Sanyi Road, Changsha Economic and Technological Development Zone, Changsha, Hunan Province, 410111

Patentee after: Shugen Gezhi Technology (Hunan) Co.,Ltd.

Patentee after: Shugen Internet Co.,Ltd.

Address before: Room 303-309, 3 Pazhou Avenue East Road, Haizhu District, Guangzhou, Guangdong 510000

Patentee before: Shugen Internet Co.,Ltd.