掌桥专利:专业的专利平台
掌桥专利
首页

一种数据处理方法及相关装置

文献发布时间:2024-04-18 20:02:40


一种数据处理方法及相关装置

技术领域

本申请涉及计算机技术领域,具体涉及一种数据处理方法及相关装置。

背景技术

业务在快速上升过程中,用户量会随之飙升,同时用户行为等数据上报也日益增长,为接收消息的处理系统带来了巨大挑战。目前使用的是kafka发送json数据格式进行传输,该方式简单直接,容易理解,方便在业务前期快速应用kafka的相关特性。这种方式在量级小的情况下,表现也较为良好。但是量级大了容易造成了消费堆积,存储空间占用大,程序容易出现异常等问题。

发明内容

鉴于上述问题,提出了本发明以便提供一种克服上述问题或者至少部分地解决上述问题的一种数据处理方法及相关装置。

第一方面,本发明实施例提供了一种数据处理方法,所述方法包括以下步骤:

获取源数据,确定所述源数据所归属的Kafka消息队列topic;

基于与所述topic匹配的schema对所述源数据进行Avro序列化处理,得到序列化数据;所述序列化数据中存在所述schema的标识信息;

将所述序列化数据发布至Kafka;

从Kafka获取序列化数据;

确定序列化数据中的标识信息对应的schema,基于所述schema对序列化数据进行解析,得到源数据。

在一种实施方式中,所述基于与所述topic匹配的schema对所述源数据进行Avro序列化处理,得到序列化数据,包括步骤:

对所述topic所匹配的schema进行版本校验,确定对应版本的schema;

基于所述对应版本的schema对所述源数据进行Avro序列化处理,得到序列化数据;所述序列化数据中存在所述对应版本的schema的标识信息。

在一种实施方式中,所述对所述topic所匹配的schema进行版本校验,确定对应版本的schema,包括步骤:

若所述topic所匹配的schema版本校验不通过,则创建对应版本信息,并注册schema。

在一种实施方式中,在所述基于与所述topic匹配的schema对所述源数据进行Avro序列化处理前,还包括步骤:

若与所述源数据所归属的topic匹配的schema不存在,则注册schema。

第二方面,本发明实施例提供了一种数据处理装置,所述装置包括:

第一获取模块,用于获取源数据,确定所述源数据所归属的Kafka消息队列topic;

序列化模块,用于基于与所述topic匹配的schema对所述源数据进行Avro序列化处理,得到序列化数据;所述序列化数据中存在所述schema的标识信息;

发布模块,用于将所述序列化数据发布至Kafka;

第二获取模块,用于从Kafka获取序列化数据;

解析模块,用于确定序列化数据中的标识信息对应的schema,基于所述schema对序列化数据进行解析,得到源数据。

在一种实施方式中,所述序列化模块包括:

版本校验子模块,用于对所述topic所匹配的schema进行版本校验,确定对应版本的schema;

序列化子模块,用于基于所述对应版本的schema对所述源数据进行Avro序列化处理,得到序列化数据;所述序列化数据中存在所述对应版本的schema的标识信息。

在一种实施方式中,所述版本校验子模块,还用于若所述topic所匹配的schema版本校验不通过,则创建对应版本信息,并注册schema。

在一种实施方式中,所述装置还包括:

注册模块,用于若与所述源数据所归属的topic匹配的schema不存在,则注册schema。

第三方面,本发明实施例提供了一种计算机设备,所述计算机设备包括:

一个或多个处理器;

存储器,用于存储一个或多个程序;

当所述一个或多个程序被所述一个或多个处理器执行,使得所述一个或多个处理器实现如第一方面中任一项所述的数据处理方法。

第四方面,本发明实施例提供了一种计算机可读存储介质。

所述计算机可读存储介质上存储计算机程序,所述计算机程序被处理器执行时实现如第一方面中任一项所述的数据处理方法。

在本发明实施例中,通过获取源数据,确定所述源数据所归属的Kafka消息队列topic;基于与所述topic匹配的schema对所述源数据进行Avro序列化处理,得到序列化数据;所述序列化数据中存在所述schema的标识信息;将所述序列化数据发布至Kafka;从Kafka获取序列化数据;确定序列化数据中的标识信息对应的schema,基于所述schema对序列化数据进行解析,得到源数据。减少数据存储所需的存储空间,节省数据传输的带宽;减少了序列化时间,提高性能。

附图说明

为了更清楚地说明本申请实施例中的技术方案,下面将对实施例描述中所需要使用的附图作简要介绍,显而易见地,下面描述中的附图仅仅是本申请的一些实施例,对于本领域的普通技术人员来讲,在不付出创造性劳动性的前提下,还可以根据这些附图获得其他的附图。

图1为本发明实施例一提供的一种数据处理方法的流程图;

图2为本发明实施例二提供的一种数据处理装置的结构示意图;

图3为本发明实施例三提供的一种计算机设备的结构示意图。

具体实施方式

下面结合附图和实施例对本发明作进一步的详细说明。可以理解的是,此处所描述的具体实施例仅仅用于解释本发明,而非对本发明的限定。另外还需要说明的是,为了便于描述,附图中仅示出了与本发明相关的部分而非全部结构。

业务在快速上升过程中,用户量会随之飙升,同时用户行为等数据上报也日益增长,为接收消息的处理系统带来了巨大挑战。目前使用的是kafka发送json数据格式进行传输,该方式简单直接,容易理解,方便在业务前期快速应用kafka的相关特性。这种方式在量级小的情况下,表现也较为良好。但是量级大了容易造成了消费堆积,存储空间占用大,程序容易出现异常等问题。

为克服上述问题或者至少部分地解决上述问题,本申请实施例提供数据处理方法,通过该方法可以减少数据存储所需的存储空间,节省数据传输的带宽。下面通过实施例进行详细说明。

实施例一

图1为本发明实施例一提供的一种数据处理方法的流程图,该方法可以由数据处理装置来执行,该数据处理装置可以由软件和/或硬件实现,可以配置在计算机设备中,例如,服务器、个人电脑,等等。所述数据处理方法具体包括如下步骤:

步骤101、获取源数据,确定所述源数据所归属的Kafka消息队列topic。

Kafka是一个分布式的基于发布/订阅模式的消息队列(MQ,Message Queue),主要应用于大数据实时处理领域。所述源数据由Producer消息生产者产生,Producer消息生产者向Kafka消息队列发送源数据时指定消息队列topic。

本步骤中,在获取源数据后,确定所述源数据所归属的Kafka消息队列topic。

步骤102、基于与所述topic匹配的schema对所述源数据进行Avro序列化处理,得到序列化数据;所述序列化数据中存在所述schema的标识信息。

Avro格式是一种二进制格式,对比json和xml格式,avro数据格式去除了存在于每个数据节点的标签或者数据头字段,减少了数据的存储空间,大大节省了用于数据传输的带宽,减少了序列化时间以提高性能,并且其解析性能和平台兼容性上均优于其他数据格式。

在本步骤中,将源数据按照schema进行序列化处理,得到序列化数据,后续在Consumer信息消息者在消费信息时,根据序列化数据中存在的所述schema的标识信息确定同样的schema,并采用同样的schema将序列化数据进行反序列化处理,就可以得到源数据。

例如,可以使用自定义的序列化类,从schema注册中心获取与所述topic匹配的schema的schema id,通过ByteBuffer.allocate(4)申请4个字节填充schema ID,再写入数据流,随后进行序列化处理,最终达到对源数据的定制式序列化处理。

在一种实施方式中,步骤102,基于与所述topic匹配的schema对所述源数据进行Avro序列化处理前,还包括步骤:

若与所述源数据所归属的topic匹配的schema不存在,则注册schema。

在本步骤中,若与所述源数据所归属的topic匹配的schema不存在,则于schema注册中心注册schema。

在一种实施方式中,所述步骤102包括:

子步骤A、对所述topic所匹配的schema进行版本校验,确定对应版本的schema;

子步骤B、基于所述对应版本的schema对所述源数据进行Avro序列化处理;所述序列化数据中存在所述对应版本的schema的标识信息。

对于同一topic存在多版本schema的情况,需要对所述topic所匹配的schema进行版本校验,以确定对应版本的schema。然后再基于所述对应版本的schema对所述源数据进行Avro序列化处理,得到序列化数据。以兼容多版本消息。

所述子步骤A中,若所述topic所匹配的schema版本校验不通过,则创建对应版本信息,并注册schema。

例如,若所述topic所匹配的schema版本校验不通过,即schema注册中心不存在对应版本的schema,需要于schema注册中心创建对应版本信息,并基于所述版本信息于schema注册中心注册schema。

步骤103、将所述序列化数据发布至Kafka。

在本步骤中,序列化数据被发布至Kafka,使Consumer信息消息者能够及时获取数据,提升数据获取的时效性。

步骤104、从Kafka获取序列化数据。

在本步骤中,Consumer信息消息者根据其指定的topic,从Kafka中获取序列化数据。

步骤105、确定序列化数据中的标识信息对应的schema,基于所述schema对序列化数据进行解析,得到源数据。

在本步骤中,根据序列化数据中的标识信息与schema的对应关系,确定对应的schema,并基于所述schema对序列化数据进行解析,得到源数据。

例如,通过ByteBuffer的getInt()获得schema ID,从schema缓存中可以获取元数据,然后进行剩下数据流的解析。

在实施例中,通过获取源数据,确定所述源数据所归属的Kafka消息队列topic;基于与所述topic匹配的schema对所述源数据进行Avro序列化处理,得到序列化数据;所述序列化数据中存在所述schema的标识信息;将所述序列化数据发布至Kafka;从Kafka获取序列化数据;确定序列化数据中的标识信息对应的schema,基于所述schema对序列化数据进行解析,得到源数据。减少数据存储所需的存储空间,节省数据传输的带宽;减少了序列化时间,提高性能。

需要说明的是,对于方法实施例,为了简单描述,故将其都表述为一系列的动作组合,但是本领域技术人员应该知悉,本发明实施例并不受所描述的动作顺序的限制,因为依据本发明实施例,某些步骤可以采用其他顺序或者同时进行。其次,本领域技术人员也应该知悉,说明书中所描述的实施例均属于优选实施例,所涉及的动作并不一定是本发明实施例所必须的。

实施例二

图2为本发明实施例二提供的一种数据处理装置的结构示意图,所述数据处理装置具体可以包括如下模块:

第一获取模块201,用于获取源数据,确定所述源数据所归属的Kafka消息队列topic;

序列化模块202,用于基于与所述topic匹配的schema对所述源数据进行Avro序列化处理,得到序列化数据;所述序列化数据中存在所述schema的标识信息;

发布模块203,用于将所述序列化数据发布至Kafka;

第二获取模块204,用于从Kafka获取序列化数据;

解析模块205,用于确定序列化数据中的标识信息对应的schema,基于所述schema对序列化数据进行解析,得到源数据。

在一种实施方式中,所述序列化模块202包括:

版本校验子模块,用于对所述topic所匹配的schema进行版本校验,确定对应版本的schema;

序列化子模块,用于基于所述对应版本的schema对所述源数据进行Avro序列化处理,得到序列化数据;所述序列化数据中存在所述对应版本的schema的标识信息。

在一种实施方式中,所述版本校验子模块,还用于若所述topic所匹配的schema版本校验不通过,则创建对应版本信息,并注册schema。

在一种实施方式中,所述装置还包括:

注册模块,用于若与所述源数据所归属的topic匹配的schema不存在,则注册schema。

本发明实施例所提供的数据处理装置可执行本发明任意实施例所提供的数据处理方法,具备执行方法相应的功能模块和有益效果。

实施例三

图3为本发明实施例三提供的一种计算机设备的结构示意图。图3示出了适于用来实现本发明实施方式的示例性计算机设备12的框图。图3显示的计算机设备12仅仅是一个示例,不应对本发明实施例的功能和使用范围带来任何限制。

如图3所示,计算机设备12以通用计算设备的形式表现。计算机设备12的组件可以包括但不限于:一个或者多个处理器或者处理单元16,系统存储器28,连接不同系统组件(包括系统存储器28和处理单元16)的总线18。

总线18表示几类总线结构中的一种或多种,包括存储器总线或者存储器控制器,外围总线,图形加速端口,处理器或者使用多种总线结构中的任意总线结构的局域总线。举例来说,这些体系结构包括但不限于工业标准体系结构(ISA)总线,微通道体系结构(MAC)总线,增强型ISA总线、视频电子标准协会(VESA)局域总线以及外围组件互连(PCI)总线。

计算机设备12典型地包括多种计算机系统可读介质。这些介质可以是任何能够被计算机设备12访问的可用介质,包括易失性和非易失性介质,可移动的和不可移动的介质。

系统存储器28可以包括易失性存储器形式的计算机系统可读介质,例如随机存取存储器(RAM)30和/或高速缓存存储器32。计算机设备12可以进一步包括其它可移动/不可移动的、易失性/非易失性计算机系统存储介质。仅作为举例,存储系统34可以用于读写不可移动的、非易失性磁介质(图3未显示,通常称为“硬盘驱动器”)。尽管图3中未示出,可以提供用于对可移动非易失性磁盘(例如“软盘”)读写的磁盘驱动器,以及对可移动非易失性光盘(例如CD-ROM,DVD-ROM或者其它光介质)读写的光盘驱动器。在这些情况下,每个驱动器可以通过一个或者多个数据介质接口与总线18相连。存储器28可以包括至少一个程序产品,该程序产品具有一组(例如至少一个)程序模块,这些程序模块被配置以执行本发明各实施例的功能。

具有一组(至少一个)程序模块42的程序/实用工具40,可以存储在例如存储器28中,这样的程序模块42包括但不限于操作系统、一个或者多个应用程序、其它程序模块以及程序数据,这些示例中的每一个或某种组合中可能包括网络环境的实现。程序模块42通常执行本发明所描述的实施例中的功能和/或方法。

计算机设备12也可以与一个或多个外部设备14(例如键盘、指向设备、显示器24等)通信,还可与一个或者多个使得用户能与该计算机设备12交互的设备通信,和/或与使得该计算机设备12能与一个或多个其它计算设备进行通信的任何设备(例如网卡,调制解调器等等)通信。这种通信可以通过输入/输出(I/O)接口22进行。并且,计算机设备12还可以通过网络适配器20与一个或者多个网络(例如局域网(LAN),广域网(WAN)和/或公共网络,例如因特网)通信。如图所示,网络适配器20通过总线18与计算机设备12的其它模块通信。应当明白,尽管图中未示出,可以结合计算机设备12使用其它硬件和/或软件模块,包括但不限于:微代码、设备驱动器、冗余处理单元、外部磁盘驱动阵列、RAID系统、磁带驱动器以及数据备份存储系统等。

处理单元16通过运行存储在系统存储器28中的程序,从而执行各种功能应用以及数据处理,例如实现本发明实施例所提供的数据处理方法。

实施例四

本发明实施例四还提供一种计算机可读存储介质,计算机可读存储介质上存储有计算机程序,该计算机程序被处理器执行时实现上述数据处理方法的各个过程,且能达到相同的技术效果,为避免重复,这里不再赘述。

其中,计算机可读存储介质例如可以包括但不限于电、磁、光、电磁、红外线、或半导体的系统、装置或器件,或者任意以上的组合。计算机可读存储介质的更具体的例子(非穷举的列表)包括:具有一个或多个导线的电连接、便携式计算机磁盘、硬盘、随机存取存储器(RAM)、只读存储器(ROM)、可擦式可编程只读存储器(EPROM或闪存)、光纤、便携式紧凑磁盘只读存储器(CD-ROM)、光存储器件、磁存储器件、或者上述的任意合适的组合。在本文件中,计算机可读存储介质可以是任何包含或存储程序的有形介质,该程序可以被指令执行系统、装置或者器件使用或者与其结合使用。

注意,上述仅为本发明的较佳实施例及所运用技术原理。本领域技术人员会理解,本发明不限于这里所述的特定实施例,对本领域技术人员来说能够进行各种明显的变化、重新调整和替代而不会脱离本发明的保护范围。因此,虽然通过以上实施例对本发明进行了较为详细的说明,但是本发明不仅仅限于以上实施例,在不脱离本发明构思的情况下,还可以包括更多其他等效实施例,而本发明的范围由所附的权利要求范围决定。

技术分类

06120116586913