CN115114340A - 一种数据获取方法、装置、电子设备及存储介质 - Google Patents

一种数据获取方法、装置、电子设备及存储介质 Download PDF

Info

Publication number
CN115114340A
CN115114340A CN202210778503.6A CN202210778503A CN115114340A CN 115114340 A CN115114340 A CN 115114340A CN 202210778503 A CN202210778503 A CN 202210778503A CN 115114340 A CN115114340 A CN 115114340A
Authority
CN
China
Prior art keywords
data
message queue
time
real
flow table
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
CN202210778503.6A
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.)
Hangzhou Netease Cloud Music Technology Co Ltd
Original Assignee
Hangzhou Netease Cloud Music 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 Hangzhou Netease Cloud Music Technology Co Ltd filed Critical Hangzhou Netease Cloud Music Technology Co Ltd
Priority to CN202210778503.6A priority Critical patent/CN115114340A/zh
Publication of CN115114340A publication Critical patent/CN115114340A/zh
Pending legal-status Critical Current

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/24Querying
    • G06F16/245Query processing
    • G06F16/2457Query processing with adaptation to user needs
    • G06F16/24578Query processing with adaptation to user needs using ranking
    • 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/23Updating
    • G06F16/2379Updates performed during online database operations; commit processing

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Databases & Information Systems (AREA)
  • Data Mining & Analysis (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Computational Linguistics (AREA)
  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)

Abstract

本公开涉及数据处理技术领域,公开了一种数据获取方法、装置、电子设备及存储介质,并具体公开了响应于数据获取请求,根据当前轮询确定的实时流表,确定所述数据获取请求针对的目标消息队列,所述实时流表中包括元数据信息和消息队列主题,所述元数据信息包括标识不同数据区域的字段值、数据区域的有效时段描述信息,以及字段值与消息队列主题的映射关系,一个消息队列主题对应一个消息队列,所述字段值用于标识数据区域中存储的数据类别;再在所述目标消息队列中,进行数据的获取操作。这样,能够避免读取与处理需求无关的数据,因而极大的降低了资源和带宽的浪费,提高了资源的利用率。

Description

一种数据获取方法、装置、电子设备及存储介质
技术领域
本公开涉及数据处理技术领域,尤其涉及一种数据获取方法、装置、电子设备及存储介质。
背景技术
目前,通常以消息队列的形式,存储一定时间内的实时数据,使得在需要对指定类型的数据进行处理时,可以从消息队列中获取相应的数据内容。
相关技术下,通常通过配置一个存储流表,以指示存储一种类型数据的消息队列主题,且一个存储流表对应一个主题的消息队列。为了降低维护压力,避免维护多张流表,通常一个主题的消息队列中存储有多个子类型的数据。基于此,当确定需要获取的具体类型的数据内容后,先通过流表确定所述数据类型的数据所对应的消息队列,再获取消息队列中存储的全部类型数据,并对数据进行解析,然后过滤掉无关类型的数据,以及基于过滤后的目标数据完成业务处理。
然而,由于消息队列中存储有多种类型的数据,当获取具体类型的数据时,需要对消息队列中的全部数据进行获取、解析和过滤操作,才能够得到目标数据,因此,在数据的获取过程中,需要获取大量与处理需要无关的数据,造成了带宽资源和计算资源的浪费,极大地降低了资源使用效率,无法快速定位需要的数据,为针对数据的进一步处理带来了不便,无法满足日益增长的业务快速处理需求。
发明内容
本公开实施例提供一种数据获取方法、装置、电子设备及存储介质,用以解决现有技术中数据获取过程中需要获取大量无关数据,造成资源浪费的问题。
本公开实施例提供的具体技术方案如下:
第一方面,提出一种数据获取方法,包括:
响应于数据获取请求,根据当前轮询确定的实时流表,确定所述数据获取请求针对的目标消息队列;所述实时流表中包括元数据信息和消息队列主题,所述元数据信息包括标识不同数据区域的字段值、数据区域的有效时段描述信息,以及字段值与消息队列主题的映射关系,一个消息队列主题对应一个消息队列,所述字段值用于标识数据区域中存储的数据类别;
在所述目标消息队列中,进行数据的获取操作。
第二方面,提出一种数据获取装置,包括:
响应单元,用于响应于数据获取请求,根据当前轮询确定的实时流表,确定所述数据获取请求针对的目标消息队列;所述实时流表中包括元数据信息和消息队列主题,所述元数据信息包括标识不同数据区域的字段值、数据区域的有效时段描述信息,以及字段值与消息队列主题的映射关系,一个消息队列主题对应一个消息队列,所述字段值用于标识数据区域中存储的数据类别;
获取单元,用于在所述目标消息队列中,进行数据的获取操作。
第三方面,提出一种电子设备,包括存储器、处理器及存储在存储器上并可在处理器上运行的计算机程序,所述处理器执行所述程序时实现上述第一方面中任一项所述方法的步骤。
第四方面,提出一种计算机可读存储介质,其上存储有计算机程序,所述计算机程序被处理器执行时实现上述第一方面中任一项所述方法的步骤。
本公开有益效果如下:
本公开实施例提出了一种数据获取方法、装置、电子设备及存储介质,并具体公开了响应于数据获取请求,根据当前轮询确定的实时流表,确定所述数据获取请求针对的目标消息队列,所述实时流表中包括元数据信息和消息队列主题,所述元数据信息包括标识不同数据区域的字段值、数据区域的有效时段描述信息,以及字段值与消息队列主题的映射关系,一个消息队列主题对应一个消息队列,所述字段值用于标识数据区域中存储的数据类别;再在所述目标消息队列中,进行数据的获取操作。
这样,依据实时流表中针对不同数据类别设置的数据区域,以及数据区域的字段值与消息队列主题的映射关系,能够直接确定数据类别所对应的消息队列主题,有助于快速查找到存储目标数据的消息队列;而且,在执行具体的数据获取操作之前,就已经确定了存储数据的消息队列,能够实现对于目标数据的快速定位,有助于提高数据的获取效率;另外,借助于所述数据区域的字段值与消息队列主题的映射关系,还能够避免读取与处理需求无关的数据,因而极大的降低了资源和带宽的浪费,提高了资源的利用率。
附图说明
图1A为本公开实施例中现有技术下存储流表的组成示意图;
图1B为公开请实施例中的统计流程示意图;
图2为本公开实施例中数据获取方法的应用场景示意图;
图3A为本公开实施例中的数据获取流程示意图;
图3B为本公开实施例中实时流表中元数据定义示意图;
图4为本公开实施例中与业务处理任务对应的处理逻辑示意图;
图5A为本公开实施例中新增数据区域的生效时间示意图;
图5B为本公开实施例中待失效数据区域的失效时间示意图;
图6为本公开实施例中数据的存储流程示意图;
图7A为本公开实施例中数据区域变化时数据处理流程示意图;
图7B为本公开实施例中针对新消息队列的操作示意图;
图7C为本公开实施例中针对待失效消息队列的操作示意图;
图8为本公开实施例提供的数据获取装置的结构示意图;
图9为本公开实施例中电子设备的实体结构示意图。
具体实施方式
下面将参考若干示例性实施方式来描述本公开的原理和精神。应当理解,给出这些实施方式仅仅是为了使本领域技术人员能够更好地理解进而实现本公开,而并非以任何方式限制本公开的范围。相反,提供这些实施方式是为了使本公开更加透彻和完整,并且能够将本公开的范围完整地传达给本领域的技术人员。
本领域技术人员知道,本公开的实施方式可以实现为一种系统、装置、设备、方法或计算机程序产品。因此,本公开可以具体实现为以下形式,即:完全的硬件、完全的软件(包括固件、驻留软件、微代码等),或者硬件和软件结合的形式。
在本文中,需要理解的是,附图中的任何元素数量均用于示例而非限制,以及任何命名都仅用于区分,而不具有任何限制含义。
为了方便理解,下面对本公开实施例中涉及的名词进行解释:
实时流表:是指由一系列的无界二维数组组成的集合,至少能够表征储存于消息队列中的数据对象之间的关系;表是构成实时数仓的基本结构,它由纵向的列和横向的行组成,基本结构和组成和传统数据库表类似,但是对应的存储介质被限定为消息队列,在存储数据的消息队列包含在实时流表中的情况下,实时流表中的数据总数会随着消息数据(也称数据)不断往消息队列的写入,而不断的变化增加。本公开实施例中,实时流表中存储的内容能够被实时更新,存储的内容至少包括消息队列主题(topic)和元数据信息,其中,元数据信息包括标识不同数据区域的字段值、数据区域的有效时段描述信息,以及数据区域的字段值与消息队列主题的映射关系。
数据区域:采用字段值进行标识,是指存储某种类别数据的区域,本公开实施例中,数据区域是为了能够基于一张实时流表,满足存取多种类型数据的处理需求而提出的概念;一个数据区域对应一个主题的消息队列,换言之,用于标识一个数据区域的字段值,对应一个消息队列的主题。
Kafka:是指由Apache软件基金会开发的一个开源流处理平台,由Scala和Java编写。用于为处理实时数据提供一个统一、高吞吐、低延迟的平台,其持久化层本质上是一个“按照分布式事务日志架构的大规模发布/订阅消息队列”。
Flink:是指由Apache软件基金会开发的开源流处理框架,其核心是用Java和Scala编写的分布式流数据流引擎;以数据并行和管道方式执行任意流数据程序,Flink的流水线运行时系统可以执行批处理和流处理程序。
消息队列:是指在消息的传输过程中保存消息的容器,本公开实施例中,可以配置消息队列中存储有指定时长内的数据,如,24小时内的数据;另外,本公开实施例中,不具体限制消息队列的类型,如,可以为KAFKA消息队列,或者,其他能够实现实时数据存储功能的消息队列。
数据描述信息,包含在数据获取请求中,用于标识数据获取请求所针对的目标类型数据(也称目标类别数据)。
下面参考本公开的若干代表性实施方式,详细阐释本公开的原理和精神。
发明概述
相关技术下,在基于实时数据进行处理时,通常在存储流表中指示的数据存储信息、序列化和反序列化消息方式、以及一个消息队列的地址和topic,进而基于存储流表实现数据的获取。
参阅图1A所示,其为本公开实施例中现有技术下存储流表的组成示意图,根据图1A所示,现有技术下的存储流表中,包括模式(SCHEMA)信息、KAFKA队列信息,以及信息格式信息,其中,
SCHEMA信息:用于指示存储流表的表名,以及相关的字段信息等。
KAFKA队列信息:用于指示KAFKA消息队列对应的类型、地址以及TOPIC信息。
消息格式信息:用于指示消息的存储格式。
进一步的,可以响应于业务处理指示,基于所述存储流表完成业务处理。
又例如,假设目前根据实际的处理需要,需要实时统计1min内的“播放”次数,则需要执行的查询语句形如如下所示,其中,如下的语句是为了实现播放次数统计的示意性说明:
SELECT
TUMBLE_START(ts,INTERVAL‘1’MINUTE)START_TIME,
//表征窗口开始时间和窗口覆盖的时长
COUNT(1)CNT,//表征查询全部列中包括的数据总数
COUNT(DISTINCT userid)USER_CNT
//表征查询USER_CNT列中非重复的用户ID数
FROM KafakaTable//表征要查询的目标实时流表的名称
WHERE behavior=‘play’
//表征查询的过滤条件是,查询播放(play)行为
GROUP BY TUMBLE(ts,INTERVAL‘1’MINUTE)
//表征按照窗口进行分组
又例如,继续上述举例进行说明,当执行上述任务时,参阅图1B所示,其为本公开实施例中的统计流程示意图。根据图1B所示意的,首先根据存储流表,确定行为相关的日志内容,存储在topic为user_behavior的消息队列中,然后读取topic为user_behavior的消息队列中存储的日志;再根据实时流表中约束的格式信息:逗号分隔值(comma-separatedvalues,csv)解析日志;之后,过滤掉日志中的非播放日志,再按照1min窗口聚合计算人数和播放次数,得到最终的输出结果。
基于上述示例可知,在处理过程只需要依据“播放(play)”相关的日志就能够实现处理的情况下,处理过程中必须读取所有的行为日志,并对日志进行解析过滤;然后过滤掉非播放相关的日志,如,行为通常包括有诸如点击、点赞、播放、收藏等相关的具体行为。这样,造成了大量的带宽浪费和计算资源的浪费,假如播放日志占所有日志的20%,那就会可能使用80%的带宽和解析的计算资源去过滤非播放日志,极大的降低了资源利用率。
本公开的申请人基于现有技术下存在的上述问题,考虑到若从流表的层面细化存储的内容,使得每个具体类型的数据分别对应一个流表,则需要对已有的存储流表进行过多的拆分,对应的,也就需要维护大量的存储流表,数目可能达到几十甚至上百张,这将极大的增加整体的运维成本;而且在基于存储流表进行使用时同样需要很高的使用成本,所述使用成本一方面体现在告知使用对象每张存储流表分别表征的数据类型,另一方面体现在面对复杂的处理需求,并需要查找多个存储流表时,需要在多个存储流表中进行操作,增加了操作复杂性。另外,在基于实际的业务需要,需要对存储流表进行扩展时,需要对应的增加的运维管理成本。
有鉴于此,为了解决现有技术下数据获取过程中需要获取大量无关数据,造成资源浪费的问题,本公开提出了一种数据获取方法、装置、电子设备及存储介质,并具体公开了响应于数据获取请求,根据当前轮询确定的实时流表,确定所述数据获取请求针对的目标消息队列,所述实时流表中包括元数据信息和消息队列主题,所述元数据信息包括标识不同数据区域的字段值、数据区域的有效时段描述信息,以及字段值与消息队列主题的映射关系,一个消息队列主题对应一个消息队列,所述字段值用于标识数据区域中存储的数据类别;再在所述目标消息队列中,进行数据的获取操作。
这样,依据实时流表中针对不同数据类别设置的数据区域,以及数据区域的字段值与消息队列主题的映射关系,能够直接确定数据类别所对应的消息队列主题,有助于快速查找到存储目标数据的消息队列;而且,在执行具体的数据获取操作之前,就已经确定了用于存储数据的消息队列,能够实现对于目标数据的快速定位,有助于提高数据的获取效率;另外,借助于所述数据区域的字段值与消息队列主题的映射关系,还能够避免读取与处理需求无关的数据,因而极大的降低了资源和带宽的浪费,提高了资源的利用率。
应用场景总览
参阅图2所示,其为本公开实施例中数据获取方法的应用场景示意图。该应用场景中包括终端设备201(包括终端设备201-1、终端设备201-2、……终端设备201-n),以及处理设备202。其中,终端设备201和处理设备202之间可通过有线或无线的通信网络连接。
终端设备201包括但不限于桌面计算机、移动电话、移动电脑、平板电脑、媒体播放器、智能可穿戴设备、智能电视、车载设备、个人数字助理(personal digital assistant,PDA)等电子设备。
处理设备202可以是独立的物理服务器,也可以是多个物理服务器构成的服务器集群或者分布式系统,还可以是提供云服务、云数据库、云计算、云函数、云存储、网络服务、云通信、中间件服务、域名服务、安全服务、CDN、以及大数据和人工智能平台等基础云计算服务的云服务器。
需要说明的是,本公开实施例中,所述终端设备201可以是用户设备,用于接收用户的操作行为,并以操作日志的形式上报至所述处理设备202。在本公开可能的实施例中,所述处理设备202可以既作为操作日志的存储设备,又作为用于进行数据获取的设备;在本公开另一些可能的实施中,处理设备202可以只作为进行数据获取的设备,例如,可以依据轮询获得的实时流表,从其他的数据服务器中获取数据,本公开在此将不再进行具体说明。
本公开可能的应用场景中,终端设备201中可以安装有指定APP,对应的处理设备202可以是所述指定APP对应的服务端。具体的,用户在终端设备201在访问所述指定APP并进行操作时,处理设备202接收根据所述用户的操作行为产生的操作日志,并根据实时流表确定操作日志对应的数据区域,以及确定数据区域对应的消息队列,进而将操作日志写入相应的消息队列。
在可能的应用场景中,处理设备202可以响应于相关对象对消息队列中数据的处理指示,先确定所述处理指示针对的数据类别;再基于实时流表中记录的数据类别与消息队列之间的对应关系,确定需要获取的数据所在的消息队列;进而,在对应的消息队列中获取数据,并依据获取的数据进行处理。
本公开实施例中,所述实时流表中可以存储有多种类别的数据,如,各种行为数据(点击、点赞、播放、收藏等)、各种属性数据(会员信息等)。
示例性方法
下面结合附图2的应用场景,来描述根据本公开示例性实施方式提出的数据获取方法。需要注意的是,上述应用场景仅是为了便于理解本公开的精神和原理而示出,本公开的实施方式在此方面不受任何限制。相反,本公开的实施方式可以应用于适用的任何场景。
参阅图3A所示,其为本公开实施例中的数据获取流程示意图,下面结合附图3A,对本公开实施例中,处理设备实现数据获取的过程进行说明:
步骤301:处理设备响应于数据获取请求,根据当前轮询确定的实时流表,确定所述数据获取请求针对的目标消息队列。
本公开实施例中,处理设备响应于来自内部或者外部的数据获取请求,开始轮询实时流表,并根据当前轮询确定的实时流表,确定所述数据获取请求所针对的目标消息队列。
具体的,所述处理设备确定所述数据获取请求中携带的数据描述信息,并在轮询确定的实时流表中,根据不同数据区域的字段值与所述数据描述信息的匹配情况,确定所述数据获取请求针对的目标数据区域的字段值;再根据所述实时流表中字段值与消息队列主题的映射关系,确定所述数据获取请求对应的目标消息队列主题,并基于所述目标消息队列主题确定对应的目标消息队列。
应该理解的是,由于数据获取请求通常是基于数据处理需要的发起的,故在不同的应用场景中,数据获取请求可能由不同设备触发,具体的,处理设备可以基于相关对象(如开发人员)输入的处理逻辑进行处理,或者,所述处理设备可以基于外部其他设备发送的数据获取请求,获取相应的数据,又或者,所述处理设备可以根据预先被配置的处理逻辑,基于在执行周期性的数据处理任务时触发的数据获取请求,获取相应的数据,本公开对此不做具体限制。
本公开实施例中,所述处理设备确定数据获取请求中携带的数据描述信息后,在当前确定的实时流表中,根据所述数据描述信息与各数据区域的字段值的匹配情况,确定匹配的数据区域;再根据数据区域的字段值与消息队列主题的映射关系,确定数据获取请求针对的目标消息队列主题,进而确定对应的目标消息队列,其中,所述实时流表中包括元数据信息和消息队列主题,所述元数据信息包括标识不同数据区域的字段值、数据区域的有效时段描述信息,以及字段值与消息队列主题的映射关系。
本公开实施例中,一个消息队列主题对应一个消息队列,数据区域的字段值可以用于标识数据区域中存储的数据类别。
需要说明的是,轮询确定的实时流表可以是指:响应于数据获取请求开始轮询获取实时流表后,周期性查询实时流表的变化,并在确定实时流表中数据区域和目标消息队列主题发生调整时,获取的更新后的实时流表;或者,可以是指周期性轮询获取的实时流表。
这样,基于数据获取请求中的数据描述信息、实时流表中记录的数据区域的字段值,以及数据区域的字段值与消息队列主题的映射关系,能够快速定位需要获取的数据所在的目标消息队列,使得能够快速的确定数据获取操作所针对的目标消息队列,为提高数据获取效率提供了保障。
下面结合附图,对本公开实施例中实时流表中创造性包括的内容进行说明,参阅图3B所示,其为本公开实施例中实时流表中元数据定义示意图。
根据图3B所示意的内容可知,从元数据的层面上看,相比于相关技术下的存储流表,本公开的实时流表中创造性地配置有数据区域信息,且数据区域信息中至少包含两部分内容,分别是数据区域的字段值和数据区域映射关系,其中,数据区域的字段值用于指示按照哪些字段值标识数据区域,以存储不同类别的数据,数据区域映射关系是指数据区域的字段值与消息队列主题的映射关系。
在图3B所示意的数据区域信息中,‘behavior=play’->‘play_behavior’,表征配置存储在字段值为“behavior=play”的数据区域中的日志,具体存储在topic为‘play_behavior’的消息队列中;
‘behavior=impress’->‘impress_behavior’,表征配置存储在字段值为“behavior=impress”的数据区域中的日志,具体存储在topic为‘impress_behavior’的消息队列中;
‘behavior=click’->‘click_behavior’,表征配置存储在字段值为“behavior=click”的数据存储区域中的日志,具体存储在topic为‘click_behavior’的消息队列中。
另外,图3B所示意的在实时流表中记录的3个数据区域仅为示意性说明,本公开实施例中,实时流表是无界的,因此理论上可以根据实际的处理需要增加数据区域或者减少数据区域,或者,根据实际处理需要调整数据区域与消息队列的对应关系。再者,本公开实施例中,实时流表中配置的消息队列可以是KAFKA消息队列,或者,可以是其他任何可用于日志存储的消息队列,本公开对此不做具体限制。
又例如,根据图3B所示意的实时流表,在进行数据的具体存储时,对应四个字段user_id、item_id、behavior,以及ts,采用csv格式存储,那么,存在于消息队列中的每条数据样式形如:5,19,play,12312312,其中,user_i表征用户ID,item_i表征操作针对的业务对象ID(如歌曲ID),behavior用于标识日志中对应记录的行为,ts表征时间戳信息,即数据存储至消息队列时的写入时间;存储的数据以逗号分隔的csv格式存储。
需要说明的是,本公开实施例中,依据实时流表至少能够确定实时数据相关的存储信息,进而基于所述存储消息去其他位置处存储的消息队列中获取数据;在一些可能的实施例中,实时流表中还可以保存有消息队列,使得基于实时流表能够完成数据的获取,不需要去其他位置处的目标消息队列中获取数据。
这样,由于实时流表中新增了数据分区信息,使得一个实时流表中能够配置多个消息队列的topic,因而能够按照实际的处理需要,在需要存储消息时,根据消息内容的不同,将消息存储在不同的消息队列中,使得在面对不同类别数据的获取需求时,借助于维护的一个实时流表即可完成处理,极大的降低了实时流表的维护难度;以及在需要读取数据时,根据处理逻辑中配置的过滤条件,先过滤出匹配的目标消息队列,再基于目标消息队列进行数据的获取,避免读取到大量的无效消息,能够极大的节省计算资源和带宽资源。
步骤302:处理设备在目标消息队列中,进行数据的获取操作。
本公开实施例中,处理设备基于实时流表,确定数据获取请求所针对的目标消息队列后,在所述目标消息队列中进行数据的获取操作。
进一步的,根据实际的业务处理需求,所述处理设备基于获取的数据进行相应的业务处理操作。
具体的,所述处理设备采用匹配的解析方式,解析获取的数据,得到待处理数据,其中,所述解析方式保存在所述实时流表中;再基于所述待处理数据完成指定的业务处理需求。
需要说明的是,考虑到一些可能的应用场景中,数据获取请求中携带有对于数据类别和数据内容的指示信息,那么,当获取到所述数据类别的数据后,需要基于所述数据内容的指示信息对获取的数据进行过滤,进而基于过滤后的数据进行业务处理。
例如,针对业务处理任务“统计1min内歌曲A的播放次数”,处理设备需要依据实时流表,确定存储有播放日志的目标消息队列;再从存储有播放日志的消息队列中获取数据,进而基于歌曲A的ID信息,对获取的数据进行过滤,过滤掉针对其他歌曲的播放日志,得到对于歌曲A的播放日志,并统计1min内的播放次数。
这样,借助于实时流表,不仅能够快速获取业务处理需求所针对性处理的数据,提高业务处理效率,还能够降低获取业务处理结果的时延。
下面结合图3B所示意的实时流表,以一个具体的举例,对基于业务处理任务,从目标消息队列中获取数据,进而基于获取的数据进行业务处理的过程进行说明:
假设处理设备基于如下代码所示意的任务处理逻辑,统计1分钟内在音乐APP中触发播放操作的用户数和歌曲的总播放(play)数,则需要读取“play”相关的日志数据:
SELECT
TUMBLE_START(ts,INTERVAL‘1’MINUTE)START_TIME,
//表征窗口开始时间和窗口覆盖的时长
COUNT(1)CNT,//表征查询全部列中包括的数据总数
COUNT(DISTINCT userid)USER_CNT
//表征查询USER_CNT列中非重复的用户ID数
FROM KafakaTable//表征需要查询的目标实时流表的名称
WHERE behavior=‘play’
//表征查询的过滤条件是查询播放(play)行为,本公开基于此条件快速确定目标消息队列
GROUP BY TUMBLE(ts,INTERVAL‘1’MINUTE)
//表征按照窗口进行分组
那么,基于上述处理逻辑,参阅图4所示,其为本公开实施例中与业务处理任务对应的处理逻辑示意图,下面结合附图4,对执行上述业务处理任务时涉及到的处理逻辑进行说明:
步骤401:处理设备根据数据处理逻辑中包括的数据获取请求,确定需要获取的数据所对应的数据描述信息。
步骤402:处理设备将数据描述信息作为查询条件,基于实时流表,确定匹配的目标消息队列主题。
步骤403:处理设备读取目标消息队列主题对应的目标消息队列。
步骤404:处理设备按照指定的格式解析目标消息队列中存储的日志。
步骤405:处理设备根据数据描述信息在日志中过滤掉与播放统计和用户统计无关的数据。
具体的,在只需要进行数值统计的情况下,处理设备可以仅保留与计数相关的内容,进而针对播放日志进行过滤操作。
步骤406:处理设备按照1min窗口聚合计算执行播放操作的用户数和播放次数。
步骤407:处理设备输出结果。
这样,在读取实时流表时首先会根据数据获取请求,匹配计算出目标消息队列主题,比如基于上面的SQL语句查询behavior=play的日志时,根据数据区域的字段值与消息队列主题的对应关系,可以计算出目标消息队列主题为play_behavior;然后按照从消息队列中读取数据的方式,从所述目标消息队列主题对应的目标消息队列中获取数据,并在完成数据的解析和过滤后,基于处理得到的数据进行进一步处理。因此,借助于在数据获取操作之前进行的数据区域计算,使得在后续的数据获取过程中不需要获取非播放日志,故能够达到数据获取优化的目的,能够有效节省带宽资源和计算资源。
基于本公开的上述内容,以及针对实时流表的说明,应该知晓的是,所述实时流表中存储有数据区域相关的信息,以及能够确定目标消息队列的消息。
考虑到在实际的处理场景中,数据类别具有多样性且可能会不断更新,故需要对实时流表进行相应的调整。
具体的,当存在有新类别数据的产生时,需要针对新类别的数据配置有新的数据区域和消息队列,以实现数据的存储和获取;另外,当存在某类别的数据失效时,需要针对对应的失效数据区域和失效消息队列,进行数据的限制写入和限制获取。特殊的,当数据区域与消息队列之间的对应关系发生改变,即,数据区域的字段值与消息队列主题的映射关系发生调整时,可以在依据实时流表确定消息队列后,继续进行数据的获取和存储。
例如,某音乐APP在开发初期仅具有播放功能,因此对应的日志中只有播放日志,随着功能的升级和改进,逐渐出现了评论功能,那么则需要对评论日志进行存储。可见,需要存储的数据类别发生了变化,因此,需要针对评论日志配置有对应的新数据区域和消息队列主题。
又例如,某音乐APP当前具有a、b、c三种用户面功能,因此,能够产生三种日志,因而,存在三个数据区域和三个主题的消息队列;随着功能的变化,a功能被下线,这样,需要配置删除a功能对应的数据分区和消息队列。
需要说明的是,本公开实施例中,在所述实时流表中还存在有数据区域相关的生效情况描述信息,用于存储数据区域的变更历史,其中,根据所述生效情况描述信息能够确定数据区域对应的有效时段,所述生效情况描述信息可以由处理设备中的元数据服务维护,使得所述处理设备接收相关对象针对数据区域发送的新增或者删除指示时,借助于所述元数据服务实现数据区域的变更历史存储。
参阅表1所示,其为本公开实施例中所述生效情况描述信息对应的数据结构表:
表1
Figure BDA0003722290790000101
根据表1中记录的内容可知,所述生效情况描述信息中保存有实时流表中元数据的变更历史,其保存的所述数据结构中包括5个字段的内容,分别为表名、数据区域的字段值、消息队列topic、开始时间和结束时间,其中,
所述表名:用于标识实时流表的表名;
所述数据区域的字段值(KEY):用于表征数据区域的字段值;
所述消息队列topic:表征数据分区对应的消息队列主题,其中,消息队列主题和数据区域的字段值具有映射关系;
所述开始时间:是指数据分区开始生效的时间,也称生效时间;
所述结束时间:是指数据分区的失效时间,也称失效时间,其中,所述结束时间取“-1”时,表征对应的数据分区处于长期有效的状态。
根据所述表1所示意的内容,可以确定的是,在2021-11-01 08:00删除了behavior=impress曝光行为对应的数据区域;以及在2021-10-05 07:00新增了behavior=zan点赞行为对应的数据区域。
下面针对数据获取过程中,由于轮询确定的实时流表中记录有数据区域的变化,而需要适应性调整的数据获取过程进行分情况说明:
情况一、新增数据区域。
本公开实施例中,当根据实际的业务处理需要,确定存在需要存储的、新类别的数据时,需要针对新类别的数据配置对应的新数据区域和新消息队列,并在生效情况描述信息中新增对应的一条数据,其中,新增的所述一条数据中包括表名信息、新数据区域的字段值、新消息队列topic、开始时间和结束时间。
另外,本公开实施例中,对于数据区域的新增和数据类别的新增而言,本公开不限制两者产生的先后顺序,换言之,可以根据处理需要,预先创建新数据区域和对应的新消息队列,避免产生的新类别数据无法存储,或者,可以在产生有新类别的数据后,针对性的新增新数据区域和新消息列表。
对于新增数据区域的触发过程而言,处理设备需要响应于针对新数据区域的新增指示,确定所述新增指示针对的数据类别和所述新增指示的接收时间;进而,基于所述接收时间和轮询所述实时流表的周期时长,确定针对所述新数据区域配置的生效时间,并在当前的实时流表中,新增所述新数据区域、所述新数据区域对应的字段值和有效时段描述信息,以及所述新数据区域对应的新消息队列主题。
具体的,对于实时流表的维护而言,维护所述实时流表的设备可以根据新数据区域的新增指示,确定所述新增指示针对的数据类别,并确定所述新增指示的接收时间,其中,所述新增指示可能由相关对象触发;进而,为了为基于所述实时流表进行数据存储和数据获取的任务提供处理时间,使得各个业务都能够通过轮询所述实时流表确定数据区域的新增情况,因此,在所述接收时间的基础上延后一段时间,作为所述新数据区域的生效时间;进而在所述实时流表中记录所述新增数据区域对应的信息,其中,所述实时流表的维护设备可以是所述处理设备,或者,可以是其他设备,本公开不做具体限制。
例如,参阅图5A所示,其为本公开实施例中新增数据区域的生效时间示意图。根据图5A所示意的,假设用户发起新增数据区域的时间为:2021-10-05 06:55:00,且根据实际的处理需要,确定各个数据获取任务或存储任务对于实时流表的轮询周期为1min;则为了为下游生产程序(对应数据存储任务)和消费程序(对应数据获取任务),预留轮询实时流表中生效情况描述信息的时间,让下游程序有足够的时间感知相关的数据区域变动,以做出相应的响应操作。处理设备将基于提交数据分区新增的时间(即新增指示的接收时间),以及所述轮询周期,确定新增数据区域的生效时间。
又例如,继续根据图5A所示,假设对应设置的延迟时间为5min,则新增数据区域的生效时间等于:新增指示的接收时间+5min,结果精确到秒。即图5A中示意的,新增数据分区的生效时间为2021-10-05 07:00:00。
这样,对于新数据区域来说,新数据区域的生效时间,晚于对于新数据区域的新增指示接收时间,而且生效时间与接收时间的时间差大于下游生产程序(对应数据存储任务)和消费程序(对于数据获取任务),轮询实时流表中元数据相关信息的时间;使得下游生产程序和消费程序由足够时间感知数据区域的变化,并作出适应性的调整。
所述处理设备在基于先前轮询实时流表确定的目标消息队列,进行数据的获取操作的情况下,通过继续轮询所述实时流表,确定存在新增的新数据区域,且所述新数据区域中存储的数据内容,包含在所述数据获取请求针对的数据内容范围中时,所述处理设备确定新数据区域对应的新消息队列,并将所述新消息队列与先前确定的目标消息队列,确定为更新后的目标消息队列;再在所述更新后的目标消息队列中,进行数据的获取操作。
具体的,处理设备基于数据获取请求,确定所述新数据区域对应存储的数据内容,包含在所述数据获取请求针对的数据内容范围中时,则可以将所述新数据区域对应的新消息队列,与先前确定的目标消息队列,共同作为所述数据获取请求所针对的新的目标消息队列。
例如,假设数据获取请求用于获取全部的行为数据,基于数据获取请求在实时流表中确定存储有两种对应的行为日志:播放行为和收藏行为,那么,需要从播放行为和收藏行为各自对应的消息队列中获取数据;进一步的,在持续获取数据的同时,通过周期性轮询实时流表,确定存在新数据区域和新消息队列,用于存储转发行为的操作日志。这样,转发行为的操作日志包含在所述获取全部的行为数据所对应的数据范围内,因此,处理设备将所述新消息队列,以及所述播放行为和收藏行为各自对应的消息队列,确定为新的目标消息队列。
这样,能够在实时流表中数据区域发生动态修改后,感知实时流表的变化,并依据实时流表中新增的数据类型与数据获取请求之间数据内容包含关系,调整数据获取所依据的目标消息队列,避免漏读数据。
本公开实施例中,在基于更新后的目标消息队列,进行数据的获取时,所述处理设备基于新消息队列对应的生效时间和预设时长,确定新线程的启动时间,其中,所述新线程用于从新消息队列中获取数据;然后,在所述先前确定的目标消息队列内,进行数据的获取操作,以及当确定系统时间达到所述启动时间时,基于所述新线程,在所述新消息队列内,进行数据的获取操作,其中,所述新消息队列中数据的写入时间,在所述新消息队列的生效时间之后。
具体的,所述处理设备通过轮询实时流表,基于生效情况描述信息确定数据区域存在新增变更,且需要获取新增的数据时,则需要新建线程以获取新消息队列中的数据,其中,所述新消息队列是对应所述新数据区域建立的。
在此基础上,为了给新线程的启动预留时间,所述处理设备基于新消息队列的生效时间和预设时间,确定新线程的启动时间,使得当确定系统时间达到所述启动时间时,启动新线程读取所述新消息队列中的数据,其中,新消息队列的生效时间与新数据区域的生效时间相同,所述系统时间是指所述处理设备中的时间。
例如,假设设置的预设时间为1min,以表征提前1min开启数据获取线程,那么,假设新数据区域的生效时间是:2021-10-05 07:00:00,则所述处理设备从2021-10-05 06:59:00开启新线程,读取新消息队列中的数据,其中,需要说明的是,新消息队列中的消息体(数据)进入消息队列的时间,在所述新消息队列的生效时间之后,换言之,可以依据消息队列中每条消息体对应的时间戳,过滤掉新消息队列生效之前的消息;另外,所述进入消息队列的时间、所述消息体对应的时间戳,以及消息队列中数据的写入时间可以视为指代相同的时间。
这样,通过配置提前启动线程读取新消息队列中的数据,以及延迟新消息队列的生效时间,能够为相关任务的处理预留准备时间;而且,在获取新消息队列中的数据时,依据消息体中的时间戳(写入时间)与生效时间的关系,能够实现对数据的过滤获取,提高了数据的获取准确性。
情况二、删除数据区域。
本公开实施例中,当根据实际的业务处理需要,确定数据区域被删除时,在实时流表的生效情况描述信息中,会对所述数据区域对应的信息进行调整,设置所述数据区域对应的结束时间。
对于删除数据区域的触发过程而言,处理设备响应于针对指定数据区域的删除指示,将所述指定数据区域确定为待失效数据区域,并确定所述删除指示针对的数据内容和所述删除指示的接收时间;再基于所述删除指示的接收时间和轮询所述实时流表的周期时长,确定针对所述待失效数据区域配置的失效时间,并在当前的实时流表中,更新所述待失效数据区域对应的生效情况描述信息。
具体的,对于实时流表的维护而言,维护实时流表的设备可以根据相关对象触发的数据区域删除指示,将删除的数据区域作为待失效数据区域;并根据所述删除指示的接收时间和轮询实时流表的周期,确定所述待失效数据区域的失效时间。
需要说明的是,本公开实施例中,为了为基于所述待失效数据区域进行数据处理的下游任务预留足够的时间,以感知相关数据区域的状态变化,做好数据处理的调整工作,在确定所述待失效区域的失效时间时,通常在删除指示的接收时间的基础上,延迟一段时长,以得到具体的失效时间。
例如,参阅图5B所示,其为本公开实施例中待失效数据区域的失效时间示意图,假设相关对象在2021-11-01 07:55:00发起数据区域的删除指示,且轮询实时流表的周期时长为1min;则可以设置在2021-11-01 07:55:00的基础上延迟5min,确定对应的结束时间为2021-11-01 08:00:00,相当于预留了5min的时间,供下游程序做好准备工作。
这样,对于删除的数据区域来说,对应配置的失效时间是在删除指示的接收时间的基础上延迟确定的,且失效时间与删除指示的接收时间之间的时间差,大于下游生产程序和消费程序轮询实时流表的时间,使得下游程序能够具有足够的时间感知数据区域的变化。
在实时流表中存在数据区域变为待失效数据区域的情况下,所述处理设备在基于先前轮询实时流表确定的目标消息队列,进行数据的获取操作之后,在继续基于当前的数据获取请求进行获取数据的过程中,通过继续轮询所述实时流表,确定存在待失效数据区域,且所述待失效数据区域中存储的数据内容,包含在所述数据获取请求针对的数据内容范围中时,所述处理设备在先前确定的目标消息队列中,标记所述待失效数据区域对应的待失效消息队列,得到处理后的目标消息队列;再在所述处理后的目标消息队列中,进行数据的获取操作。
具体的,当确定待失效数据区域对应的待失效消息队列,包含在先前对应数据获取请求确定的目标消息队列中时,需要对待失效消息队列进行标记,并在达到所述待失效消息队列对应的失效时间之前,继续基于所述目标消息队列,进行数据的获取,其中,所述待失效数据区域的失效时间即为所述待失效消息队列的失效时间。
这样,能够在实时流表中数据区域的生效情况发生动态修改时,及时感知实时流表的变化,使得能够及时确定待失效消息队列,并能够在达到对应的失效时间时及时停止对于所述待失效消息队列的数据获取。
本公开实施例中,在基于处理后的目标消息队列,进行数据的获取时,所述处理设备在所述处理后的目标消息队列中,进行数据的获取操作,以及当确定针对所述待失效消息队列内数据的获取,达到预设的获取截止条件时,结束针对所述待失效消息队列中数据的获取操作。
具体的,所述处理设备通过轮询实时流表,基于所述实时流表中的生效情况描述信息,确定某数据区域被新配置有具体数值的结束时间时,则说明所述某数据区域被删除,且处于待失效状态,故可以称为待失效数据区域;进而,所述处理设备确定待失效数据区域的失效时间,并以消息队列中消息体对应的写入时间(时间戳)为依据,基于预设的获取截止条件,判断是否从待失效消息队列中获取数据。
需要说明的是,本公开实施例中,所述获取截止条件包括但不限于以下任意一项或组合:在所述待失效消息队列中,获取到写入时间在所述待失效消息队列的失效时间之后的数据,其中,按照数据的写入时间先后顺序进行数据的获取;确定系统时间达到所述失效时间,且所述待失效消息队列中,无剩余需要获取的数据。
这样,一方面可以根据消息列表中的写入时间为依据,确定待失效消息队列中的数据是否需要被获取;另一方面,可以根据失效时间之后,待失效消息队列中的待读取数据的剩余情况,确定是否剩余有需要获取的数据,因而,能够有效避免对于失效数据的获取。
基于上述针对实时流表的说明应该明确的是,数据在被存储至消息队列后,才能够被获取,因此,数据的获取和数据的存储存在依存关系,本公开实施例中,实时流表不仅为数据的获取过程提供了依据,还能够为数据的存储过程提供处理依据。
下面结合附图,对数据的存储流程进行说明:
参阅图6所示,其为本公开实施例中数据的存储流程示意图,下面结合附图6,对具体的数据存储流程进行说明:
步骤601:处理设备响应于数据存储请求,确定所述数据存储请求中携带的数据描述信息。
具体的,处理设备可以根据实际的存储需要,在新数据产生时,自动响应于预先配置的数据存储请求,存储线上产生的各类别的实时数据,或者,所述处理设备可以响应于来自内部或者外部的数据存储请求,根据所述数据存储请求中携带的数据描述信息,确定需要存储的指定类别的数据。
步骤602:处理设备根据当前轮询确定的实时流表,确定数据描述信息对应的消息队列,并在所述消息队列内,进行数据的写入操作。
处理设备根据当前轮询确定的实时流表,确定数据描述信息对应的消息队列,其中,基于所述数据描述信息确定消息队列的过程,与上述流程中的确定过程相同,处理设备可以根据数据描述信息与数据区域的字段值的匹配情况,确定匹配的数据区域,进而根据数据区域的字段值与消息队列主题的对应关系,确定对应的消息队列。
进一步的,处理设备在确定的所述消息队列中,进行数据的写入操作,其中,写入的每个数据关联有对应的写入时间。
这样,借助于实时流表,能够快速确定存储数据的消息队列,有助于提高数据的写入速度。
与上述数据获取的过程类似,在进行数据存储时,当轮询实时流表,发现数据区域发生变化时,同样需要根据数据区域的增删情况,调整受影响的存储操作。另外,当仅调整了数据区域与消息队列的映射关系时,则可以直接在重新确定的消息队列中进行数据的存储操作。
下面从数据区域的新增和删除两种情况,对数据存储的过程进行说明:
情况A、数据区域新增。
与上述情况一的场景类似,在消息队列内,进行数据的写入操作之后,在继续进行数据写入的过程中,通过继续轮询所述实时流表,确定存在新增的新数据区域和新消息队列时,考虑到实际工程应用中,需要存储产生的全部实时数据,因此,新数据类别的数据,必然在需要存储的数据范围内。
在此基础上,所述处理设备确定所述新消息队列的生效时间,并在系统时间达到所述新消息队列的生效时间,且接收到针对所述新消息队列的数据存储请求时,将接收的对应所述新数据区域的数据,写入所述新消息队列中。
具体的,处理设备在轮询实时流表时,根据所述实时流表中的生效情况描述信息,确定存在数据区域的新增时,所述处理设备获取新数据区域的生效时间;进而,所述处理设备在所述生效时间开始时,接收新类别的数据,并将数据存储至所述新消息队列中。
本公开实施例中,可选择的,可以在新消息队列的生效时间之前,提前一段时间启动数据存储线程,以满足数据的存储需要。
这样,能够在存在新增数据区域时,及时感知数据区域的变化,进而及时完成相关数据的存储。
情况B、数据区域删除。
与上述情况二的场景类似,在消息队列内,进行数据的写入操作之后,在继续进行数据写入的过程中,通过继续轮询所述实时流表,确定存在有待失效数据区域时,所述处理设备确定所述待失效消息队列的失效时间,并在确定系统时间达到所述待失效消息队列的失效时间时,停止向所述待失效消息队列写入数据。
具体的,处理设备通过轮询实时流表,确定所述实时流表的生效情况描述信息中,存在被新配置有结束时间的数据区域,则确定所述数据区域为待失效数据区域,其中,所述结束时间用于标识对应的数据区域的失效时间,是相关设备基于数据区域的删除指示而配置的。
进一步的,所述处理设备获取所述待失效区域的失效时间,进而能够根据待失效区域确定对应的待失效消息队列;然后,以所述处理设备中的系统时间为准,当确定系统时间达到所述失效时间时,停止向所述待失效消息队列写入数据。
这样,借助于实时流表,能够及时感知失效的数据区域,避免由于无法感知数据区域的变化而出现数据写入失败的问题。
综合而言,由于实时流表的生效情况描述信息中记录所有数据区域的变更历史,且将所有数据区域的变更都是延迟的,因此,能够有效保证与变更的数据区域相关的下游读写程序,有足够的时间来应对数据区域变更,做好相应的准备工作;而且,对于数据存储任务(由写入程序实现)而言,根据处理设备的系统时间来做出相应的处理,便于操作的进行,对于数据获取任务(由读取程序实现)而言,根据消息队列中消息体里面记录的写入时间(即消息队列中消息的时间戳),来过滤无效的数据或消息,并在判断出待失效消息队列中不存在需要获取的数据后,停止针对所述待失效消息队列进行数据获取操作。
另外,当将本公开提出的技术方案,测试应用于音乐APP的实时数据平台上时,基于本公开提出的实时流表完成数据的获取时,能够从整体上节省40%以上的带宽资源和计算资源,极端情况下能够节省80%以上的带宽和计算资源,并能够降低30%以上的消息队列处理压力。
下面以一个具体的举例,对执行“按照1min的窗口统计所有行为的人数和次数”的实时任务时,确定新增数据区域和删除数据分区时,执行的过程进行说明。假设初始轮询得到的实时流表如图3B所示,且所述实时任务具体如下:
SELECT
TUMBLE_START(ts,INTERVAL‘1’MINUTE)START_TIME,
//表征窗口开始时间和窗口覆盖的时长
behavior,//表征查询与行为(“bahavior”)字段对应的内容。
COUNT(1)CNT,//表征查询全部列中包括的数据总数
COUNT(DISTINCT userid)USER_CNT
//表征查询USER_CNT列中非重复的用户ID数
FROM KafakaTable//表征要查询的目标实时流表的名称
GROUP BY behavior,TUMBLE(ts,INTERVAL‘1’MINUTE)
//表征按照窗口和行为进行分组
则根据所述实时任务所示意的,按照1min的窗口统计所有行为的人数和次数时,基于所述实时流表可以确定“行为(behavior)”匹配有三个数据区域,分别是click(点击)行为数据区域、play(播放)行为数据区域,以及impress(曝光)行为数据区域。当新增有数据区域,或者,针对数据区域进行删除时,由于实时程序是不断运行的,借助于轮询实时流表,能够及时自动感知数据区域的变化情况。
需要说明的是,本公开实施例中,针对数据区域配置的字段值,与查询语句中查询的字段存在对应关系,使得根据查询语句中的字段,能够匹配确定对应的数据区域,另外,本公开实施例中处理设备在针对消息队列进行数据的存储和获取时,可以采用诸如Flink在内的处理框架,基于消息队列进行数据的存储和获取。
参阅图7A所示,其为本公开实施例中数据区域变化时数据处理流程示意图,根据图7A所示意的,与数据获取任务所对应的实时读取程序,以及与数据存储任务所对应的实时写入程序,通常情况下可以共同存在且并行运行。
在执行数据获取时,借助于实时流表确定目标消息队列,并在从目标消息队列中获取数据的过程中,轮询所述实时流表以确定数据区域的新增情况和数据区域的变更历史,使得能够及时感知数据区域与消息队列之间映射关系的变化,其中,所述数据区域与消息队列之间的映射关系,是根据数据区域的字段值与消息队列主题之间的映射关系确定的。
同理,在执行数据存储操作时,同样基于实时流表确定数据的存储位置,并通过轮询实时流表,确定数据区域的变更情况,进而基于最新感知的映射关系,确定数据的存储位置。
又例如,参阅图7B所示,其为本公开实施例中针对新消息队列的操作示意图,根据图7B所示意的,生产程序(对应数据存储任务)向新消息队列中存储数据的同时,消费程序(对应数据获取任务)可以从新消息队列中获取数据,但是,对于新消息队列而言,仅保存有生效时间2021-10-05 07:00:00之后存入的消息,如消息1-3,对应的,目前也只有消息1-3能够被获取。
特殊的,对于在数据区域的生效时间之前的数据,会根据消息时间直接过滤掉,无法存储入新消息队列,或者,无法从新消息队列中被获取。
又例如,参阅图7C所示,其为本公开实施例中针对待失效消息队列的操作示意图,根据图7C所示意的,在达到待失效消息队列对应的失效时间之前,生产程序(对应数据存储任务)向待失效消息队列中存储数据的同时,消费程序(对应数据获取任务)从待失效消息队列中获取数据。但是,对于待失效消息队列而言,仅包括时间戳(写入时间)在失效时间2021-11-01 08:00:00之前存入的消息,如消息1-3等,对应的,目前也只有消息1-3等能够被获取。
特殊的,当系统时间(自然时间)达到待失效消息队列对应的失效时间后,根据消息队列中数据的时间戳,确定满足对应的获取截止条件时,停止从待失效消息队列中获取数据。
示例性设备
在介绍了本公开示例性实施方式的方法之后,接下来对本公开示例性实施方式的数据投放需求的承接控制装置进行介绍。
如图8所示,为本公开实施例提供的数据获取装置的结构示意图。在一个实施例中,数据获取装置800包括:
响应单元801,用于响应于数据获取请求,根据当前轮询确定的实时流表,确定所述数据获取请求针对的目标消息队列;所述实时流表中包括元数据信息和消息队列主题,所述元数据信息包括标识不同数据区域的字段值、数据区域的有效时段描述信息,以及字段值与消息队列主题的映射关系,一个消息队列主题对应一个消息队列,所述字段值用于标识数据区域中存储的数据类别;
获取单元802,用于在所述目标消息队列中,进行数据的获取操作。
可选的,所述根据当前轮询确定的实时流表中,确定所述数据获取请求针对的目标消息队列时,所述响应单元801用于:
确定所述数据获取请求中携带的数据描述信息,并在轮询确定的实时流表中,根据不同数据区域的字段值与所述数据描述信息的匹配情况,确定所述数据获取请求针对的、目标数据区域的字段值;
根据所述实时流表中字段值与消息队列主题的映射关系,确定所述数据获取请求对应的目标消息队列主题,并基于所述目标消息队列主题确定对应的目标消息队列。
可选的,在所述目标消息队列中,进行数据的获取操作之后,所述响应单元801还用于:
通过继续轮询所述实时流表,确定存在新增的新数据区域,且所述新数据区域中存储的数据内容,包含在所述数据获取请求针对的数据内容范围中时,确定新数据区域对应的新消息队列,并将所述新消息队列与先前确定的目标消息队列,确定为更新后的目标消息队列;
在所述更新后的目标消息队列中,进行数据的获取操作。
可选的,所述通过继续轮询所述实时流表,确定存在新增的数据区域之前,所述响应单元801还用于:
响应于针对新数据区域的新增指示,确定所述新增指示针对的数据类别和所述新增指示的接收时间;
基于所述接收时间和轮询所述实时流表的周期时长,确定针对所述新数据区域配置的生效时间,并在当前的实时流表中,新增所述新数据区域、所述新数据区域对应的字段值和有效时段描述信息,以及所述新数据区域对应的新消息队列主题。
可选的,所述在所述更新后的目标消息队列中,进行数据的获取操作,所述响应单元801还用于:
基于新消息队列对应的生效时间和预设时长,确定新线程的启动时间,其中,所述新线程用于从新消息队列中获取数据;
在所述先前确定的目标消息队列内,进行数据的获取操作,以及当确定系统时间达到所述启动时间时,基于所述新线程,在所述新消息队列内,进行数据的获取操作,其中,所述新消息队列中数据的写入时间,在所述新消息队列的生效时间之后。
可选的,在所述目标消息队列中,进行数据的获取操作之后,所述响应单元801还用于:
通过继续轮询所述实时流表,确定存在待失效数据区域,且所述待失效数据区域中存储的数据内容,包含在所述数据获取请求针对的数据内容范围中时,在先前确定的目标消息队列中,标记所述待失效数据区域对应的待失效消息队列,得到处理后的目标消息队列;
在所述处理后的目标消息队列中,进行数据的获取操作。
可选的,所述通过继续轮询所述实时流表,确定存在待失效数据区域之前,所述响应单元801还用于:
响应于针对指定数据区域的删除指示,将所述指定数据区域确定为待失效数据区域,并确定所述删除指示针对的数据内容和所述删除指示的接收时间;
基于所述删除指示的接收时间和轮询所述实时流表的周期时长,确定针对所述待失效数据区域配置的失效时间,并在当前的实时流表中,更新所述待失效数据区域对应的生效情况描述信息。
可选的,所述在所述处理后的目标消息队列中,进行数据的获取操作,所述响应单元801还用于:
在所述处理后的目标消息队列中,进行数据的获取操作,以及当确定针对所述待失效消息队列内数据的获取,达到预设的获取截止条件时,结束针对所述待失效消息队列中数据的获取操作。
可选的,所述预设的获取截止条件,包括以下任意一项或组合:
在所述待失效消息队列中,获取到写入时间在所述待失效消息队列的失效时间之后的数据,其中,按照数据的写入时间先后顺序进行数据的获取;
确定系统时间达到所述失效时间,且所述待失效消息队列中,无剩余需要获取的数据。
可选的,所述装置还包括存储单元,所述存储单元803用于:
响应于数据存储请求,确定所述数据存储请求中携带的数据描述信息;
根据当前轮询确定的实时流表,确定所述数据描述信息对应的消息队列,并在所述消息队列内,进行数据的写入操作,其中,写入的每个数据关联有对应的写入时间。
可选的,所述在所述消息队列内,进行数据的写入操作之后,所述存储单元803还用于:
通过继续轮询所述实时流表,确定存在新增的新数据区域和新消息队列时,确定所述新消息队列的生效时间,并在系统时间达到所述新消息队列的生效时间,且接收到针对所述新消息队列的数据存储请求时,将接收的对应所述新数据区域的数据,写入所述新消息队列中。
可选的,所述在所述消息队列内,进行数据的写入操作之后,所述存储单元803还用于:
通过继续轮询所述实时流表,确定存在删除的待失效消息队列时,确定所述待失效消息队列的失效时间,并在确定系统时间达到所述待失效消息队列的失效时间时,停止向所述待失效消息队列写入数据。
可选的,所述响应单元801还用于:
采用匹配的解析方式,解析获取的数据,得到待处理数据,其中,所述解析方式保存在所述实时流表中;
基于所述待处理数据完成指定的业务处理需求。
基于与上述数据获取方法相同的发明构思,本公开实施例还提供了一种电子设备,该电子设备具体可以为图2中的处理设备。如图9所示,其为本公开实施例中电子设备的实体结构示意图,该电子设备900可以包括处理器901和存储器902。
处理器901可以是通用处理器,例如中央处理器(CPU)、数字信号处理器(DigitalSignal Processor,DSP)、专用集成电路(Application Specific Integrated Circuit,ASIC)、现场可编程门阵列(Field Programmable Gate Array,FPGA)或者其他可编程逻辑器件、分立门或者晶体管逻辑器件、分立硬件组件,可以实现或者执行本公开实施例中公开的各方法、步骤及逻辑框图。通用处理器可以是微处理器或者任何常规的处理器等。结合本公开实施例所公开的方法的步骤可以直接体现为硬件处理器执行完成,或者用处理器中的硬件及软件模块组合执行完成。
存储器902作为一种非易失性计算机可读存储介质,可用于存储非易失性软件程序、非易失性计算机可执行程序以及模块。存储器可以包括至少一种类型的存储介质,例如可以包括闪存、硬盘、多媒体卡、卡型存储器、随机访问存储器(Random Access Memory,RAM)、静态随机访问存储器(Static Random Access Memory,SRAM)、可编程只读存储器(Programmable Read Only Memory,PROM)、只读存储器(Read Only Memory,ROM)、带电可擦除可编程只读存储器(Electrically Erasable Programmable Read-Only Memory,EEPROM)、磁性存储器、磁盘、光盘等等。存储器是能够用于携带或存储具有指令或数据结构形式的期望的程序代码并能够由计算机存取的任何其他介质,但不限于此。本公开实施例中的存储器902还可以是电路或者其它任意能够实现存储功能的装置,用于存储程序指令和/或数据。
示例性程序产品
本公开实施例提供了一种计算机可读存储介质,用于储存为上述电子设备所用的计算机程序指令,其包含用于执行本公开任一示例性实施方式中的数据获取方法的程序。
上述计算机存储介质可以是计算机能够存取的任何可用介质或数据存储设备,包括但不限于磁性存储器(例如软盘、硬盘、磁带、磁光盘(MO)等)、光学存储器(例如CD、DVD、BD、HVD等)、以及半导体存储器(例如ROM、EPROM、EEPROM、非易失性存储器(NAND FLASH)、固态硬盘(SSD))等。
在一些可能的实施方式中,本公开的各个方面还可以实现为一种计算机程序产品,其包括程序代码,当该计算机程序产品在服务器设备上运行时,该计算机程序产品用于使服务器设备执行本说明书上述“示例性方法”部分中描述的根据本公开各种示例性实施方式的数据投放需求的承接控制方法中的步骤。
所述计算机程序产品可以采用一个或多个可读介质的任意组合。可读介质可以是可读信号介质或者可读存储介质。可读存储介质例如可以是—但不限于电、磁、光、电磁、红外线、或半导体的系统、装置或器件,或者任意以上的组合。可读存储介质的更具体的例子(非穷举的列表)包括:具有一个或多个导线的电连接、便携式盘、硬盘、随机存取存储器(RAM)、只读存储器(ROM)、可擦式可编程只读存储器(EPROM或闪存)、光纤、便携式紧凑盘只读存储器(CD-ROM)、光存储器件、磁存储器件、或者上述的任意合适的组合。
根据本公开的实施方式的用于即时通信应用的计算机程序产品,其可以采用便携式紧凑盘只读存储器(CD-ROM)并包括程序代码,并可以在服务器设备上运行。然而,本公开的程序产品不限于此,在本文件中,计算机可读存储介质可以是任何包含或存储程序的有形介质,该程序可以被指令执行系统、装置或者器件使用或者与其结合使用。
可读信号介质可以包括在基带中或者作为载波一部分传播的数据信号,其中承载了可读程序代码。这种传播的数据信号可以采用多种形式,包括但不限于电磁信号、光信号或上述的任意合适的组合。可读信号介质还可以是可读存储介质以外的任何可读介质,该可读介质可以发送、传播或者传输用于由指令执行系统、装置或者器件使用或者与其结合使用的程序。
可读介质上包含的程序代码可以用任何适当的介质传输,包括但不限于无线、有线、光缆、RF等等,或者上述的任意合适的组合。
可以以一种或多种程序设计语言的任意组合来编写用于执行本公开操作的程序代码,所述程序设计语言包括面向对象的程序设计语言诸如Java、C++等,还包括常规的过程式程序设计语言诸如“C”语言或类似的程序设计语言。程序代码可以完全地在用户计算设备上执行、部分地在用户设备上执行、作为一个独立的软件包执行、部分在用户计算设备上部分在远程计算设备上执行、或者完全在远程计算设备或服务器上执行。在涉及远程计算设备的情形中,远程计算设备可以通过任意种类的网络包括局域网(LAN)或广域网(WAN)连接到用户计算设备,或者,可以连接到外部计算设备(例如利用因特网服务提供商来通过因特网连接)。
应当注意,尽管在上文详细描述中提及了装置的若干单元或子单元,但是这种划分仅仅是示例性的并非强制性的。实际上,根据本公开的实施方式,上文描述的两个或更多单元的特征和功能可以在一个单元中具体化。反之,上文描述的一个单元的特征和功能可以进一步划分为由多个单元来具体化。
此外,尽管在附图中以特定顺序描述了本公开方法的操作,但是,这并非要求或者暗示必须按照该特定顺序来执行这些操作,或是必须执行全部所示的操作才能实现期望的结果。附加地或备选地,可以省略某些步骤,将多个步骤合并为一个步骤执行,和/或将一个步骤分解为多个步骤执行。
虽然已经参考若干具体实施方式描述了本公开的精神和原理,但是应该理解,本公开并不限于所公开的具体实施方式,对各方面的划分也不意味着这些方面中的特征不能组合以进行受益,这种划分仅是为了表述的方便。本公开旨在涵盖所附权利要求的精神和范围内所包括的各种修改和等同布置。

Claims (10)

1.一种数据获取方法,其特征在于,包括:
响应于数据获取请求,根据当前轮询确定的实时流表,确定所述数据获取请求针对的目标消息队列;所述实时流表中包括元数据信息和消息队列主题,所述元数据信息包括标识不同数据区域的字段值、数据区域的有效时段描述信息,以及字段值与消息队列主题的映射关系,一个消息队列主题对应一个消息队列,所述字段值用于标识数据区域中存储的数据类别;
在所述目标消息队列中,进行数据的获取操作。
2.如权利要求1所述的方法,其特征在于,所述根据当前轮询确定的实时流表中,确定所述数据获取请求针对的目标消息队列,包括:
确定所述数据获取请求中携带的数据描述信息,并在轮询确定的实时流表中,根据不同数据区域的字段值与所述数据描述信息的匹配情况,确定所述数据获取请求针对的、目标数据区域的字段值;
根据所述实时流表中字段值与消息队列主题的映射关系,确定所述数据获取请求对应的目标消息队列主题,并基于所述目标消息队列主题确定对应的目标消息队列。
3.如权利要求1所述的方法,其特征在于,在所述目标消息队列中,进行数据的获取操作之后,所述方法还包括:
通过继续轮询所述实时流表,确定存在新增的新数据区域,且所述新数据区域中存储的数据内容,包含在所述数据获取请求针对的数据内容范围中时,确定新数据区域对应的新消息队列,并将所述新消息队列与先前确定的目标消息队列,确定为更新后的目标消息队列;
在所述更新后的目标消息队列中,进行数据的获取操作。
4.如权利要求3所述的方法,其特征在于,所述通过继续轮询所述实时流表,确定存在新增的数据区域之前,还包括:
响应于针对新数据区域的新增指示,确定所述新增指示针对的数据类别和所述新增指示的接收时间;
基于所述接收时间和轮询所述实时流表的周期时长,确定针对所述新数据区域配置的生效时间,并在当前的实时流表中,新增所述新数据区域、所述新数据区域对应的字段值和有效时段描述信息,以及所述新数据区域对应的新消息队列主题。
5.如权利要求3所述的方法,其特征在于,所述在所述更新后的目标消息队列中,进行数据的获取操作,还包括:
基于新消息队列对应的生效时间和预设时长,确定新线程的启动时间,其中,所述新线程用于从新消息队列中获取数据;
在所述先前确定的目标消息队列内,进行数据的获取操作,以及当确定系统时间达到所述启动时间时,基于所述新线程,在所述新消息队列内,进行数据的获取操作,其中,所述新消息队列中数据的写入时间,在所述新消息队列的生效时间之后。
6.如权利要求1所述的方法,其特征在于,在所述目标消息队列中,进行数据的获取操作之后,所述方法还包括:
通过继续轮询所述实时流表,确定存在待失效数据区域,且所述待失效数据区域中存储的数据内容,包含在所述数据获取请求针对的数据内容范围中时,在先前确定的目标消息队列中,标记所述待失效数据区域对应的待失效消息队列,得到处理后的目标消息队列;
在所述处理后的目标消息队列中,进行数据的获取操作。
7.如权利要求1-6任一项所述的方法,其特征在于,所述方法还包括:
响应于数据存储请求,确定所述数据存储请求中携带的数据描述信息;
根据当前轮询确定的实时流表,确定所述数据描述信息对应的消息队列,并在所述消息队列内,进行数据的写入操作,其中,写入的每个数据关联有对应的写入时间。
8.一种数据获取装置,其特征在于,包括:
响应单元,用于响应于数据获取请求,根据当前轮询确定的实时流表,确定所述数据获取请求针对的目标消息队列;所述实时流表中包括元数据信息和消息队列主题,所述元数据信息包括标识不同数据区域的字段值、数据区域的有效时段描述信息,以及字段值与消息队列主题的映射关系,一个消息队列主题对应一个消息队列,所述字段值用于标识数据区域中存储的数据类别;
获取单元,用于在所述目标消息队列中,进行数据的获取操作。
9.一种电子设备,包括存储器、处理器及存储在存储器上并可在处理器上运行的计算机程序,其特征在于,所述处理器执行所述程序时实现权利要求1-7任一项所述方法的步骤。
10.一种计算机可读存储介质,其上存储有计算机程序,其特征在于:所述计算机程序被处理器执行时实现权利要求1-7任一项所述方法的步骤。
CN202210778503.6A 2022-06-30 2022-06-30 一种数据获取方法、装置、电子设备及存储介质 Pending CN115114340A (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN202210778503.6A CN115114340A (zh) 2022-06-30 2022-06-30 一种数据获取方法、装置、电子设备及存储介质

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN202210778503.6A CN115114340A (zh) 2022-06-30 2022-06-30 一种数据获取方法、装置、电子设备及存储介质

Publications (1)

Publication Number Publication Date
CN115114340A true CN115114340A (zh) 2022-09-27

Family

ID=83329849

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202210778503.6A Pending CN115114340A (zh) 2022-06-30 2022-06-30 一种数据获取方法、装置、电子设备及存储介质

Country Status (1)

Country Link
CN (1) CN115114340A (zh)

Similar Documents

Publication Publication Date Title
US20170277769A1 (en) Techniques to manage time-varying cluster configuration information
RU2691595C2 (ru) Конструируемый поток данных для улучшенной обработки событий
JP2016500168A (ja) アーカイブされたリレーションを有する連続クエリの管理
US11288245B2 (en) Telemetry definition system
US20170185454A1 (en) Method and Electronic Device for Determining Resource Consumption of Task
US11556456B2 (en) Telemetry system extension
WO2019085307A1 (zh) 数据抽样方法、终端、设备以及计算机可读存储介质
US10701213B2 (en) Dynamically generating an aggregation routine
CN114356921A (zh) 数据处理方法、装置、服务器及存储介质
CN111382182A (zh) 数据处理方法、装置、电子设备及存储介质
CN111177237B (zh) 一种数据处理系统、方法及装置
US10951540B1 (en) Capture and execution of provider network tasks
CN114579533A (zh) 用户活跃度指标的获取方法、装置、电子设备及存储介质
CN103248511A (zh) 一种单点业务性能的分析方法、装置和系统
CN113010494A (zh) 一种数据库审计方法、装置及数据库代理服务器
CN113297245A (zh) 获取执行信息的方法及装置
CN115114340A (zh) 一种数据获取方法、装置、电子设备及存储介质
CN113590604B (zh) 业务数据的处理方法、装置和服务器
CN113377604B (zh) 一种数据处理方法、装置、设备和存储介质
US11157247B2 (en) Cryptographic digital twin segregation system for development operations
CN110414813B (zh) 指标曲线的构建方法、装置及设备
CN113901046A (zh) 虚拟维度表构建方法及装置
US10348596B1 (en) Data integrity monitoring for a usage analysis system
US10706073B1 (en) Partitioned batch processing for a usage analysis system
CN109992695B (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