【技术实现步骤摘要】
一种基于kafka和log的数据抽取和同步方法
[0001]本专利技术涉及信息
,提供了一种基于kafka和log的数据抽取和同步方法。
技术背景
[0002]在传统的数据抽取与同步方案中,通用的做法有几种,分别是:
[0003]1、DBA开放各个系统的备库,在业务低峰期,使用方各自抽取所需数据。由于抽取时间不同,各个数据使用方数据不一致,数据发生冲突,而且重复抽取,会造成一定的性能浪费和数据的延迟。
[0004]2、由统一的大数据平台,通过sqoop在业务低峰期到各个系统统一抽取数据,并保存到Hive表中,然后为其他数据使用方提供数据服务。这种做法解决了一致性问题,但实效性差,基本是T+1的时效。
[0005]3、基于trigger的方式获取增量变更,但问题是会造成业务方侵入性大,而且trigger也会带来一定的性能损失。
[0006]这些方案都不算完美,分别存在数据冲突、时效性差、损耗性能的问题。
[0007]其他介绍:
[0008]Kafka:开源的流处理平台,是一个为处理实时数据提供统一、高吞吐、低延迟的平台。
[0009]Zookeeper:开源的分布式服务注册平台,为大型分布式计算提供开源的分布式配置服务、同步服务和命名注册服务。
[0010]Canal:阿里开源的数据库中间件,用于基于MySQL的数据库增量日志解析,提供数据订阅和消费服务。
[0011]InfluxDB:一个开源的时序型数据库,由Go写成,着力于高性能地查询于 ...
【技术保护点】
【技术特征摘要】
1.一种基于kafka和log的数据抽取和同步方法,其特征在于:包括以下步骤:步骤1、将日志从源系统实时抽出,并以增量或者全量的方式进行抽取,获得抽取的日志,写入kafka指定的日志抽取同步topic中;步骤2、将日志抽取同步topic中的日志,进行解析脱敏,规定统一消息格式,放入到kafka对应的脱敏日志消息topic中;步骤3、将kafka中的数据,通过消费端,重放入HDFS中;步骤4、HDFS中的数据经过清洗,放入到HBase中进行保存,供其他系统来查询调用。2.根据权利要求1所述的一种基于kafka和log的数据抽取和同步方法,其特征在于:步骤1包括以下步骤:步骤1.1:从MySQL集群中进行日志解析,采用Row模式进行读取binarylog日志;步骤1.2:使用canal读取binarylog日志,包括以下步骤:步骤1.2.1:canal模拟MySQL Slave的交互协议,伪装自己为MySQL Slave,向MySQL Slave发送dump协议;步骤1.2.2:MySQL master收到dump请求,开始推送binarylog给canal;步骤1.2.3:Canal解析binary log对象;步骤1.3:通过订阅Canal Server的方式,抽取步骤2获得的binarylog日志中对应的MySQL的增量日志,包括以下步骤:步骤1.3.1:按照Canal的输出,日志是protobuf格式,通过增量Storm模块,将数据实时转换为约定的统一消息格式,并保存到kafka中;步骤1.3.2:增量Storm模块还负责捕获数据库对象集合schema的变化,以控制在kafka中保存的日志消息的版本号;步骤1.3.3:增量Storm模块的配置信息保存在Zookeeper中,以满足高可用需求;步骤1.3.4:Kafka既作为输出结果也作为处理过程中的缓冲器和消息解构区,最终以消息版本号的递增来获得增量日志;步骤1.4:对于增量无法满足的日志抽取场景,需要进行全量抽取,包括以下步骤:步骤1.4.1:对拉取请求进行流量控制,避免影响生产数据库;步骤1.4.2:消费端对数据进行分片,控制最大拉取字节数和拉取记录条数;步骤1.4.3:每次拉取一个分片完成,升一次kafka中保存的日志消息的版本号;步骤1.4.4:通知zookeeper,记录一个全量的拉取过程启动,并向zookeeper中写入心跳信息;步骤1.4.5:检查数据库的元数据meta的兼容性,保证拉取请求有效;步骤1.4.6:确定拆片使用的列,设定优先级规则由大到小:按照用户指定的列,主键索引PK,唯一索引UK,普通索引的优先级来确定拆片列,多列时,取其中第一列;步骤1.4.7:根据拆片列拆分数据,将拆片结果写入kafka指定的日志抽取同步topic中。3.根据权利要求1所述的一种基于kafka和log的数据抽取和同步方法,其特征在于:步骤2:将抽取的日志,进行解析脱敏,规定统一消息格式,放入到kafka对应的脱敏日志消息topic中,包括以下步骤:步骤2.1:定义统一的消息格式,并保证数据的唯一性,包括以下步骤:
步骤2.1.1:定义消息的命名空间,由类型+数据源名+schema名+表名+版本号+分库号+分表号组成,能够描述所有表,通过命名空间可以唯一定位;步骤2.1.2:定义_ums_op_字段,表明数据的类型是I,U,D,其中I代表insert,新增,U代表update,修改,D代表delete,删除;步骤2.1.3:定义_ums_ts_字段,记录发生增删改的事件的时间戳,新的数据发生的时间戳会更新;步骤2.1.4:定义_ums_id_字段,表明消息的唯一id,保证消息的唯一性,且保证了消息的先后顺序;步骤2.1.5:对于全量支取,_ums_id_是唯一的,从zookeeper中每个并发度分别取不同的id片区,保证了唯一性和性能,填写负数,不会与增量数据冲突,也保证他们是早于增量消息的;步骤2.1.6:对于增量支取,使用MySQL的日志文件号+日志偏移量作为唯一id,id作为64位的long整数,高7位用于日志文...
【专利技术属性】
技术研发人员:严东,程峰,李耀,彭磊,刘珏,
申请(专利权)人:武汉众邦银行股份有限公司,
类型:发明
国别省市:
还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。