一种将业务数据同步ODS层的方法及装置制造方法及图纸

技术编号:33045080 阅读:16 留言:0更新日期:2022-04-15 09:28
本申请涉及一种将业务数据同步ODS层的方法及装置,所述方法包括实时获取MySQL自有的binlog的增量数据,并将所述增量数据存储至消息队列;每隔第一预设时间从所述消息队列中解析获取在所述第一预设时间内存储的增量数据,并生成中间文件;每隔第二预设时间将在所述第二预设时间内生成的所有所述中间文件加载到数据仓的ODS层,并与ODS层历史业务数据聚合;其中,所述第二预设时间为所述第一预设时间的整数倍数。本申请不仅有效提高业务数据同步到ODS层的速度,而且不会影响到在线业务正常工作。作。作。

【技术实现步骤摘要】
一种将业务数据同步ODS层的方法及装置


[0001]本申请涉及ODS层数据抽取技术的领域,尤其是涉及一种将业务数据同步ODS层的方法及装置。

技术介绍

[0002]在传统的离线数据仓库设计中,会从规定时间开始,使用Sqoop工具从业务数据库将一天、甚至更久的业务数据抽取到ODS,当这个过程的数据量变大且分表较多时,会极大的拖延时间,一度达到数个小时,不仅致使后续的分层计算、指标抽取、指标展示的无法准时执行,影响需要利用整体数据的决策,而且集中从线上业务抽取业务数据还可能对业务造成不良影响。

技术实现思路

[0003]为了提高业务数据同步ODS层的速度,减少业务数据抽取对业务的不良影响,本申请提供了一种将业务数据同步ODS层的方法及装置。
[0004]第一方面,本申请提供的一种将业务数据同步ODS层的方法采用如下的技术方案:一种将业务数据同步ODS层的方法,包括:实时获取MySQL自有的binlog的增量数据,并将所述增量数据存储至消息队列;每隔第一预设时间从所述消息队列中解析获取在所述第一预设时间内存储的增量数据,并生成中间文件;每隔第二预设时间将在所述第二预设时间内生成的所有所述中间文件加载到数据仓的ODS层,并与ODS层历史业务数据聚合;其中,所述第二预设时间为所述第一预设时间的整数倍数。
[0005]可选的,所述实时获取MySQL自有的binlog的增量数据,并将所述增量数据存储至消息队列,包括:MySQL服务器开启binlog缓存设置;利用canal工具进行binlog所述增量数据的实时抓取以及将发送至所述消息队列。
[0006]可选的,所述消息队列为kafka队列。
[0007]可选的,所述利用canal工具进行binlog所述增量数据的实时抓取以及将发送至所述消息队列,包括:canal通过模拟数据库的从节点获取MySQL服务器向其同步发送binlog的所述增量数据;通过kafka生产者方法,将获取的所述增量数据实时存储到所述kafka队列中。
[0008]可选的,在所述利用canal工具进行binlog所述增量数据的实时抓取的同时,还包括:利用prometheus获取canal服务的metric日志信息;
根据预设指标阈值和从metric日志信息中获取的所述指标数据进行指标状态的判定,并将所述指标数据和判定结果按照时序进行可视化展示;如果所述指标数据大于或小于所述预设指标阈值,判定所述指标数据正常;如果所述指标数据小于或大于所述预设指标阈值,判定该指标数据异常,同时进行报警处理。
[0009]可选的,所述消息队列至少能够存储在N个第二预设时间内生成的增量数据;所述消息队列根据所述增量数据的时间戳将过期的所述增量数据删除;其中,过期的增量数据为在消息队列中存储时长达到N个第二预设时间的增量数据。
[0010]第二方面,本申请提供的一种将业务数据同步ODS层的装置采用如下的技术方案:一种将业务数据同步ODS层的装置,包括:存储器、处理器及存储在存储器上并可在处理器上运行的计算机程序,所述处理器执行所述计算机程序时实现如第一方面所述一种将业务数据同步ODS层的方法。
[0011]综上所述,本申请包括以下至少一种有益技术效果:1.本申请先将第二预设时间内的所有业务数据存储在中间文件中,在第二预设时间到来时,直接从中间文件中加载业务数据到ODS层中,只需要将中间文件中业务数据格式化为能够存储在ODS层的业务数据,相较于直接从业务数据库抽取业务数据,业务数据从中间文件到ODS层复杂度明显降低,不仅有效提高业务数据同步到ODS层的速度,而且中间文件的添加还方便对中文件中存储的原始业务数据进行其他操作;2.本申请通过MySQL自有的binlog获取不同业务的业务数据,而且将第二预设时间内的所有业务数据分成多个时间段获取,将第二预设时间生成内的全量业务数据均匀分配在多个时段抽取,不仅进一步提高业务数据同步到ODS层的速度,而且不会影响到在线业务正常工作。
附图说明
[0012]图1是本申请实施例提供的一种将业务数据同步ODS层的方法的流程图;图2是本申请实施例提供的步骤S100的流程图;图3是本申请实施例提供一种将业务数据同步ODS层的装置的结构框图。
具体实施方式
[0013]为了使本申请的目的、技术方案及优点更加清楚明白,以下结合附图1、图2及实施例,对本申请进行进一步详细说明。应当理解,此处所描述的具体实施例仅用以解释本申请,并不用于限定本申请。
[0014]本申请实施例公开一种将业务数据同步ODS层的方法。参照图1,该方法包括:步骤S100、实时获取MySQL自有的binlog(二进制日志)的增量数据,并将增量数据存储至消息队列;本实施例的消息队列可以采用低延迟、高吞吐量的kafka队列,而且kafka队列会对存储的数据进行备份,可靠性更高。
[0015]步骤S200、每隔第一预设时间从消息队列中解析获取在第一预设时间内存储的增量数据,并生成中间文件,中间文件中的数据就是业务数据的增量数据;本实施例每隔第一预设时间利用将spark streaming程序从消息队列解析获取在第一预设时间内存储的增量数据,实现增量数据的快速落地,生成的中间文件存储在HDFS中。
[0016]步骤S300、每隔第二预设时间将在第二预设时间内生成的所有中间文件加载到数据仓的ODS层,并与ODS层历史业务数据聚合,完成在第二预设时内产生的增量数据的传输。
[0017]在本实施例中,第二预设时间为第一预设时间的整数倍数,一般第二预设时间不低于24小时;本实施例消息队列至少能够存储在N个第二预设时间内生成的增量数据,消息队列根据增量数据的时间戳(毫秒级)将存储的过期的增量数据删除,并不断循环此过程,保证消息队列中存在以往加载到ODS层的数据,一旦在N个第二预设时间内,中间文件中或ODS层中的业务数据出现问题,能够重新从消息队列中获取,提高业务数据的安全性和系统的可靠性;其中,过期的增量数据为在消息队列中存储时长达到N个第二预设时间的增量数据。在本实施中,消息队列根据增量数据的时间戳将存储的过期的增量数据删除,包括:实时轮询(每毫秒轮询一次,实现按毫秒删除过期增量数据)增量数据的时间戳;根据每个增量数据时间戳和当前时间判断增量数据是否过期;如果过期删除该增量数据,如果没有过期判断下一个增量数据是否过期,直到本次轮询结束。
[0018]本申请通过MySQL自有的binlog获取不同业务的业务数据,将第二预设时间内的所有业务数据分成多个时间段获取并存储在中间文件中,在第二预设时间到来时,直接从多个中间文件中加载业务数据到ODS层中,不再集中在一次从业务数据库中抽取全量业务数据,并且在第二预设时间到来时只需要将中间文件中业务数据格式化为能够存储在ODS层的业务数据,相较于直接从业务数据库抽取业务数据,业务数据从中间文件到ODS层复杂度明显降低,而且将第二预设时间生成内的全量业务数据均匀分配在多个时段抽取,不仅有效提高业务数据同本文档来自技高网
...

【技术保护点】

【技术特征摘要】
1.一种将业务数据同步ODS层的方法,其特征在于,包括:实时获取MySQL自有的binlog的增量数据,并将所述增量数据存储至消息队列;每隔第一预设时间从所述消息队列中解析获取在所述第一预设时间内存储的增量数据,并生成中间文件;每隔第二预设时间将在所述第二预设时间内生成的所有所述中间文件加载到数据仓的ODS层,并与ODS层历史业务数据聚合;其中,所述第二预设时间为所述第一预设时间的整数倍数。2.根据权利要求1所述的方法,其特征在于,所述实时获取MySQL自有的binlog的增量数据,并将所述增量数据存储至消息队列,包括:MySQL服务器开启binlog缓存设置;利用canal工具进行binlog所述增量数据的实时抓取以及将发送至所述消息队列。3.根据权利要求2所述的方法,其特征在于,所述消息队列为kafka队列。4.根据权利要求3所述的方法,其特征在于,所述利用canal工具进行binlog所述增量数据的实时抓取以及将发送至所述消息队列,包括:canal通过模拟数据库的从节点获取MySQL服务器向其同步发送binlog的所述增量数据;通过kafka生产者方法,将获...

【专利技术属性】
技术研发人员:郭鹏野张振勇
申请(专利权)人:北京发现角科技有限公司
类型:发明
国别省市:

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1