一种同步业务数据的方法和设备与流程

文档序号:24075476发布日期:2021-02-26 16:46阅读:63来源:国知局
[0001]本发明涉及数据同步
技术领域
:,具体涉及一种同步业务数据的方法和设备。
背景技术
::[0002]目前,大数据被广泛应用,而为大数据在构建各种模型及实时分析场景下提供维表数据支撑,维表数据是实时同步存储在关系型数据库中的各种业务数据。大数据在采用星形、星座等模型进行建模时,对于维表数据会使用到业务部门存储在关系型mysql数据库表中的业务数据,且业务数据存在变更特性,由此现有技术中存在以下同步方式:[0003]采用关系型mysql数据库支持的主从同步;[0004]采用api接口的方式全量或增量同步;[0005]但是传统同步关系型mysql数据库表数据方式存在以下问题:使用mysql的主从同步:这种方式是将业务使用的主mysql实例数据同步到从mysql实例中供大数据使用,该方式具有高耦合性,因为每次调整主mysql实例配置文件(my.cnf)中要同步的库表信息后,都需要重启主mysql实例服务,对正在使用的业务有较大影响;[0006]至于使用api接口的方式同步:这种方式需要编写api程序读取mysql业务库表数据,然后同步到目标mysql实例中。如果采用每天全量同步一次,数据会存在较大延迟;如果采用增量同步,对主mysql实例业务库表的结构设计有较大依赖(比如要有更新时间戳字段);由于要同步的每个业务表的结构不同,导致每新增表都要对其进行开发,这种同步方式的开发工作量较大。[0007]由此,目前需要一种更好的同步方式来进行业务数据的同步。技术实现要素:[0008]本发明提供一种同步业务数据的方法和设备,能够解决现有的技术问题,对正在运行的业务没有任何影响、有更低的延迟、能够支持更多的并发、且具有更好的灵活性。[0009]本发明解决上述技术问题的技术方案如下:[0010]本发明实施例还提出了一种同步业务数据的方法,包括:[0011]通过maxwell组件将作为业务数据的mysql数据同步到kafka集群;[0012]将所述kafka集群中的数据同步到所述hbase;[0013]将存储在所述hbase中的表映射到hive库,完成所述业务数据的同步。[0014]在一个具体的实施例中,所述“通过maxwell将作为业务数据的mysql数据同步到kafka集群”,包括:[0015]采用maxwell组件实时拉取mysql的binlog日志;[0016]通过所述maxwell组件将所述binlog日志解析成json格式,并将json格式的数据发送到kafka集群中的topic中。[0017]在一个具体的实施例中,在“采用maxwell组件实时拉取mysql的binlog日志”,之前还包括:[0018]在业务数据所在的mysql开启binlog日志配置;[0019]部署maxwell组件,修改所述maxwell组件的配置文件并启动,以使所述maxwell组件执行“实时拉取mysql的binlog日志”的操作。[0020]在一个具体的实施例中,所述在业务数据所在的mysql开启binlog日志配置是通过修改my.cnf文件实现的。[0021]在一个具体的实施例中,修改所述maxwell组件的配置文件包括:[0022]在maxwell组件目录下添加配置文件、同步源mysql实例信息、存放maxwell元数据的mysql实例信息、过滤规则、kafka集群信息以及topic名称。[0023]在一个具体的实施例中,所述“将所述kafka集群中的数据同步到所述hbase”,包括:[0024]通过通用解析服务实时消费kfaka集群topic中json格式的数据,以解析json格式的数据,按照配置规则组装数据,并写入到hbase。[0025]在一个具体的实施例中,所述“通过通用解析服务实时消费kfaka集群topic中json格式的数据,以解析json格式的数据,按照配置规则组装数据,并写入到hbasee”,包括:[0026]通过通用解析服务实时消费kfaka集群topic中json格式的数据,解析json格式的数据是否错误;[0027]若确定解析正确,则对解析得到的数据进行封装;[0028]判断key在配置信息map对象中是否存在;其中,所述key是基于topic名称与数据对象的属性拼接得到;所述配置信息map对象是基于读取所述maxwell组件的配置文件得到;[0029]若判断结果为是,则将封装后的数据写入所述hbase中。[0030]在一个具体的实施例中,还包括:[0031]若解析不正确,则将json格式的数据写入hdfs;[0032]若判断结果为key在配置信息map对象中不存在,则将json格式的数据写入hdfs。[0033]在一个具体的实施例中,还包括:[0034]将所述hbase或所述hive中的业务数据作为维表使用。[0035]本发明实施例还提出了一种同步业务数据的设备,包括:[0036]第一同步模块,用于通过maxwell组件将作为业务数据的mysql数据同步到kafka集群;[0037]第二同步模块,用于将所述kafka集群中的数据同步到所述hbase;[0038]映射模块,用于将存储在所述hbase中的表映射到hive库,完成所述业务数据的同步。[0039]本发明的有益效果是:[0040]本方案中采用的maxwell是通过采集并解析mysql实例的binlog日志,实时发送到kafka集群,具有低耦合性。maxwell支持更丰富的配置,可以在配置文件中对要同步的库\表\列级别的修改,保存后重启maxwell进程即可,比使用mysql的主从同步方式更灵活,对正在运行的业务没有任何影响;且[0041]maxwell在实现同步数据上具有更好的可扩展性。要实现分布在多个mysql实例、多个库表中的数据,只需要为每个mysql实例添加配置文件,分别启动maxwell进程,比使用api接口的方式同步可扩展性更强,且无开发工作量;maxwell组件和sparkstreaming框架都是实时处理,数据同步延迟较低。maxwell组件实时采集mysql实例的binlog日志,sparkstreaming框架服务采用秒级别执行,比使用api接口的方式同步数据有更低的延迟;采用hbase作为目标数据库,能够满足更大的并发性,且具有更好的灵活性。hbase作为分布式数据库,能够支持更多的并发,当业务表新增字段,在采集的整个过程中不需要任何修改,比使用api接口的方式同步有更大的灵活性,不需要任何开发,只需添加或更改配置就可满足需求。附图说明[0042]图1为本发明实施例提供的一种同步业务数据的方法的流程示意图;[0043]图2为本发明实施例提供的一种同步业务数据的方法中通用解析服务流程图;[0044]图3为本发明实施例提供的一种同步业务数据的方法实时同步数据框架图;[0045]图4为本发明实施例提供的一种同步业务数据的设备的结构示意图。具体实施方式[0046]以下结合附图对本发明的原理和特征进行描述,所举实例只用于解释本发明,并非用于限定本发明的范围。[0047]实施例1[0048]本发明实施例提供的一种同步业务数据的方法,如图1所示,包括以下步骤:[0049]步骤101、通过maxwell组件将作为业务数据的mysql数据同步到kafka集群;[0050]步骤102、将所述kafka集群中的数据同步到所述hbase;[0051]步骤103、将存储在所述hbase中的表映射到hive库,完成所述业务数据的同步。[0052]在一个具体的实施了中,步骤101中的所述“通过maxwell将作为业务数据的mysql数据同步到kafka集群”,包括:[0053]采用maxwell组件实时拉取mysql的binlog日志;[0054]通过所述maxwell组件将所述binlog日志解析成json格式,并将json格式的数据发送到kafka集群中的topic中。[0055]进一步的,在“采用maxwell组件实时拉取mysql的binlog日志”,之前还包括:[0056]在业务数据所在的mysql开启binlog日志配置;[0057]部署maxwell组件,修改所述maxwell组件的配置文件并启动,以使所述maxwell组件执行“实时拉取mysql的binlog日志”的操作。[0058]所述在业务数据所在的mysql开启binlog日志配置是通过修改my.cnf文件实现的。[0059]修改所述maxwell组件的配置文件包括:[0060]在maxwell组件目录下添加配置文件、同步源mysql实例信息、存放maxwell元数据的mysql实例信息、过滤规则、kafka集群信息以及topic名称。[0061]在一个具体的实施例中,步骤102中的所述“将所述kafka集群中的数据同步到所述hbase”,包括:[0062]通过通用解析服务实时消费kfaka集群topic中json格式的数据,以解析json格式的数据,按照配置规则组装数据,并写入到hbase。[0063]在一个具体的实施例中,所述“通过通用解析服务实时消费kfaka集群topic中json格式的数据,以解析json格式的数据,按照配置规则组装数据,并写入到hbasee”,包括:[0064]通过通用解析服务实时消费kfaka集群topic中json格式的数据,解析json格式的数据是否错误;[0065]若确定解析正确,则对解析得到的数据进行封装;[0066]判断key在配置信息map对象中是否存在;其中,所述key是基于topic名称与数据对象的属性拼接得到;所述配置信息map对象是基于读取所述maxwell组件的配置文件得到;[0067]若判断结果为是,则将封装后的数据写入所述hbase中。[0068]此外,本方案,还包括:[0069]若解析不正确,则将json格式的数据写入hdfs;[0070]若判断结果为key在配置信息map对象中不存在,则将json格式的数据写入hdfs。[0071]具体的,如图2所示,通用解析服务是基于sparkstreaming流式框架编写的一套准实时解析json数据的服务。通过kafkautils工具类创建inputdstream对象,并行拉取topic中数据,解析json数据并封装成数据对象,进行读取配置文件信息与数据对象进行校验,满足条件后封装成put对象,分布式写入到hbase表中,否则,将错误信息写入到hdfs中。如图2所示。[0072]其中,主要业务规则为:[0073]1).json数据解析规则:[0074]根据消费topic中的json数据,解析成对象并获取type属性数据(insert,update,delete),在根据不同的业务处理逻辑,最终将数据组装成put对象,通过分布式写入到hbase表中;[0075]2).生成hbase表中rowkey规则:[0076]mysql表中主键值进行md5加密(16位小写)[0077]示例:md5(主键1值:主键2值)[0078]在一个具体的实施例中,还包括:[0079]将所述hbase或所述hive中的业务数据作为维表使用。[0080]具体的,在一个具体的实施例中,本方案如图3所示,采用maxwell组件实时拉取mysql的binlog日志,组件内部把日志解析成json格式,并将数据发送到kafka集群中对应的topic中;通用解析服务(采用sparkstreaming框架编写的一套解析json数据服务)实现功能包括:实时消费kfaka集群topic中的数据,解析json格式数据,按照配置规则组装数据,并写入到hbase分布式数据库;在将hbase表映射到hive库表中;在不同场景下进行大数据统计时,能够选择适合的查询数据方式,提高开发效率。[0081]具体的,包括如下步骤:[0082]第一步,将mysql数据同步到kafka集群包括:[0083]1).业务数据所在的mysql实例开启binlog日志配置(修改my.cnf文件);[0084]2).服务器部署maxwell组件,修改配置文件并启动:[0085]首先,在maxwell组件目录下添加配置文件xxxx-config.properties,填写同步源mysql实例信息、存放maxwell元数据的mysql实例信息、过滤规则(库\表\列名称)、kafka集群信息以及topic名称(规则:maxwell-mysql-业务线,示例:maxwell-mysql-kar);[0086]然后,启动maxwell进程(执行bin/maxwell--configxxxx-config.properties--daemon),maxwell服务会将采集的binlog日志实时解析成json格式数据发送到kafka集群,如type类型为insert示例:[0087]其中json中type类型有以下几类:[0088]insert,update,delete,bootstrap-insert,[0089]table-create,table-alter,table-drop,[0090]database-create,database-alter,database-drop[0091]第二步:将kafka中数据同步到hbase集群[0092]1).创建hbase命名空间及表,规则如下:[0093]命名空间:kafka中topic主题作为hbase命名空间(-替换为_);[0094]表名:mysql中的”数据库名.表名”作为hbase表名;[0095]列族:统一使用一个列族名称为”cf”;[0096]命名空间及表名示例:maxwell_mysql_kar:chip_service_sole.device[0097]2).修改通用解析框架服务配置文件,如下:[0098]a)topic配置:topics=maxwell-mysql-kar(多个topic按逗号分隔)[0099]b)在mysql.xml文件中添加mysql库、表、主键对应关系配置:[0100]#每个<bean>属性:业务线\库名\表名\主键(多个主键按逗号分隔)[0101][0102]c)将任务(通用解析框架服务)提交至spark集群,实时消费kafka集群topic中的数据并进行解析,将生成的数据写入到hbase分布式数据库。[0103]第三步:将存储在hbase中的表映射到hive库[0104]1).创建hive外部表(将hbase表映射到hive库表),规则如下:[0105]数据库名称:将kafka集群中topic主题作为命名空间(-替换为_)[0106]表名称:mysql中的”数据库名_s_表名”作为表名[0107]数据库及表名示例:maxwell_mysql_kar.chip_service_sole_s_device[0108]第四步:将同步后的业务数据作为维表使用[0109]大数据在构建各种模型统计时,即可通过查询hbase或hive中的业务数据作为维表使用。[0110]相较于现有技术,本方案具有以下技术效果:[0111]1.maxwell是通过采集并解析mysql实例的binlog日志,实时发送到kafka集群,具有低耦合性。[0112]maxwell支持更丰富的配置,可以在配置文件中对要同步的库\表\列级别的修改,保存后重启maxwell进程即可,比使用mysql的主从同步方式更灵活,对正在运行的业务没有任何影响;[0113]2.maxwell在实现同步数据上具有更好的可扩展性。[0114]要实现分布在多个mysql实例、多个库表中的数据,只需要为每个mysql实例添加配置文件,分别启动maxwell进程,比使用api接口的方式同步可扩展性更强,且无开发工作量;[0115]3.maxwell组件和sparkstreaming框架都是实时处理,数据同步延迟较低。[0116]maxwell组件实时采集mysql实例的binlog日志,sparkstreaming框架服务采用秒级别执行,比使用api接口的方式同步数据有更低的延迟;[0117]4.采用hbase作为目标数据库,能够满足更大的并发性,且具有更好的灵活性。[0118]hbase作为分布式数据库,能够支持更多的并发,当业务表新增字段,在采集的整个过程中不需要任何修改,比使用api接口的方式同步有更大的灵活性,不需要任何开发,只需添加或更改配置就可满足需求。[0119]实施例2[0120]本发明实施例2还公开了一种同步业务数据的设备,如图4所示,包括:[0121]第一同步模块201,用于通过maxwell组件将作为业务数据的mysql数据同步到kafka集群;[0122]第二同步模块202,用于将所述kafka集群中的数据同步到所述hbase;[0123]映射模块203,用于将存储在所述hbase中的表映射到hive库,完成所述业务数据的同步。[0124]在一个具体的实施例中,所述第一同步模块201,用于:[0125]采用maxwell组件实时拉取mysql的binlog日志;[0126]通过所述maxwell组件将所述binlog日志解析成json格式,并将json格式的数据发送到kafka集群中的topic中。[0127]在一个具体的实施例中,所述第一同步模块201在“采用maxwell组件实时拉取mysql的binlog日志”,之前还用于:[0128]在业务数据所在的mysql开启binlog日志配置;[0129]部署maxwell组件,修改所述maxwell组件的配置文件并启动,以使所述maxwell组件执行“实时拉取mysql的binlog日志”的操作。[0130]在一个具体的实施例中,所述在业务数据所在的mysql开启binlog日志配置是通过修改my.cnf文件实现的。[0131]在一个具体的实施例中,修改所述maxwell组件的配置文件包括:[0132]在maxwell组件目录下添加配置文件、同步源mysql实例信息、存放maxwell元数据的mysql实例信息、过滤规则、kafka集群信息以及topic名称。[0133]在一个具体的实施例中,所述第二同步模块202,用于:[0134]通过通用解析服务实时消费kfaka集群topic中json格式的数据,以解析json格式的数据,按照配置规则组装数据,并写入到hbase。[0135]第二同步模块202,所述第二同步模块202“通过通用解析服务实时消费kfaka集群topic中json格式的数据,以解析json格式的数据,按照配置规则组装数据,并写入到hbasee”,包括:[0136]通过通用解析服务实时消费kfaka集群topic中json格式的数据,解析json格式的数据是否错误;[0137]若确定解析正确,则对解析得到的数据进行封装;[0138]判断key在配置信息map对象中是否存在;其中,所述key是基于topic名称与数据对象的属性拼接得到;所述配置信息map对象是基于读取所述maxwell组件的配置文件得到;[0139]若判断结果为是,则将封装后的数据写入所述hbase中。[0140]在一个具体的实施例中,还包括:[0141]错误模块,用于若解析不正确,则将json格式的数据写入hdfs;[0142]若判断结果为key在配置信息map对象中不存在,则将json格式的数据写入hdfs。[0143]在一个具体的实施例中,还包括:[0144]处理模块,用于将所述hbase或所述hive中的业务数据作为维表使用。[0145]以上,仅为本发明的具体实施方式,但本发明的保护范围并不局限于此,任何熟悉本
技术领域
:的技术人员在本发明揭露的技术范围内,可轻易想到各种等效的修改或替换,这些修改或替换都应涵盖在本发明的保护范围之内。因此,本发明的保护范围应以权利要求的保护范围为准。当前第1页1 2 3 当前第1页1 2 3 
当前第1页1 2 3 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1