CN117459483A - 高并发流数据乱序处理方法、装置、设备及存储介质 - Google Patents

高并发流数据乱序处理方法、装置、设备及存储介质 Download PDF

Info

Publication number
CN117459483A
CN117459483A CN202311386024.0A CN202311386024A CN117459483A CN 117459483 A CN117459483 A CN 117459483A CN 202311386024 A CN202311386024 A CN 202311386024A CN 117459483 A CN117459483 A CN 117459483A
Authority
CN
China
Prior art keywords
data
unit data
water level
unit
sorting
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
Application number
CN202311386024.0A
Other languages
English (en)
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.)
China United Network Communications Group Co Ltd
China Information Technology Designing and Consulting Institute Co Ltd
Original Assignee
China United Network Communications Group Co Ltd
China Information Technology Designing and Consulting Institute 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 China United Network Communications Group Co Ltd, China Information Technology Designing and Consulting Institute Co Ltd filed Critical China United Network Communications Group Co Ltd
Priority to CN202311386024.0A priority Critical patent/CN117459483A/zh
Publication of CN117459483A publication Critical patent/CN117459483A/zh
Pending legal-status Critical Current

Links

Classifications

    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L49/00Packet switching elements
    • H04L49/90Buffering arrangements
    • H04L49/9057Arrangements for supporting packet reassembly or resequencing
    • YGENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
    • Y02TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
    • Y02DCLIMATE CHANGE MITIGATION TECHNOLOGIES IN INFORMATION AND COMMUNICATION TECHNOLOGIES [ICT], I.E. INFORMATION AND COMMUNICATION TECHNOLOGIES AIMING AT THE REDUCTION OF THEIR OWN ENERGY USE
    • Y02D10/00Energy efficient computing, e.g. low power processors, power management or thermal management

Landscapes

  • Engineering & Computer Science (AREA)
  • Computer Networks & Wireless Communication (AREA)
  • Signal Processing (AREA)
  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)

Abstract

本申请提供一种高并发流数据乱序处理方法、装置、设备及存储介质,通过获取各数据源的流数据,对流数据进行预处理,获得统一数据格式的多个单元数据;从所述单元数据中选定该单元数据对应的关键词,基于预设的分组参数,根据所述关键词将单元数据分至若干个排序组;对于每个所述排序组,在预设的时长窗口内,基于单元数据的时间戳,按照单元数据进入到该排序组的顺序计算该排序组的水位,并采用二叉树对各单元数据进行缓存,将所述二叉树中存储的时间戳小于该排序组的水位的单元数据作为输出数据;将输出数据按照预设写入规则写入至输出目标,通过预设时长窗口,利用水位算法和二叉树完成对任意数据任意字段的实时排序,避免数据处理混乱。

Description

高并发流数据乱序处理方法、装置、设备及存储介质
技术领域
本申请涉及数据处理技术领域,尤其涉及一种高并发流数据乱序处理方法、装置、设备及存储介质。
背景技术
数据处理系统中,数据源会向外产生大量数据,相同类型的数据构成一串数据流,实时流数据是以持续不断的方式产生的数据流,它可以包含来自各种源的事件、日志、传感器数据等。由于网络延迟、数据传输问题或数据源之间的差异,这些流数据在到达处理系统时可能会以乱序的方式到达,即不按照事件发生的顺序进行排列。随着互联网信息的蓬勃快速的发展,服务器需要处理多个数据源的数据,在处理大量数据的情况下,可能会因高并发流数据带来数据解析存储问题,比如可能会出现停止处理、处理混乱、处理速度减慢等问题,从而对发出请求的用户造成不必要的影响。因此,在高并发实时流数据处理的背景下,乱序数据的处理变得尤为重要。
传统的乱序数据处理的技术可以将流数据按照时间进行分段,并在每个窗口内对数据进行排序。通过定义合适的时长窗口大小和排序策略,可以将乱序数据重新按照事件发生的顺序进行处理;还可以结合事件时间戳对乱序数据进行重新排序和处理。
但现有的乱序数据处理通常需要引入排序、缓冲和调整数据顺序的步骤,这可能导致处理延迟的增加,在处理大规模的实时流数据时,延迟的增加可能对系统的实时性和响应性产生负面影响,甚至导致数据处理混乱的问题。
发明内容
本申请提供一种高并发流数据乱序处理方法、装置、设备及存储介质,用以解决现有技术数据延迟性高,在处理高并发流数据时容易数据处理混乱的问题。
第一方面,本申请提供一种高并发流数据乱序处理方法,包括:
获取各数据源的流数据,对流数据进行预处理,获得统一数据格式的多个单元数据,所述单元数据包括时间戳;
从所述单元数据中选定该单元数据对应的关键词,基于预设的分组参数,根据所述关键词将单元数据分至若干个排序组;
对于每个所述排序组,在预设的时长窗口内,基于单元数据的时间戳,按照单元数据进入到该排序组的顺序计算该排序组的水位,并采用二叉树对各单元数据进行缓存,将所述二叉树中存储的时间戳小于该排序组的水位的单元数据作为输出数据;
将输出数据按照预设写入规则写入至输出目标。
可选地,如上所述的方法,该方法采用Flink流处理框架,通过Flink采集算子对接不同的数据源,通过排序算子对各所述排序组进行排序和缓存。
可选地,如上所述的方法,从所述单元数据中选定该单元数据对应的关键词,基于预设的分组参数,根据所述关键词将单元数据分至若干个排序组,包括:
根据预设的关键词捕捉规则从所述单元数据中选择目标关键词作为该单元数据的key;
采用预设的keyby参数对各单元数据进行分组,将所述单元数据均衡地分散到多个排序算子上。
可选地,如上所述的方法,所述基于单元数据的时间戳,按照单元数据进入到该排序组的顺序计算该排序组的水位,包括:
根据预设时长窗口确定起始时间戳,将所述单元数据的时间戳与所述起始时间戳的差值作为该单元数据的水位;
若所述单元数据为第一个进入排序组,则将该单元数据的水位作为排序组的水位;
若所述单元数据为进入排序组的顺序非第一个,判断该单元数据的水位是否大于排序组的水位;
若是,则更新排序组的水位为该单元数据的水位,并将该单元数据作为排序单元数据存入二叉树。
可选地,如上所述的方法,所述将所述二叉树中存储的时间戳小于该排序组水位的单元数据作为输出数据,包括:
对于每一个进入排序组的当前单元数据,在确认当前排序组的水位之后,遍历所述二叉树中的排序单元数据,将时间戳小于当前排序组的水位的排序单元数据作为输出数据。
可选地,如上所述的方法,所述对流数据进行预处理,获得统一数据格式的多个单元数据,包括:
将各流数据按照与流数据对应的协议解析成最小粒度的数据;
对各流数据解析得到的数据进行格式转换,得到预设数据格式的单元数据。
可选地,如上所述的方法,在所述获得统一数据格式的多个单元数据之后,还包括:
对所述单元数据进行清洗过滤,筛除噪声数据,所述噪声数据包括空数据、格式错误数据和过期数据。
第二方面,本申请提供一种高并发流数据乱序处理装置,包括:
数据采集模块,用于获取各数据源的流数据,对流数据进行预处理,获得统一数据格式的多个单元数据,所述单元数据包括时间戳;
数据分组模块,用于从所述单元数据中选定该单元数据对应的关键词,基于预设的分组参数,根据所述关键词将单元数据分至若干个排序组;
排序模块,用于对于每个所述排序组,在预设的时长窗口内,基于单元数据的时间戳,按照单元数据进入到该排序组的顺序计算该排序组的水位,并采用二叉树对各单元数据进行缓存,将所述二叉树中存储的时间戳小于该排序组的水位的单元数据作为输出数据;
输出模块,用于将输出数据按照预设写入规则写入至输出目标。
第三方面,本申请提供了一种电子设备,包括存储器、处理器以及存储在所述存储器中并可在所述处理器上运行的计算机执行指令,所述处理器执行所述计算机执行指令时实现上述第一方面中任一项所述的高并发流数据乱序处理方法。
第四方面,本申请提供了一种计算机可读存储介质,所述计算机可读存储介质存储有计算机程序,所述计算机程序被处理器执行时实现上述第一方面中任一项所述的高并发流数据乱序处理方法。
本申请提供的高并发流数据乱序处理方法、装置、设备及存储介质,通过获取各数据源的流数据,对流数据进行预处理,获得统一数据格式的多个单元数据,所述单元数据包括时间戳;从所述单元数据中选定该单元数据对应的关键词,基于预设的分组参数,根据所述关键词将单元数据分至若干个排序组;对于每个所述排序组,在预设的时长窗口内,基于单元数据的时间戳,按照单元数据进入到该排序组的顺序计算该排序组的水位,并采用二叉树对各单元数据进行缓存,将所述二叉树中存储的时间戳小于该排序组的水位的单元数据作为输出数据;将输出数据按照预设写入规则写入至输出目标,通过提前设置一个固定的延迟时间,可以保证以固定的延迟时间进行乱序数据处理,通过预设时长窗口,利用水位算法和二叉树完成对任意数据任意字段的实时排序,避免数据处理混乱。
附图说明
此处的附图被并入说明书中并构成本说明书的一部分,示出了符合本申请的实施例,并与说明书一起用于解释本申请的原理。
图1为本申请实施例提供的高并发流数据乱序处理方法的应用场景示意图。
图2为本申请实施例提供的高并发流数据乱序处理方法的流程图。
图3为本实施例提供的对单元数据进行排序的方法的流程图。
图4为本申请实施例提供的高并发流数据乱序处理装置的示意图。
图5为本申请实施例提供的基于高并发流数据乱序处理装置的电子设备的结构示意图。
通过上述附图,已示出本申请明确的实施例,后文中将有更详细的描述。这些附图和文字描述并不是为了通过任何方式限制本申请构思的范围,而是通过参考特定实施例为本领域技术人员说明本申请的概念。
具体实施方式
这里将详细地对示例性实施例进行说明,其示例表示在附图中。下面的描述涉及附图时,除非另有表示,不同附图中的相同数字表示相同或相似的要素。以下示例性实施例中所描述的实施方式并不代表与本申请相一致的所有实施方式。相反,它们仅是与如所附权利要求书中所详述的、本申请的一些方面相一致的装置和方法的例子。
在相关技术中,实时流数据是以持续不断的方式产生的数据流,它可以包含来自各种源的事件、日志、传感器数据等。由于网络延迟、数据传输问题或数据源之间的差异,这些流数据在到达处理系统时可能会以乱序的方式到达,即不按照事件发生的顺序进行排列。处理乱序数据通常需要引入排序、缓冲和调整数据顺序的步骤,这可能导致处理延迟的增加,在处理大规模的实时流数据时,延迟的增加可能对系统的实时性和响应性产生负面影响。并且,在处理乱序数据时,保证数据的一致性可能是一个挑战。处理系统需要在排序和调整数据顺序的过程中确保数据的正确性和一致性,以避免出现错误的结果和计算。
针对上述技术问题,本申请实施例旨在提出一种高并发流数据乱序处理方法、装置、设备及存储介质,该方法的核心构思为:通过提前设置一个固定的延迟时间,可以保证以固定的延迟时间进行乱序数据处理。也就是说,在配置好可容忍的延迟度之后,通过水位算法和二叉树存储可以完成对任意数据任意字段的实时排序,并且可以通过增加服务器的方式来提高该方法所能处理的并发量和数据量。
为了更好地理解本申请实施例的方案,下面先对本申请实施例所涉及的一种应用场景进行介绍。
请参阅图1,图1为本申请实施例提供的高并发流数据乱序处理方法的应用场景示意图,如图1所示,包括数据源100和服务器200,所述数据源100可以包括kafka、数据库、http接口等。需要说明的是,在高并发大数据量的情况下,会出现单台服务器资源不足的情况,本申请所述服务器200也可以为服务器集群,也就是说,所述服务器200可以为采用Flink流处理框架的服务器或服务器集群,所有步骤都运行在Flink集群的各个算子上。
具体地,服务器200中,可以使用Flink采集算子对接各种不同的数据源,在采集算子中实现对应数据源的连接和数据读取逻辑,从而实现不同数据源的连接、数据读取和数据解析。采集算子将数据源中的数据按照对应约定好的协议解析成最小粒度的数据,按顺序将每个数据发送给下游的转换算子。转换算子针对每种数据格式编写处理逻辑,将源数据转换成系统内部统一的数据格式,再发送给下游的清洗算子。清洗算子完成数据的清洗后,发送给下游的排序算子实现乱序数据的排序。
需要说明的是,因为清洗算子输出的数据是幂等的,所以本发明在清洗算子向排序算子发送数据的时候,选定数据中合适的字段作为key,通过keyby分组将数据均衡的分散到多个排序算子上进行排序。每个排序算子可运行在不同的服务器上,从而实现了系统处理容量的横向扩容,摆脱了单台服务器的资源约束。预先配置好时长窗口后,排序算子接收数据并进行排序,在内存中以排序二叉树缓存数据,并根据水位算法决定数据的排序和输出。排序算子将正确排序的数据输出到下游的输出算子,在输出算子编写输出目标的连接和数据写入逻辑,将排序好的数据写入输出目标。至此,输出目标中就会出现实时的排序正确的数据流供其他系统使用。
下面以具体的实施例对本申请的技术方案以及本申请的技术方案如何解决上述技术问题进行详细说明。下面这几个具体的实施例可以相互结合,对于相同或相似的概念或过程可能在某些实施例中不再赘述。下面将结合附图,对本申请的实施例进行描述。
图2为本申请实施例提供的高并发流数据乱序处理方法的流程图。如图2所示,本实施例的方法,包括:
S201:获取各数据源的流数据,对流数据进行预处理,获得统一数据格式的多个单元数据,所述单元数据包括时间戳。
本申请实施例的执行主体可以是服务器,也可以是服务器中的高并发流数据乱序处理系统,其中,高并发流数据乱序处理系统可以通过软件实现。
可以理解的是,在实际应用中,各种中间件包括kafka、数据库、http接口都会产生高并发实时流数据,其中,在处理来自Kafka的数据时,可为每一个topic创建一个消费者,对应转换为一条流,每一个流单独处理,互不影响。
在该步骤中,对流数据进行预处理也就包括了对流数据进行解析、格式转换和数据清洗等操作,从而获得能够被后续步骤使用的同一格式的单元数据。
S202:从所述单元数据中选定该单元数据对应的关键词,基于预设的分组参数,根据所述关键词将单元数据分至若干个排序组。
可以理解的是,因为排序需要对时长窗口内的数据进行缓存,时长窗口越大需要缓存的数据越多,所以在高并发大数据量的情况下,会出现单台服务器资源不足的情况。本实施例通过分组将单元数据均衡的分散到多个排序组进行排序。每个排序组可运行在不同的服务器上,从而实现了系统处理容量的横向扩容,摆脱了单台服务器的资源约束。
S203:对于每个所述排序组,在预设的时长窗口内,基于单元数据的时间戳,按照单元数据进入到该排序组的顺序计算该排序组的水位,并采用二叉树对各单元数据进行缓存,将所述二叉树中存储的时间戳小于该排序组的水位的单元数据作为输出数据。
在该步骤中,首先需要预设一个合适的时长窗口,所述时长窗口可以通过人为配置,具体地,可以根据不同时长窗口的准确性和延迟性之间进行分析和选择。在一个时长窗口内的所有单元数据为一批,通过水位算法和二叉树存储来完成这些数据的排序。对于时长窗口外的数据则旁路输出到其他缓存区域,进行抛弃,或者经过其他步骤实现对后续结果的修正。
S204:将输出数据按照预设写入规则写入至输出目标。
在该步骤中,输出数据为正确排序的数据,则可以根据预设的输出目标的路径和写入规则,将排序好的数据写入输出目标。至此,输出目标中就会出现实时的排序正确的数据流供其他系统使用。
本实施例提供的高并发流数据乱序处理方法,通过获取各数据源的流数据,对流数据进行预处理,获得统一数据格式的多个单元数据,所述单元数据包括时间戳;从所述单元数据中选定该单元数据对应的关键词,基于预设的分组参数,根据所述关键词将单元数据分至若干个排序组;对于每个所述排序组,在预设的时长窗口内,基于单元数据的时间戳,按照单元数据进入到该排序组的顺序计算该排序组的水位,并采用二叉树对各单元数据进行缓存,将所述二叉树中存储的时间戳小于该排序组的水位的单元数据作为输出数据;将输出数据按照预设写入规则写入至输出目标,通过提前设置一个固定的延迟时间,可以保证以固定的延迟时间进行乱序数据处理,通过预设时长窗口,利用水位算法和二叉树完成对任意数据任意字段的实时排序,避免数据处理混乱。
下面对上述高并发流数据乱序处理方法的技术方案进行详细介绍。
在一种可能的实施方式中,本实施例提供的高并发流数据乱序处理方法采用Flink流处理框架,通过Flink采集算子对接不同的数据源,通过排序算子对各所述排序组进行排序和缓存。
可以理解的是,Flink本质上是分布式框架,每个算子可以单独设置并行度,由此产生一个或多个算子的子任务,每个子任务彼此独立,并在不同的线程、节点或容器中运行。采集算子对接不同的数据源之后,可以通过转换算子、清洗算子对各流数据进行数据处理,而清洗算子输出的单元数据是幂等的,因此,在清洗算子向排序算子发送数据的时候,选定数据中合适的字段作为key,通过keyby分组将数据均衡的分散到多个排序算子上进行排序。
因此,从所述单元数据中选定该单元数据对应的关键词,基于预设的分组参数,根据所述关键词将单元数据分至若干个排序组,具体包括:根据预设的关键词捕捉规则从所述单元数据中选择目标关键词作为该单元数据的key;采用预设的keyby参数对各单元数据进行分组,将所述单元数据均衡地分散到多个排序算子上。
本实施例中,通过Flink流处理框架的各算子执行各步骤的任务,其中,通过采集算子对接不同的数据源,通过排序算子对各所述排序组进行排序和缓存,每个算子可运行在不同的服务器上,从而实现了系统处理容量的横向扩容,摆脱了单台服务器的资源约束。
在一种可能的实施方式中,本实施例提供的高并发流数据乱序处理方法通过基于单元数据的时间戳,按照单元数据进入到该排序组的顺序计算该单元数据的水位,再根据该单元数据的水位来确定该排序组的水位,结合二叉树对单元数据进行排序和存储,实现对单元数据的排序。图3为本实施例提供的对单元数据进行排序的方法的流程图,如图3所示,基于单元数据的时间戳,按照单元数据进入到该排序组的顺序计算该排序组的水位,将所述二叉树中存储的时间戳小于该排序组水位的单元数据作为输出数据,包括:
S301:根据预设时长窗口确定起始时间戳,将所述单元数据的时间戳与所述起始时间戳的差值作为该单元数据的水位。
S302:若所述单元数据为第一个进入排序组,则将该单元数据的水位作为排序组的水位。
S303:若所述单元数据为进入排序组的顺序非第一个,判断该单元数据的水位是否大于排序组的水位。
S304:若是,则更新排序组的水位为该单元数据的水位,并将该单元数据作为排序单元数据存入二叉树。
S305:对于每一个进入排序组的当前单元数据,在确认当前排序组的水位之后,遍历所述二叉树中的排序单元数据,将时间戳小于当前排序组的水位的排序单元数据作为输出数据。
具体地,假设配置的时长窗口为tw,排序算子收到时间戳为tx的数据后,计算该数据的水位然后判断当前算子的水位。如果算子尚未设置水位,则将该数据的水位设置为算子的水位/>在内存中以排序二叉树缓存该数据;如果算子已经设置有水位,则比较算子水位和该数据的时间戳,如果该数据的时间戳小于算子水位(即tx<tm),则该数据为过期数据进行旁路输出或直接抛弃;否则(即tx≥tm)将该数据插入排序二叉树,然后比较算子水位和该数据的水位,如果该数据的水位大于算子水位(即/>),则将该数据的水位作为最新的水位更新到算子水位/>然后左序遍历内存中的排序二叉树,将二叉树中所有时间戳小于算子水位的数据按遍历顺序进行删除并向下游算子发送,遍历完之后更新二叉树为新的排序二叉树。这样,排序算子输出的就是按时间戳排序后的数据。
示例性的,根据预设时长窗口确定的起始时间戳为10,启动排序算子,此时排序算子的算子水位为空,算子缓存的排序二叉树数据为空。
排序排序算子收到时间戳为5的数据后,计算算子水位为5-10=-5,将该数据插入排序二叉树,此时排序二叉树内包含5。
排序算子收到时间戳为3的数据后,该数据的水位为3-10=-7,小于算子水位,因此不更新算子水位,仅将该数据插入排序二叉树,此时排序二叉树包含3和5。
排序算子收到时间戳为8的数据,该数据的水位为8-10=-2,大于算子水位,因此更新算子水位为-2,将该数据插入排序二叉树,左序遍历排序二叉树,未发现二叉树内存在小于算子水位的数据,因此不输出数据。此时二叉树内包含3、5、8。
排序算子收到时间戳为16的数据,该数据的水位为16-10=6,大于算子水位,因此更新算子水位为6,将该数据插入排序二叉树,左序遍历排序二叉树发现3和5小于算子当前水位,因此从二叉树中依次删除3和5,并输出。此时二叉树内包含8和16。
排序算子收到时间戳为7的数据,该数据的水位为7-10=-3,小于算子水位,因此不更新算子水位,仅将该数据插入排序二叉树,此时二叉树包含7、8、16。
排序算子收到时间戳为9的数据,该数据的水位为9-10=-1,小于算子水位,因此不更新算子水位,仅将该数据插入排序二叉树,此时二叉树包含7、8、9、16。
排序算子收到时间戳为21的数据,该数据的水位为21-10=11,大于算子水位,因此更新算子水位为11,插入该数据到排序二叉树。左序遍历二叉树发现7、8、9小于算子水位11,因此从二叉树中依次删除7、8、9,并输出。此时二叉树包含16、21。
排序算子收到时间戳为4的数据,该数据小于算子水位,将该数据输入至备用存储区,或直接抛弃该数据。
本实施例中,通过基于单元数据的时间戳,按照单元数据进入到该排序组的顺序计算该单元数据的水位,再根据该单元数据的水位来确定该排序组的水位,结合二叉树对单元数据进行排序和存储,实现对单元数据的排序。
在一种可能的实施方式中,考虑到各数据源产生的流数据可能会有不同数据逻辑和数据格式,本实施例提供的高并发流数据乱序处理方法通过现将流数据解析为最小粒度的数据,再对各数据进行格式转换。
具体地,对流数据进行预处理,获得统一数据格式的多个单元数据,包括:将各流数据按照与流数据对应的协议解析成最小粒度的数据;对各流数据解析得到的数据进行格式转换,得到预设数据格式的单元数据。
在本实施例中,可以通过采集算子对接各种不同的数据源,在采集算子中实现对应数据源的连接和数据读取逻辑,从而实现不同数据源的连接、数据读取和数据解析。
进一步地,采集算子将数据源中的数据按照对应约定好的协议解析成最小粒度的数据,按顺序将每个数据发送给下游的转换算子。不同数据源采集的数据格式可能不同,因此转换算子针对每种数据格式编写处理逻辑,将源数据转换成系统内部统一的数据格式。如果源数据本身就是统一的数据格式,则转换算子不需要做任何操作,直接将该数据发送给下游算子。
本实施例中,通过现将流数据解析为最小粒度的数据,再对各数据进行格式转换,从而保证数据的一致性。
在一种可能的实施方式中,考虑到流数据中的数据存在有一定的噪声数据,并且数据中在经过处理和转换之后可能存在一些错误数据,本实施例提供的高并发流数据乱序处理方法在所述获得统一数据格式的多个单元数据之后,还包括:对所述单元数据进行清洗过滤,筛除噪声数据,所述噪声数据包括空数据、格式错误数据和过期数据。
可以理解的是,对单元数据进行清洗过滤也就是对不准确、不完整、不合理、格式、字符等不规范单元数据进行过滤清洗,清洗过的数据才能更加符合需求,从而使后续的数据分析应用更为准确。
在本实施例中,可以在转换算子中编写各种规则逻辑,将各种噪声数据进行清洗过滤,具体地,清洗过滤可以包括重复数据清洗、不完整数据清洗、错误数据清洗等。
本实施例中,通过对单元数据进行清洗过滤,确保数据的准确性、一致性,保证向后传递的数据都是有价值的。
需要说明的是,对于前述的各方法实施例,为了简单描述,故将其都表述为一系列的动作组合,但是本领域技术人员应该知悉,本申请并不受所描述的动作顺序的限制,因为依据本申请,某些步骤可以采用其他顺序或者同时进行。其次,本领域技术人员也应该知悉,说明书中所描述的实施例均属于可选实施例,所涉及的动作和模块并不一定是本申请所必须的。
进一步需要说明的是,虽然流程图中的各个步骤按照箭头的指示依次显示,但是这些步骤并不是必然按照箭头指示的顺序依次执行。除非本文中有明确的说明,这些步骤的执行并没有严格的顺序限制,这些步骤可以以其它的顺序执行。而且,流程图中的至少一部分步骤可以包括多个子步骤或者多个阶段,这些子步骤或者阶段并不必然是在同一时刻执行完成,而是可以在不同的时刻执行,这些子步骤或者阶段的执行顺序也不必然是依次进行,而是可以与其它步骤或者其它步骤的子步骤或者阶段的至少一部分轮流或者交替地执行。
图4为本申请实施例提供的高并发流数据乱序处理装置的示意图。如图4所示,该高并发流数据乱序处理装置包括:
数据采集模块41,用于获取各数据源的流数据,对流数据进行预处理,获得统一数据格式的多个单元数据,所述单元数据包括时间戳;
数据分组模块42,用于从所述单元数据中选定该单元数据对应的关键词,基于预设的分组参数,根据所述关键词将单元数据分至若干个排序组;
排序模块43,用于对于每个所述排序组,在预设的时长窗口内,基于单元数据的时间戳,按照单元数据进入到该排序组的顺序计算该排序组的水位,并采用二叉树对各单元数据进行缓存,将所述二叉树中存储的时间戳小于该排序组的水位的单元数据作为输出数据;
输出模块44,用于将输出数据按照预设写入规则写入至输出目标。
在一种可能的设计中,该装置采用Flink流处理框架,通过Flink采集算子对接不同的数据源,通过排序算子对各所述排序组进行排序和缓存。
在一种可能的设计中,数据分组模块42具体用于:
根据预设的关键词捕捉规则从所述单元数据中选择目标关键词作为该单元数据的key;采用预设的keyby参数对各单元数据进行分组,将所述单元数据均衡地分散到多个排序算子上。
在一种可能的设计中,排序模块43具体用于:
根据预设时长窗口确定起始时间戳,将所述单元数据的时间戳与所述起始时间戳的差值作为该单元数据的水位;
若所述单元数据为第一个进入排序组,则将该单元数据的水位作为排序组的水位;
若所述单元数据为进入排序组的顺序非第一个,判断该单元数据的水位是否大于排序组的水位;
若是,则更新排序组的水位为该单元数据的水位,并将该单元数据作为排序单元数据存入二叉树。
在一种可能的设计中,排序模块43具体用于:
对于每一个进入排序组的当前单元数据,在确认当前排序组的水位之后,遍历所述二叉树中的排序单元数据,将时间戳小于当前排序组的水位的排序单元数据作为输出数据。
在一种可能的设计中,数据采集模块41具体用于:
将各流数据按照与流数据对应的协议解析成最小粒度的数据;
对各流数据解析得到的数据进行格式转换,得到预设数据格式的单元数据。
在一种可能的设计中,数据采集模块41具体用于:
对所述单元数据进行清洗过滤,筛除噪声数据,所述噪声数据包括空数据、格式错误数据和过期数据。
应该理解,上述的装置实施例仅是示意性的,本申请的装置还可通过其它的方式实现。例如,上述实施例中单元/模块的划分,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式。例如,多个单元、模块或组件可以结合,或者可以集成到另一个系统,或一些特征可以忽略或不执行。
另外,若无特别说明,在本申请各个实施例中的各功能单元/模块可以集成在一个单元/模块中,也可以是各个单元/模块单独物理存在,也可以两个或两个以上单元/模块集成在一起。上述集成的单元/模块既可以采用硬件的形式实现,也可以采用软件程序模块的形式实现。
图5为本申请实施例提供的基于高并发流数据乱序处理装置的电子设备的结构示意图。如图5所示,该实施例的电子设备包括:至少一个处理器50(图5中仅示出一个)处理器、存储器51以及存储在存储器51中并可在至少一个处理器50上运行的计算机程序,处理器50执行计算机程序时实现上述任意各个方法实施例中的步骤。
该电子设备可包括,但不仅限于,处理器50、存储器51。本领域技术人员可以理解,图5仅仅是电子设备的举例,并不构成对电子设备的限定,可以包括比图示更多或更少的部件,或者组合某些部件,或者不同的部件,例如还可以包括输入输出设备、网络接入设备等。
所称处理器50可以是中央处理单元(Central Processing Unit,CPU),该处理器50还可以是其他通用处理器、数字信号处理器(Digital Signal Processor,DSP)、专用集成电路(Application Specific Integrated Circuit,ASIC)、现成可编程门阵列(FieldProgrammable Gate Array,FPGA)或者其他可编程逻辑器件、分立门或者晶体管逻辑器件、分立硬件组件等。通用处理器可以是微处理器或者该处理器也可以是任何常规的处理器等。
处理器501的具体实现过程可参见上述方法实施例,其实现原理和技术效果类似,本实施例此处不再赘述。
存储器51在一些实施例中可以是电子设备的内部存储单元,例如电子设备的内存。存储器51在另一些实施例中也可以是电子设备的外部存储设备,例如电子设备上配备的插接式硬盘,智能存储卡(Smart Media Card,SMC),安全数字(Secure Digital,SD)卡,闪存卡(Flash Card)等。进一步地,存储器51还可以既包括电子设备的内部存储单元也包括外部存储设备。存储器51用于存储操作系统、应用程序、引导装载程序(BootLoader)、数据以及其他程序等,例如计算机程序的程序代码等。存储器51还可以用于暂时地存储已经输出或者将要输出的数据。
本申请实施例还提供了一种计算机可读存储介质,计算机可读存储介质存储有计算机程序,计算机程序被处理器执行时实现可实现上述各个方法实施例中的步骤。
上述的计算机可读存储介质,上述可读存储介质可以是由任何类型的易失性或非易失性存储设备或者它们的组合实现,如静态随机存取存储器(SRAM),电可擦除可编程只读存储器(EEPROM),可擦除可编程只读存储器(EPROM),可编程只读存储器(PROM),只读存储器(ROM),磁存储器,快闪存储器,磁盘或光盘。可读存储介质可以是通用或专用计算机能够存取的任何可用介质。
一种示例性的可读存储介质耦合至处理器,从而使处理器能够从该可读存储介质读取信息,且可向该可读存储介质写入信息。当然,可读存储介质也可以是处理器的组成部分。处理器和可读存储介质可以位于专用集成电路(Application Specific IntegratedCircuits,简称:ASIC)中。当然,处理器和可读存储介质也可以作为分立组件存在于上述电子设备中。
本领域普通技术人员可以理解:实现上述各方法实施例的全部或部分步骤可以通过程序指令相关的硬件来完成。前述的程序可以存储于一计算机可读取存储介质中。该程序在执行时,执行包括上述各方法实施例的步骤;而前述的存储介质包括:ROM、RAM、磁碟或者光盘等各种可以存储程序代码的介质。
在上述实施例中,对各个实施例的描述都各有侧重,某个实施例中没有详述的部分,可以参见其他实施例的相关描述。上述实施例的各技术特征可以进行任意的组合,为使描述简洁,未对上述实施例中的各个技术特征所有可能的组合都进行描述,然而,只要这些技术特征的组合不存在矛盾,都应当认为是本说明书记载的范围。
本领域技术人员在考虑说明书及实践这里公开的发明后,将容易想到本申请的其它实施方案。本申请旨在涵盖本申请的任何变型、用途或者适应性变化,这些变型、用途或者适应性变化遵循本申请的一般性原理并包括本申请未公开的本技术领域中的公知常识或惯用技术手段。说明书和实施例仅被视为示例性的,本申请的真正范围和精神由下面的权利要求书指出。
应当理解的是,本申请并不局限于上面已经描述并在附图中示出的精确结构,并且可以在不脱离其范围进行各种修改和改变。本申请的范围仅由所附的权利要求书来限制。

Claims (10)

1.一种高并发流数据乱序处理方法,其特征在于,包括:
获取各数据源的流数据,对流数据进行预处理,获得统一数据格式的多个单元数据,所述单元数据包括时间戳;
从所述单元数据中选定该单元数据对应的关键词,基于预设的分组参数,根据所述关键词将单元数据分至若干个排序组;
对于每个所述排序组,在预设的时长窗口内,基于单元数据的时间戳,按照单元数据进入到该排序组的顺序计算该排序组的水位,并采用二叉树对各单元数据进行缓存,将所述二叉树中存储的时间戳小于该排序组的水位的单元数据作为输出数据;
将输出数据按照预设写入规则写入至输出目标。
2.根据权利要求1所述的方法,其特征在于,该方法采用Flink流处理框架,通过Flink采集算子对接不同的数据源,通过排序算子对各所述排序组进行排序和缓存。
3.根据权利要求2所述的方法,其特征在于,从所述单元数据中选定该单元数据对应的关键词,基于预设的分组参数,根据所述关键词将单元数据分至若干个排序组,包括:
根据预设的关键词捕捉规则从所述单元数据中选择目标关键词作为该单元数据的key;
采用预设的keyby参数对各单元数据进行分组,将所述单元数据均衡地分散到多个排序算子上。
4.根据权利要求1所述的方法,其特征在于,所述基于单元数据的时间戳,按照单元数据进入到该排序组的顺序计算该排序组的水位,包括:
根据预设时长窗口确定起始时间戳,将所述单元数据的时间戳与所述起始时间戳的差值作为该单元数据的水位;
若所述单元数据为第一个进入排序组,则将该单元数据的水位作为排序组的水位;
若所述单元数据为进入排序组的顺序非第一个,判断该单元数据的水位是否大于排序组的水位;
若是,则更新排序组的水位为该单元数据的水位,并将该单元数据作为排序单元数据存入二叉树。
5.根据权利要求4所述的方法,其特征在于,所述将所述二叉树中存储的时间戳小于该排序组水位的单元数据作为输出数据,包括:
对于每一个进入排序组的当前单元数据,在确认当前排序组的水位之后,遍历所述二叉树中的排序单元数据,将时间戳小于当前排序组的水位的排序单元数据作为输出数据。
6.根据权利要求1所述的方法,其特征在于,所述对流数据进行预处理,获得统一数据格式的多个单元数据,包括:
将各流数据按照与流数据对应的协议解析成最小粒度的数据;
对各流数据解析得到的数据进行格式转换,得到预设数据格式的单元数据。
7.根据权利要求1所述的方法,其特征在于,在所述获得统一数据格式的多个单元数据之后,还包括:
对所述单元数据进行清洗过滤,筛除噪声数据,所述噪声数据包括空数据、格式错误数据和过期数据。
8.一种高并发流数据乱序处理装置,其特征在于,包括:
数据采集模块,用于获取各数据源的流数据,对流数据进行预处理,获得统一数据格式的多个单元数据,所述单元数据包括时间戳;
数据分组模块,用于从所述单元数据中选定该单元数据对应的关键词,基于预设的分组参数,根据所述关键词将单元数据分至若干个排序组;
排序模块,用于对于每个所述排序组,在预设的时长窗口内,基于单元数据的时间戳,按照单元数据进入到该排序组的顺序计算该排序组的水位,并采用二叉树对各单元数据进行缓存,将所述二叉树中存储的时间戳小于该排序组的水位的单元数据作为输出数据;
输出模块,用于将输出数据按照预设写入规则写入至输出目标。
9.一种电子设备,其特征在于,包括:处理器,以及与所述处理器通信连接的存储器;
所述存储器存储计算机执行指令;
所述处理器执行所述存储器存储的计算机执行指令,以实现如权利要求1至7任一项所述的方法。
10.一种计算机可读存储介质,其特征在于,所述计算机可读存储介质中存储有计算机执行指令,所述计算机执行指令被处理器执行时用于实现如权利要求1至7任一项所述的方法。
CN202311386024.0A 2023-10-24 2023-10-24 高并发流数据乱序处理方法、装置、设备及存储介质 Pending CN117459483A (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN202311386024.0A CN117459483A (zh) 2023-10-24 2023-10-24 高并发流数据乱序处理方法、装置、设备及存储介质

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN202311386024.0A CN117459483A (zh) 2023-10-24 2023-10-24 高并发流数据乱序处理方法、装置、设备及存储介质

Publications (1)

Publication Number Publication Date
CN117459483A true CN117459483A (zh) 2024-01-26

Family

ID=89588493

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202311386024.0A Pending CN117459483A (zh) 2023-10-24 2023-10-24 高并发流数据乱序处理方法、装置、设备及存储介质

Country Status (1)

Country Link
CN (1) CN117459483A (zh)

Similar Documents

Publication Publication Date Title
Fragkoulis et al. A survey on the evolution of stream processing systems
US10691489B2 (en) Managing the processing of streamed data in a data streaming application using query information from a relational database
CN106681846B (zh) 日志数据的统计方法、装置及系统
US10339465B2 (en) Optimized decision tree based models
EP2873983B1 (en) Trace-data processing and profiling device
US8291058B2 (en) High speed network data extractor
CN109508326B (zh) 用于处理数据的方法、装置和系统
US10089352B2 (en) Offloading projection of fixed and variable length database columns
US20160063090A1 (en) Analyzing Frequently Occurring Data Items
CN104239133A (zh) 一种日志处理方法、装置及服务器
JP2004500620A (ja) トランザクションの意味規則を用いた連続データストリームのセグメント化および処理
US20080126354A1 (en) Management of a distributed database
US10334011B2 (en) Efficient sorting for a stream processing engine
Traub et al. Scotty: General and efficient open-source window aggregation for stream processing systems
US10467272B2 (en) Detecting longest regular expression matches
US9948570B2 (en) Stream data processing method and stream data processing device
CN117459483A (zh) 高并发流数据乱序处理方法、装置、设备及存储介质
US11016951B1 (en) Microbatch loading
US11216352B2 (en) Method for automatically analyzing bottleneck in real time and an apparatus for performing the method
CN113220530B (zh) 数据质量监控方法及平台
US20160077945A1 (en) Storage system statistical data storage and analysis
US9268879B2 (en) Hardware projection of fixed and variable length columns of database tables
CN115269519A (zh) 一种日志检测方法、装置及电子设备
Kepe et al. KSample: dynamic sampling over unbounded data streams
CN116010452A (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