数据异构之 Canal 初探(技巧篇)

本文介绍了Canal作为MySQL数据同步工具的工作原理,包括模拟MySQL slave与master交互,解析binary log。文中还展示了如何在IntelliJ IDEA中运行Canal Server和Client的Demo,以帮助读者更好地理解和调试Canal。
摘要由CSDN通过智能技术生成

基于 MySQL 这种数据同步机制,那 Canal 的设计目标主要就是实现数据的同步,即数据的复制,从上面的图自然而然的想到了如下的设计:

在这里插入图片描述

原理相对比较简单:

  • canal 模拟 mysql slave 的交互协议,伪装自己为 mysql slave,向 mysql master 发送 dump 协议

  • mysql master 收到 dump 请求,开始推送 binary log 给 slave (canal)

  • canal解析 binary log 对象(原始为byte流)

接下来我们来看一下 Canale 的整体组成部分:

在这里插入图片描述

说明:

  • server代表一个canal运行实例,对应于一个jvm

  • instance对应于一个数据队列 (1个server对应1…n个instance)

instance模块:

  • eventParser (数据源接入,模拟slave协议和master进行交互,协议解析)

  • eventSink (Parser和Store链接器,进行数据过滤,加工,分发的工作)

  • eventStore (数据存储)

  • metaManager (增量订阅&消费信息管理器)

这些组件我暂时不打算深入去研究,因为在目前这个阶段我自己也不清楚,但这个是我后续需要学习研究的重点。

3、在 IntelliJ IDEA 中运行 Canal Demo


在 Linux 环境中安装 canal 比较简单,大家可以安装官方手册一步一步操作即可,在这里我就不重复介绍,本节主要的目的是希望在开发工具中运行 Canal 的 Demo,以便后续在研究源码的过程中遇到难题时可以进行 Debug。

温馨提示:大家在学习过程中,可以根据官方文档先安装一遍 canal,对理解 Canal 的核心组件有着非常重要的帮助。

首先先从 canal 源码中寻找官方提供的 Demo,其示例代码在 example 包中,如下图所示:

在这里插入图片描述

但是另外稍微遗憾的是 canal 提供提供的示例代码中只包含了 client 端相关的代码,并没有包含服务端(server),故我们将目光放到其单元测试中,如下图所示:

在这里插入图片描述

接下来我根据官方的一些提示,结合自己的理解,

  • 12
    点赞
  • 23
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值