基于kafka的分布式消息数据总线的制作方法

文档序号:17720214发布日期:2019-05-22 02:06阅读:1701来源:国知局
基于kafka的分布式消息数据总线的制作方法

本发明基于kafka的分布式消息数据总线涉及信息数据领域,特别是一种适用于分布式数据库和分布式计算集群的分布式消息数据总线。



背景技术:

kafka最初是由linkedin公司开发,旨在提供快速、可扩展、分布式的发布-订阅消息系统。kafka主要应用方向有:海量日志收集、海量数据缓存等等。

kafka提供一种海量缓存方案,可以在一定周期内对数据进行缓存,用户可以存放数据到该缓存(即,生产数据),也可以拉取缓存内的数据(即,消费数据)。超过周期时间,则该周期内存放的数据被自动清空。这样,即能够保证一定时间内数据的重复利用,又能源源不断的存放数据。

kafka的结构主要如下:

1)topic—消息主题,存放特定类型的消息数据;即,每个数据都存放在某个主题下,这样数据能够分类存放,避免交叉使用带来的混乱;

2)producer—消息生产者,将数据封装成kafka的消息单元,并将该消息单元发送至kafka系统,即存入到对应类型的topic;

3)consumer—消息消费者,订阅一个或多个topic,消费所需消息数据;

4)broker—kafka节点名称,持久化topic中的消息数据到本地磁盘。

现如今,随着大数据技术的飞速发展,数据的价值日益体现。越来越多的企业重视数据,从中挖掘出更有利的信息。而这些均需要以数据的高效存储、共享、交换为前提。

目前的kafka信息发布订阅存在如下问题:

1)topic(消息主题)存储的消息数据结构均与各自业务系统挂钩,两者紧密耦合,这就使得不同业务系统之间无法简单快速的共享、交换各自的数据;数据无法交叉运转,难以,则无法满足数据价值至上的时代;

2)kafka不同版本相互不兼容,也即不同版本kafka需实现各自的kafka客户端(producer客户端、consumer客户端);没有统一的客户端兼容所有kafka版本,进而能够统一的操作消息数据。

综上所述,现有的技术受限于:

1)消息数据存储于业务耦合,难以相互作用;

2)kafka版本之间无法兼容,无法统一其客户端。



技术实现要素:

本发明的目的是针对上述不足之处提供一种基于kafka的分布式消息数据总线,实现统一消息数据传输类型,解耦其业务;统一kafka客户端,兼容各个kafka版本。

本发明是采取以下技术方案实现的:

基于kafka的分布式消息数据总线包括kafka通用客户端接口和数据统一模型接口;

所述kafka通用客户端接口用于统一不同版本的kafkaproducer和consumer客户端,屏蔽了外部系统对kafka各版本的使用限制,从而实现与不同版本kafka的producer、consumer客户端相连,保证两者接口结构一致;

所述数据统一模型接口用于统一业务数据接口,与kafka数据保存解耦;根据接口结构,实现业务数据的统一模型组合/拆分逻辑。

所述kafka通用客户端接口包括kafkaproducer通用客户端和kafkaconsumer通用客户端;kafkaproducer通用客户端即kafka生产者,向kafka集群推送消息数据;kafkaconsumer通用客户端即kafka消费者,向kafka集群拉取数据。kafka通用客户端接口针对kafka集群进行操作,而kafka集群可以为不同的版本,因而通用客户端提供给业务系统使用时,屏蔽了kafka原生客户端实现的细节。

kafka通用客户端接口能够根据版本号,加载对应版本kafka的依赖,从而达到兼容不同kafka版本的效果。

数据统一模型接口能根据业务数据的不同,进行结构的调用。

数据统一模型接口分为两种,即数据结构序列化接口和数据结构反序列化接口。

数据结构序列化接口,用于将业务数据转化成统一的字节序列化数据。

数据结构序列化接口的工作方法,包括如下步骤:

1)将业务数据的数据结构进行解析;

2)解析后的数据按照约定的二进制规范进行序列化操作,生成二进制字节序列;

3)将上述步骤生成的字节序列按照约束规范进行组装,组装的组成部分包括序列化头部和真实数据。

所述约束规范为:压缩标识+真实数据长度+数据类型+真实数据(压缩后)。

所述序列化头部包括真实数据长度、真实数据压缩标识和真实数据类型标识。

数据结构反序列化接口,用于将字节序列化数据反转化成业务数据。

数据结构序列化接口的工作方法,包括如下步骤:

1)字节序列化拆分;

按照数据序列化规范将数据进行拆分,解析出真实数据和序列化头部;

2)按照序列化头部的信息指示和约定的二进制规范,将真实数据进行反序列化;

3)将步骤(2)得到的反序列化的数据按照业务数据规范进行规整,整合成业务数据结构。

kafkaproducer通用客户端,通过统一的客户端接口,将数据发送至kafka。

kafkaproducer通用客户端的具体实现方法,包括:

1)实现各版本的kafkaproducer原生接口,接口格式与原生一致,这样外部系统使用时,无需修改原有接口格式,即可直接使用;

2)根据kafka版本的不同,调用不同的原生接口;同时,对该kafka版本的原生依赖进行加载;依赖加载支持了kafkaproducer通用客户端的使用;

3)进行数据传输即可。

kafkaconsumer通用客户端,通过统一的客户端接口,将数据从kafka进行拉取。

kafkaconsumer通用客户端的具体实现方法,包括:

1)实现各版本的kafkaconsumer原生接口,接口格式与原生一致,外部系统无需修改原有接口格式,即可直接使用该consumer通用客户端接口;

2)根据kafka版本的不同,调用不同的原生接口。同时,加载kafka原生依赖;该依赖支持consumer通用客户端的使用;

3)拉取kafka中的数据。

本发明优点:对外提供统一的kafka通用客户端接口和数据统一模型接口,无需过多的学习成本即可掌握。节省不同kafka版本之间客户端差异化的学习成本,节点不同业务数据结构的操作成本。本发明简单易用,只需通过该kafka通用接口,即可满足不同kafka客户端的操作;只需通过数据统一模型接口,即可满足业务数据结构的转化。

附图说明

以下将结合附图对本发明作进一步说明:

图1是本发明具体实施例的结构原理图;

图2是本发明kafka通用客户端接口的功能实现原理图;

图3是本发明数据统一模型接口的功能实现原理图。

具体实施方式

参照附图1,应用程序能支持数据统一模型和kafka通用客户端两部分,即调用两者提供的接口。

kafka通用客户端能兼容kafka不同版本的客户端,即通过该客户端即可访问操作不同版本的kafka,且传输消息数据的类型统一只支持“字节数组”。

数据统一模型即将业务数据进行解析组合/拆分整合等等步骤,目的是统一消息数据传输类型,解耦业务。

kafka通用客户端包括kafkaproducer通用客户端和kafkaconsumer通用客户端两种,kafkaproducer通用客户端即kafka生产者,向kafka集群推送消息数据;kafkaconsumer通用客户端即kafka消费者,向kafka集群拉取数据。通过kafka通用客户端通用客户端针对kafka集群进行操作,所述kafka集群可以为不同的版本。kafka通用客户端提供给业务系统使用,屏蔽了kafka原生客户端实现的细节。

数据统一模型是本发明中特有的模型,针对业务数据进行转换,转换为字节序列;同时kafka通用客户端统一kafka消息数据传输类型,即字节序列。即数据的转换与数据序列化/反序列化,与kafka消息传输类型、业务系统剥离开。这样可以灵活在各个系统之间操作不同的数据,挖掘数据更重要的价值。

图2展示了本发明kafka通用客户端接口的功能实现原理。业务系统使用kafka通用客户端时,后台会加载对应版本的kafka依赖和反射原生kafka客户端的实现,进而对数据进行传输或者拉取。客户端只需告知后台kafka具体的版本号即可。在不改动通用客户端的情况下,可灵活增加新生kafka版本或者拆卸不需要的kafka版本。业务系统无需再关注具体版本kafka的差异化,只需通过接口即可进行数据的操作。学习成本比原先降低、简单易用、可扩展、易维护。

通用客户端提供kafka分区策略支持,无需业务系统实现,后台根据分区策略要求,自行实现具体分区策略逻辑即可。业务系统只需简单配置即可使用。

一般情况下,业务系统对kafka集群的操作,均需设定配置,而通用接口则提供必配项,减少配置复杂度。如果业务系统需额外配置,则可自行配置即可,通用接口同样会识别,并对kafka集群产生作用。

另外,本发明将数据类型统一成字节数组,即传输数据和拉取数据均为字节数组。对外统一数据类型,使得kafka集群存储数据与业务系统解耦,即kafka只需专注数据存储策略(如分区策略等等),无需在操作数据时关注其业务系统。

图3所示,数据统一模型接口分为两种;即实现字节序列组装的数据结构序列化接口和实现数据结构整合的数据结构反序列化接口。

数据结构序列化接口,将业务数据统一成字节序列传输至kafka集群进行存储订阅。业务系统使用数据统一模型接口,能够将其业务数据统一成规定的模型,最终组装成字节祖列。

数据结构反序列化接口,拉取kafka集群中的业务数据。对字节序列进行拆分,反序列化,最后整合成完整的数据结构。

业务系统仅需根据标识即可对业务数据进行统一模型。该模型接口使用方式灵活,即根据需要增加新业务数据结构、拆卸不需要的数据结构。做到一次编写,永久使用。此数据统一模型接口与kafka通用客户端可组合使用,也可拆分使用,方式灵活。

当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1