CN109325077A - 一种基于canal和kafka实现实时数仓的系统 - Google Patents

一种基于canal和kafka实现实时数仓的系统 Download PDF

Info

Publication number
CN109325077A
CN109325077A CN201810877574.5A CN201810877574A CN109325077A CN 109325077 A CN109325077 A CN 109325077A CN 201810877574 A CN201810877574 A CN 201810877574A CN 109325077 A CN109325077 A CN 109325077A
Authority
CN
China
Prior art keywords
canal
data
plugin
consumer
man
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Pending
Application number
CN201810877574.5A
Other languages
English (en)
Inventor
卫翀
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Beijing Matrix Technology Co Ltd
Original Assignee
Beijing Matrix Technology Co Ltd
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Beijing Matrix Technology Co Ltd filed Critical Beijing Matrix Technology Co Ltd
Priority to CN201810877574.5A priority Critical patent/CN109325077A/zh
Publication of CN109325077A publication Critical patent/CN109325077A/zh
Pending legal-status Critical Current

Links

Abstract

一种基于canal和kafka实现实时数仓的系统,包括Canal‑Server、Canal‑Client、Consumer‑plugin‑man和admin‑ods,Canal‑Server和Canal‑Client相连接,Canal‑Client通过kafka与Consumer‑plugin‑man相连接,admin‑ods也与Consumer‑plugin‑man相连接,所述Consumer‑plugin‑man与Hbase相连接;所述Hbase连接有ElasticSearch,ElasticSearch连接有Databus‑query,Databus‑query连接有atabus‑api。本发明的有益效果是将数据源、数据处理、数据写入解耦并统一管理,灵活配置,大大简化研发成本,易维护,支持不同生产环境下部署同一或不同数据仓库中的数据接入,实现一次研发,多处并灵活使用。

Description

一种基于canal和kafka实现实时数仓的系统
技术领域
本发明涉及互联网技术领域,具体涉及一种基于canal和kafka实现实时数仓的系统。
背景技术
随着互联网技术的飞速发展,大数据时代已经到来,实时数据采集、同步、计算并及时响应和反馈结果成为根据业务的实时变化及时调整策略并快速响应执行解决方案中至关重要的环节。本发明主要解决其中的数据同步环节。其主要内容是:在不影响业务方正常业务的情况下从业务数据库同步实时数据和历史数据到大数据仓库以供后续的变量计算等操作提供有效实时的数据。
Canal,是阿里巴巴集团使用纯java开发的一套基于数据库增量日志解析、提供增量数据订阅&消费、目前主要支持了mysql数据库的同步系统。
Kafka,是最初由Linkedin公司开发,是一个分布式、支持分区的(partition)、多副本的(replica),基于zookeeper协调的分布式消息系统,它的最大的特性就是可以实时的处理大量数据以满足各种需求场景:比如基于hadoop的批处理系统、低延迟的实时系统、storm/Spark流式处理引擎,web/nginx日志、访问日志,消息服务等,用scala语言编写,Linkedin于2010年贡献给了Apache基金会并成为顶级开源项目。
目前宜信也有过类似系统,借鉴了Linkedin的思想通过Canal和Kafka来实现数据同步操作。
但是,其维度单一,添加、减少所对接的业务线不方便,无法根据对接业务线控制并发量,不同集群之间的kafka、hbase、elasticsearch无法写入。
发明内容
为实现上述目的,本发明提供如下技术方案:
一种基于canal和kafka实现实时数仓的系统,包括Canal-Server、Canal-Client、Consumer-plugin-man和admin-ods,Canal-Server和Canal-Client相连接,Canal-Client通过kafka与Consumer-plugin-man相连接,admin-ods也与Consumer-plugin-man相连接,所述Consumer-plugin-man与Hbase相连接;所述Hbase连接有ElasticSearch,ElasticSearch连接有Databus-query,Databus-query连接有atabus-api。
作为本发的再进一步技术方案是:所述admin-ods通过meta-data与Hbase相连接。
作为本发明的再进一步技术方案是:所述Consumer-plugin-man通过some rules与ElasticSearch。
作为本发明的再进一步技术方案是:所述Canal-Server通过binlog changes与Mysql相连接。
本发明的有益效果是将数据源、数据处理、数据写入解耦并统一管理,灵活配置,大大简化研发成本,易维护,支持不同生产环境下部署同一或不同数据仓库中的数据接入,实现一次研发,多处并灵活使用。
附图说明
图1为本发明的结构示意图。
具体实施方式
下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
请参阅图1,本发明实施例中,一种基于canal和kafka实现实时数仓的系统,包括Canal-Server、Canal-Client、Consumer-plugin-man和admin-ods,Canal-Server和Canal-Client相连接,Canal-Client通过kafka与Consumer-plugin-man相连接,admin-ods也与Consumer-plugin-man相连接,所述Consumer-plugin-man与Hbase相连接;所述Hbase连接有ElasticSearch,ElasticSearch连接有Databus-query,Databus-query连接有atabus-api。
所述admin-ods通过meta-data与Hbase相连接。
所述Consumer-plugin-man通过some rules与ElasticSearch。
所述Canal-Server通过binlog changes与Mysql相连接。
1、Canal-Server:主要负责从业务方mysql同步Binlog数据并解析发送至Canal-Client;
其主要功能有:
1)canal模拟mysql slave的交互协议,伪装自己为mysql slave,向mysql master发送dump协议;
2)mysql master收到dump请求,开始推送binary log给slave(也就是canal);
3)canal server解析binary log对象(原始为byte流);
2、Canal-Client:主要负责从Canal-Server处获取解析后的mysql数据并发送至Kafka;
通过NIO链接从CanalServer处获取消息并判断消息类型:
1)若消息为DML型,则发送该消息至Kafka消息系统;
2)若消息为DDL型,则解析DDL-SQL语句后将相关表结构修改信息发送至Ods-admin系统进一步处理元数据信息;
3、Consumer-plugin-man:主要负责从Kafka系统中消费实时数据并写入Hbase和Elasticsearch;
1)启动从ods-admin系统读取相关配置;
2)循环消费Kafka数据并按规则写入Hbase和ES中;
4、Ods-admin:主要负责各模块的配置信息统一管理,和元数据的存储、数据一致性校验和修复等补救措施等。
整个系统运作流程如下:
1、Canal-server启动后将各个业务线注册到zookeeper中,并监听mysql binlog是否改变,后进行解析binlog数据并分发到各个业务线对应的NIO流通道中(该模块接收到二进制的数据,转换为Utf-8的数据);
2、Canal-client模块从zookeeper中获取各业务线对应的Canal-Server实例地址,链接该地址并获取解析后的binlog数据写入kafka消息队列或者发送至ods-admin系统做进一步处理(该模块接收到utf-8的数据,转换为所需JSON对象格式数据发送);
3、Consumer-plugin-man模块消费kafka数据,并结合ods-admin系统中mysql/redis中的meta-data(元数据)信息,将binlog改变的数据内容同步至Hbase中(若该业务线需要写入es中,也会存入ElasticSearch中),随后在通过ElasticSearch从Hbase中检索到特需数据通过API响应给下游使用方;
4、Ods-admin模块:作为整个系统的后台配置管理模块,统一管理着Canal-client和Consumer-plugin-man和Querypf系统中各业务线的配置信息和元数据信息,并兼任一部分系统维护工具(例如:数据随机比对、全量数据比对、历史数据导入、异常数据修复、指定kafka导入等)。
准备步骤:
1、需要事先确定好所需对接业务线的mysql主库的地址和所需同步的数据表名,并开通binlog同步权限;
2、2、在Ods-admin系统中需要事先配置Canal-client、Consumer-plugin-man、Querypf各自所需的业务线配置信息;
3、事先搭建好zookeeper、Kafka服务;
辅助步骤:
1、对于Canal-Client发送数据量的ELK监控和告警;
2、对于Consumer-plugin-man消费Kafka数据量的监控和告警;
3、对于各个系统运行情况、运行指标的监控和告警;
善后步骤:
1、定时数据检验业务方mysql数据与hbase中数据是否一致,若不一致则走数据修复功能;
2、定时数据校验Hbase数据和Elasticsearch中数据是否一致,若不一致则走数据从Hbase导入Elasticsearch中功能;
3、当数据发送大量不一致的情况时,则需要走全量数据导入功能,将mysql中的全量数据导入到Hbase和Elasticsearch中。
在本方案的最优流程中,增加了consumer-plugin-man的横向可扩展性,当一台机器出现性能瓶颈时可以随时通过增加机器数量来解决,且增加了更多维度、更全面的属性,对数据类型DDL\DML处理更加充分。
对于本领域技术人员而言,显然本发明不限于上述示范性实施例的细节,而且在不背离本发明的精神或基本特征的情况下,能够以其他的具体形式实现本发明。因此,无论从哪一点来看,均应将实施例看作是示范性的,而且是非限制性的,本发明的范围由所附权利要求而不是上述说明限定,因此旨在将落在权利要求的等同要件的含义和范围内的所有变化囊括在本发明内。不应将权利要求中的任何附图标记视为限制所涉及的权利要求。
此外,应当理解,虽然本说明书按照实施方式加以描述,但并非每个实施方式仅包含一个独立的技术方案,说明书的这种叙述方式仅仅是为清楚起见,本领域技术人员应当将说明书作为一个整体,各实施例中的技术方案也可以经适当组合,形成本领域技术人员可以理解的其他实施方式。

Claims (4)

1.一种基于canal和kafka实现实时数仓的系统,其特征在于,包括Canal-Server、Canal-Client、Consumer-plugin-man和admin-ods,Canal-Server和Canal-Client相连接,Canal-Client通过kafka与Consumer-plugin-man相连接,admin-ods也与Consumer-plugin-man相连接,所述Consumer-plugin-man与Hbase相连接;所述Hbase连接有ElasticSearch,ElasticSearch连接有Databus-query,Databus-query连接有atabus-api。
2.根据权利要求1所述的一种基于canal和kafka实现实时数仓的系统,其特征在于,所述admin-ods通过meta-data与Hbase相连接。
3.根据权利要求1所述的一种基于canal和kafka实现实时数仓的系统,其特征在于,所述Consumer-plugin-man通过some rules与ElasticSearch。
4.根据权利要求1所述的一种基于canal和kafka实现实时数仓的系统,其特征在于,所述Canal-Server通过binlog changes与Mysql相连接。
CN201810877574.5A 2018-08-03 2018-08-03 一种基于canal和kafka实现实时数仓的系统 Pending CN109325077A (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN201810877574.5A CN109325077A (zh) 2018-08-03 2018-08-03 一种基于canal和kafka实现实时数仓的系统

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN201810877574.5A CN109325077A (zh) 2018-08-03 2018-08-03 一种基于canal和kafka实现实时数仓的系统

Publications (1)

Publication Number Publication Date
CN109325077A true CN109325077A (zh) 2019-02-12

Family

ID=65263394

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201810877574.5A Pending CN109325077A (zh) 2018-08-03 2018-08-03 一种基于canal和kafka实现实时数仓的系统

Country Status (1)

Country Link
CN (1) CN109325077A (zh)

Cited By (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN111666344A (zh) * 2020-06-19 2020-09-15 中信银行股份有限公司 异构数据同步方法及装置
CN111858747A (zh) * 2020-05-29 2020-10-30 大数金科网络技术有限公司 将MySQL数据库同步到Elasticsearch的方法
CN112052295A (zh) * 2020-08-06 2020-12-08 中信银行股份有限公司 一种数据同步方法、装置、电子设备和可读存储介质
CN112419018A (zh) * 2020-01-03 2021-02-26 上海哔哩哔哩科技有限公司 分布式环境下的通用数据对账方法、服务器及存储介质
CN113434600A (zh) * 2021-06-30 2021-09-24 青岛海尔科技有限公司 一种数据同步方法及装置
CN115470217A (zh) * 2022-11-14 2022-12-13 云筑信息科技(成都)有限公司 一种实时解决数仓模型变化响应问题的方法
CN116431734A (zh) * 2023-06-12 2023-07-14 成都信息工程大学 一种es数据实时同步方法、系统及存储介质

Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20100281305A1 (en) * 2007-10-03 2010-11-04 Nec Corporation Hierarchical load estimation system, method and program
CN106919685A (zh) * 2017-03-02 2017-07-04 浪潮软件集团有限公司 一种海量数据文件处理方法
CN108009296A (zh) * 2017-12-27 2018-05-08 北京中关村科金技术有限公司 一种基于Hbase的SQL查询方法、系统及相关装置

Patent Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20100281305A1 (en) * 2007-10-03 2010-11-04 Nec Corporation Hierarchical load estimation system, method and program
CN106919685A (zh) * 2017-03-02 2017-07-04 浪潮软件集团有限公司 一种海量数据文件处理方法
CN108009296A (zh) * 2017-12-27 2018-05-08 北京中关村科金技术有限公司 一种基于Hbase的SQL查询方法、系统及相关装置

Non-Patent Citations (1)

* Cited by examiner, † Cited by third party
Title
陈树义: "ElasticSearch + Canal 开发千万级的实时搜索系统", 《HTTPS://WWW.CNBLOGS.COM/CHANSHUYI/P/6669006.HTML》 *

Cited By (9)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN112419018A (zh) * 2020-01-03 2021-02-26 上海哔哩哔哩科技有限公司 分布式环境下的通用数据对账方法、服务器及存储介质
CN112419018B (zh) * 2020-01-03 2022-11-18 上海哔哩哔哩科技有限公司 分布式环境下的通用数据对账方法、服务器及存储介质
CN111858747A (zh) * 2020-05-29 2020-10-30 大数金科网络技术有限公司 将MySQL数据库同步到Elasticsearch的方法
CN111666344A (zh) * 2020-06-19 2020-09-15 中信银行股份有限公司 异构数据同步方法及装置
CN112052295A (zh) * 2020-08-06 2020-12-08 中信银行股份有限公司 一种数据同步方法、装置、电子设备和可读存储介质
CN113434600A (zh) * 2021-06-30 2021-09-24 青岛海尔科技有限公司 一种数据同步方法及装置
CN113434600B (zh) * 2021-06-30 2023-06-09 青岛海尔科技有限公司 一种数据同步方法及装置
CN115470217A (zh) * 2022-11-14 2022-12-13 云筑信息科技(成都)有限公司 一种实时解决数仓模型变化响应问题的方法
CN116431734A (zh) * 2023-06-12 2023-07-14 成都信息工程大学 一种es数据实时同步方法、系统及存储介质

Similar Documents

Publication Publication Date Title
CN109325077A (zh) 一种基于canal和kafka实现实时数仓的系统
CN108536761B (zh) 报表数据查询方法及服务器
WO2020147392A1 (zh) 数据库之间的数据同步方法和系统
US10169709B2 (en) Avoiding incompatibility between data and computing processes to enhance computer performance
CN111143382B (zh) 数据处理方法、系统和计算机可读存储介质
CN108021809A (zh) 一种数据处理方法及系统
CN103581332B (zh) HDFS架构及HDFS架构中NameNode节点的压力分解方法
CN110297620A (zh) 一种基于Drools的动态规则维护和生成的方法
CN112860695B (zh) 监控数据查询方法、装置、设备、存储介质及程序产品
CN112565415B (zh) 一种基于云边协同的跨地域资源纳管系统和纳管方法
CN107682209A (zh) 一种sdp大数据自动化部署监控平台
CN104134173A (zh) 基于远程调阅和信息交互的主配网图/模/数集成系统
CN108228755A (zh) 基于日志解析技术的MySQL数据库到Hadoop平台的数据同步复制方法
Ma et al. Design and implementation of smart city big data processing platform based on distributed architecture
CN114281790B (zh) 一种多类型负荷资源聚合商接入系统及方法
WO2022156542A1 (zh) 数据访问方法、系统和存储介质
CN104281980A (zh) 基于分布式计算的火力发电机组远程诊断方法及系统
Jannes et al. OWebSync: Seamless synchronization of distributed web clients
US9858302B1 (en) Management of streaming data
CN103440302B (zh) 实时数据交换的方法和系统
CN112632183B (zh) 一种基于电网网络分区数据表准实时同步方法及系统
CN108228756A (zh) 基于日志解析技术的PG数据库到Hadoop平台的数据同步复制方法
CN111049898A (zh) 一种实现计算集群资源跨域架构的方法及系统
Jacobs et al. Bad to the bone: Big active data at its core
CN115757642A (zh) 一种基于归档日志文件的数据同步方法及装置

Legal Events

Date Code Title Description
PB01 Publication
PB01 Publication
SE01 Entry into force of request for substantive examination
SE01 Entry into force of request for substantive examination
RJ01 Rejection of invention patent application after publication

Application publication date: 20190212

RJ01 Rejection of invention patent application after publication