`

转发:1、canal源码分析简介

阅读更多

 

1.0 canal源码分析简介

 2017-12-06 21:48:06  2,186  0

 

canal是阿里巴巴开源的mysql数据库binlog的增量订阅&消费组件。项目github地址为:https://github.com/alibaba/canal

本教程是从源码的角度来分析canal,适用于对canal有一定基础的同学。本教程使用的版本是1.0.24,这也是笔者写这篇教程时的最新稳定版,关于canal的基础知识可以参考:https://github.com/alibaba/canal/wiki

下载项目源码

下载

  1. git clone https://github.com/alibaba/canal.git

 

切换到canal-1.0.24这个tag

  1. git checkout canal-1.0.24

源码模块划分

canal是基于maven构建的,总共分成了14个模块,如下所示:

Image.png

模块虽多,但是每个模块的代码都很少。各个模块的作用如下所示:

common模块:主要是提供了一些公共的工具类和接口。

client模块:canal的客户端。核心接口为CanalConnector

example模块:提供client模块使用案例。

protocol模块:client和server模块之间的通信协议

deployer:部署模块。通过该模块提供的CanalLauncher来启动canal server

server模块:canal服务器端。核心接口为CanalServer

instance模块:一个server有多个instance。每个instance都会模拟成一个mysql实例的slave。instance模块有四个核心组成部分:parser模块、sink模块、store模块,meta模块。核心接口为CanalInstance

parser模块:数据源接入,模拟slave协议和master进行交互,协议解析。parser模块依赖于dbsync、driver模块。

driver模块和dbsync模块:从这两个模块的artifactId(canal.parse.driver、canal.parse.dbsync),就可以看出来,这两个模块实际上是parser模块的组件。事实上parser 是通过driver模块与mysql建立连接,从而获取到binlog。由于原始的binlog都是二进制流,需要解析成对应的binlog事件,这些binlog事件对象都定义在dbsync模块中,dbsync 模块来自于淘宝的tddl。

sink模块:parser和store链接器,进行数据过滤,加工,分发的工作。核心接口为CanalEventSink

store模块:数据存储。核心接口为CanalEventStore

meta模块:增量订阅&消费信息管理器,核心接口为CanalMetaManager,主要用于记录canal消费到的mysql binlog的位置,

 

下面再通过一张图来说明各个模块之间的依赖关系:

Image.png

       通过deployer模块,启动一个canal-server,一个cannal-server内部包含多个instance,每个instance都会伪装成一个mysql实例的slave。client与server之间的通信协议由protocol模块定义。client在订阅binlog信息时,需要传递一个destination参数,server会根据这个destination确定由哪一个instance为其提供服务。

在分析源码的时候,本人也是按照模块来划分的,基本上一个模块对应一篇文章。

 

转自:http://www.tianshouzhi.com/api/tutorials/canal/380

分享到:
评论

相关推荐

    canal-canal-1.0.22_源码

    【canal-canal-1.0.22_源码】是阿里巴巴开源的数据库实时增量数据订阅与同步工具,主要用于实现MySQL到其他数据库或者数据存储系统的实时数据迁移、同步,常用于构建数据仓库、日志收集等场景。Canal的核心功能是...

    增量数据同步组件-canal,服务器端源码

    1. **启动Canal Server**:配置好Canal实例,包括数据库连接信息、binlog的位置等,然后启动服务。 2. **订阅与消费**:客户端连接Canal Server,并指定要监听的数据库实例和表,一旦这些表发生变更,Canal就会将...

    canal.1.1.5包

    2. canal-canal-1.1.5.zip:这个可能是Canal源代码的1.1.5版本,包含了项目的所有源码,便于开发者进行二次开发或深入研究其内部实现。 Canal的主要特点和功能包括: 1. 数据监听:通过解析MySQL的binlog,实现对...

    canal-canal-1.1.5-alpha-2.zip ;canal-server、adapter、admin

    canal-server(canal-deploy):可以直接监听MySQL的binlog,把自己伪装成MySQL的从库,只负责接收数据,并不做处理。 canal-adapter:相当于canal的客户端,会从canal-server中获取数据,然后对数据进行同步,可以...

    阿里canal组件:canal.deployer-1.1.7-SNAPSHOT.tar.gz

    1. **lib**:这个目录包含了运行Canal所需的各种依赖库,包括Java类库和其他必要的二进制文件。这些库涵盖了Canal本身的核心组件,以及与MySQL通信、解析binlog、序列化和反序列化数据等所需的各种工具。 2. **bin*...

    cgb-doc#Blog2#2018_01_01_Canal 源码分析 —— 简介1

    摘要:原创出处「田守枝」欢迎转载,保留摘要,谢谢!下载项目源码源码模

    Canal的介绍以及使用Canal的介绍以及使用

    3. **事件传输**: 解析后的事件被放入内存队列,由Canal Server负责转发到消费者。 4. **消费者消费**: 应用程序作为Canal的消费者,通过API订阅和拉取事件,实现数据同步或其他业务逻辑。 ### 使用Canal的步骤 1...

    canal.adapter-1.1.6.zip

    1. **Canal组件**:Canal是一款基于数据库Binlog解析的实时数据同步工具,可以实现MySQL到其他数据库(如MongoDB、Elasticsearch、HBase等)或者应用程序(如消息队列、大数据平台)的数据实时同步。 2. **适配器...

    canal.adapter-1.1.4.tar.gz

    1. **bin** 目录:包含了Canal Deployer的启动、停止等脚本,如`canal-server.sh`,用户可以通过这些脚本来启动和管理Canal服务。 2. **conf** 目录:存放Canal的配置文件,如`canal.properties`,用户可以在此配置...

    canal.deployer-1.1.5-SNAPSHOT.tar.gz

    1. canal.properties:Canal服务器的主配置文件,包括MySQL连接参数、Canal实例配置、日志设置等。 2. canal.conf:用于配置Canal实例,包括数据源、目标地址、过滤规则等。 3. scripts目录:包含了启动、停止Canal ...

    canal安装包免费下载.mysql同步ES工具

    1. **Canal**: Canal是阿里巴巴开源的一款数据库实时增量数据订阅与同步工具,它能够实现从MySQL到其他数据库或消息队列的实时数据复制。Canal以 MySQL binlog 为基础,通过解析 binlog 实现了对 MySQL 数据库的...

    canal-1.1.6

    1. 源代码:包括Canal的核心服务、配置文件、测试用例等,用户可以查看源码理解其工作原理,也可以根据需求进行二次开发。 2. 执行脚本:启动、停止Canal服务的脚本,方便用户部署和管理Canal实例。 3. 示例配置:...

    canal.deployer-1.0.24.tar.gz

    一、Canal简介 Canal的主要功能是对MySQL数据库的binlog进行解析,进而实现数据的实时同步。它能够高效地捕获并传输MySQL的变更事件到各种消费端,如消息队列、数据仓库等,从而满足实时数据处理的需求。Canal的设计...

    canal-deployer-1.1.4.windows.zip

    阿里Canal是一款由阿里巴巴开源的、轻量级的数据变更订阅与推送组件,主要用来解决数据库的增量数据同步问题。在大数据处理、实时计算以及数据仓库等场景中,Canal发挥着重要的作用。Canal-deployer是Canal的部署...

    Canal支持protobuf2.5

    6. **自定义封装**:在Canal未支持protobuf新版本时,开发者可能需要对Canal源码进行定制,以适应protobuf 2.5,这通常涉及到重新编译和部署,增加了维护成本。因此,官方支持新版本的protobuf对于开发者来说是一大...

    canal简介.ppt

    【Canal简介】 Canal是阿里巴巴开源的一款针对MySQL数据库的增量数据同步工具,它能够捕获MySQL的binlog(二进制日志)并转化为结构化的事件,供其他系统订阅和消费,主要用于实现数据的实时同步。Canal的设计灵感...

    canal.deployer-1.1.6

    《Canal Deployer 1.1.6:MySQL数据同步利器详解》 Canal Deployer是阿里巴巴开源的数据同步工具Canal的重要组成部分,主要...无论是数据库复制、实时数据分析,还是数据仓库构建,Canal Deployer都能发挥重要作用。

    canal-master.zip

    2. **下载Canal**:从官方GitHub仓库或其他镜像站点获取canal-master.zip文件,解压后得到Canal的源码和配置文件。 3. **配置Canal**:根据实际需求修改canal.properties、example.properties等配置文件,设置MySQL...

    starter-canal-0.0.1-SNAPSHOT.jar

    canal导入maven依赖失败需要本地安装的jar包,详细的安装教程见我的一片博文,全当一起研究。mvn install:install-file -DgroupId=com.xpand -DartifactId=starter-canal -Dversion=0.0.1-SNAPSHOT -Dpackaging=jar ...

    starter-canal.rar

    1. **实时数据变更捕获**:Canal能够监听并解析MySQL的binlog(二进制日志),当数据库中的数据发生变化时,如INSERT、UPDATE、DELETE操作,Canal会实时捕获这些变更事件并进行推送。 2. **高性能处理**:由于Canal...

Global site tag (gtag.js) - Google Analytics