CN109325077A - 一种基于canal和kafka实现实时数仓的*** - Google Patents
一种基于canal和kafka实现实时数仓的*** Download PDFInfo
- 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
Links
Landscapes
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
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,是阿里巴巴集团使用纯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相连接。
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 (8)
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 | 中信银行股份有限公司 | 一种数据同步方法、装置、电子设备和可读存储介质 |
CN112395290A (zh) * | 2020-11-20 | 2021-02-23 | 深圳市麦谷科技有限公司 | 一种数据同步实现方法及*** |
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)
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查询方法、***及相关装置 |
-
2018
- 2018-08-03 CN CN201810877574.5A patent/CN109325077A/zh active Pending
Patent Citations (3)
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)
Title |
---|
陈树义: "ElasticSearch + Canal 开发千万级的实时搜索***", 《HTTPS://WWW.CNBLOGS.COM/CHANSHUYI/P/6669006.HTML》 * |
Cited By (10)
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 | 中信银行股份有限公司 | 一种数据同步方法、装置、电子设备和可读存储介质 |
CN112395290A (zh) * | 2020-11-20 | 2021-02-23 | 深圳市麦谷科技有限公司 | 一种数据同步实现方法及*** |
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 | |
US20160358106A1 (en) | Electrical transformer failure prediction | |
CN112860695B (zh) | 监控数据查询方法、装置、设备、存储介质及程序产品 | |
CN112565415B (zh) | 一种基于云边协同的跨地域资源纳管***和纳管方法 | |
CN108021809A (zh) | 一种数据处理方法及*** | |
CN103024060A (zh) | 一种开放式云计算大规模集群监控***及方法 | |
CN110297620A (zh) | 一种基于Drools的动态规则维护和生成的方法 | |
CN103581332B (zh) | HDFS架构及HDFS架构中NameNode节点的压力分解方法 | |
CN107682209A (zh) | 一种sdp大数据自动化部署监控平台 | |
CN103067230A (zh) | 一种通过植入监控代码实现对http服务监控的方法 | |
CN111143382A (zh) | 数据处理方法、***和计算机可读存储介质 | |
CN114281790B (zh) | 一种多类型负荷资源聚合商接入***及方法 | |
WO2021036684A1 (zh) | 分布式数据同步方法、装置、设备及可读存储介质 | |
CN108228755A (zh) | 基于日志解析技术的MySQL数据库到Hadoop平台的数据同步复制方法 | |
WO2022156542A1 (zh) | 数据访问方法、***和存储介质 | |
CN104281980A (zh) | 基于分布式计算的火力发电机组远程诊断方法及*** | |
CN108228756A (zh) | 基于日志解析技术的PG数据库到Hadoop平台的数据同步复制方法 | |
US9858302B1 (en) | Management of streaming data | |
CN103440302B (zh) | 实时数据交换的方法和*** | |
CN203340096U (zh) | 交互式电力通信网络仿真装置 | |
CN112632183B (zh) | 一种基于电网网络分区数据表准实时同步方法及*** | |
WO2024103898A1 (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 |