专栏首页杨建荣的学习笔记Maxwell和Canal的选型和规划

Maxwell和Canal的选型和规划

关于Maxwell和Canal的选型和规划,之前在团队内部也讨论过几次,从功能和长期的支持,定制方面,似乎哪个方面都不是很好比较,毕竟根据每个企业的特点,都有难以取舍的痛。

一般说要比较,基本都会拿出这幅图来(数据带有主观特点,仅供参考)

我们在这个基础上做些补充。

首先对于这个工具的定位,我们如果是主要基于数据流转来作为虚拟从库这样一个组件,其实选择Maxwell和Canal的差别会比较明显。

Maxwell的定位基本上一句话就能说清楚,MySQL+Kafka,如果是基于MySQL和Kafka组合的技术栈,Maxwell无疑是一种可直接上手的工具,基本不需要复杂的配置即可跑通一个demo,快速开始测试,换句话说Maxwell部署很简单,上手简单,跑通一个完整的测试全然没有问题,对于缺乏基础建设,短时间内需要快速迭代的项目和公司比较合适。

Canal的部署相对来说要复杂许多,对于开发侧的要求较高,有两个值得一提的参考点,一个是bootstrap,对于数据初始化来说,这是一个缺失,和Canal这个工具本身的定位有关,第二个是数据落地,得自己写客户端,当然除此之外,在服务高可用,文档,数据分区,自带图形管理工具方面,Canal确实有自身的优势,而且据说产品内部版本已经对接了商业数据库侧。对于大中型的项目,具有团队开发优势的项目和公司来说,可以考虑,或者可以作为自造轮子的参考。

这几天看了下两个开源项目相关的代码,有了更进一层的认识。GitHub的流行度是一个风向标,

从这个流行度来看,两个项目的量级确实差别挺大,一方面阿里有自身的开源号召力,Maxwell在这个数据面前略显逊色。

不过从代码层面来看,逐步理解了这个差异,首先关于MySQL协议的Java实现,这个整个工具的核心部分,在Canal中都是自下而上都实现了,而Maxwell中翻了一圈代码,竟然没有,发现是在另外一个开源项目mysql-binlog-connector-java中,这个项目的协议实现很精巧,对于理解协议层的一些细节很有帮助。

当然从更细一层来说,Canal是模拟MySQL Slave,主动从Master端拉取日志数据。而mysql-binlog-connector是一个解析库,它有两种模式:BinaryLogFileReader日志读取模式,和BinaryLogClient客户端访问模式,在实现方式上更加灵活,而且BinaryLogFileReader这个部分的实现算是一个杀手级特性,如果规划了binlog集市,在这个基础之上简直如虎添翼。

Maxwell还有什么细节,它基于C3P0连接池,所以在Slave端会看到有几个复制相关的会话,在测试框架部分采用了TestNG的开源项目,在数据落地部分,支持的目标端非常丰富,Redis,Kafka,Kinesis,在数据接入层面的功能非常完善,目前看没有后端的功能支持。

Canal的实现是前后端组合,还包含一个子项目是平台化管理入口,它对接的后端更多是基于自身的技术栈体系,把整个链路能够打通。

对于我们当前的状态来说,我觉得接入Maxwell能够跑通整个数据链路,而且至少在Virtual Slave这一个技术栈上面来说,它是相对技术独立,可以做一些相关的定制工作的,从绝大多数公司的情况来说也是如此,毕竟数据库到大数据的数据流建设相对是隔离的,彼此上下游的建设能够互相映衬,如果目标足够统一,集中优势,选择Canal才是一种长期的策略。

本文分享自微信公众号 - 杨建荣的学习笔记(jianrong-notes),作者:杨建荣

原文出处及转载信息见文内详细说明,如有侵权,请联系 yunjia_community@tencent.com 删除。

原始发表时间:2020-05-04

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

我来说两句

0 条评论
登录 后参与评论

相关文章

  • 通过数据建模梳理数据库业务

    一直以来对于MySQL的binlog日志的统计和分析是工作中的重点内容,因为通过日志量这样一个维度能够反映出数据库的变化情况,但是显然MySQL官方没有...

    jeanron100
  • 应用异常监控利器 Sentry 搭建与学习笔记(修正版)

    Sentry是一家开源公司,提供了一个应用程序监视平台,可以帮助您实时识别问题。 在这里,我们涵盖了有关产品,平台集成和自托管Sentry的所有内容。【通俗讲的...

    jeanron100
  • 应用异常监控利器 Sentry 搭建与学习笔记

    Welcome to the Sentry documentation. Sentry is an open-source company,providing ...

    jeanron100
  • 【数据】关于数据质量,营销人必知六问

    小编邀请您,先思考: 1 如何让数据优质? 数据驱动的广告需要优质数据。但大量的不良数据和经不起推敲的数据使用方式可能会给营销活动造成不良影响。 营销人员需要知...

    陆勤_数据人网
  • Day47:求1+2+3+……+n

    思路一:   众所周知,我们学的等差数列求和:1+2+3+……+n=(1 + n)*n/2=(n+n^2)/2,这里我们可以用到一个math库中的pow()函...

    stefan666
  • 如何不编程,采集网站评论信息?(视频教程)

    最近的一次组会,我们请来了一位分享嘉宾——15级研究生庞琳同学,给我们科研团队分享网站评论数据的采集。

    王树义
  • 【leetcode刷题】T217-最小差值 I

    https://leetcode-cn.com/problems/smallest-range-i/

    木又AI帮
  • 有哪些Java源代码看了后让你收获很多?

    曾经读过Erudika/para的源码,此源码托管在github,大致是2014年前后开源的云计算通用后端框架,基于spring boot体系,...

    慕容千语
  • 《剑指 offer》刷题记录之:位运算

    位运算是把数字用二进制表示之后,对每一位上 0 或者 1 的运算。位运算总共包括以下 5 种:

    口仆
  • 2017中国地方政府数据开放平台报告在京发布

    2017年12月15日,由新华网主办的2017中国大数据产业年会在北京成功举行。该年会以“大数据助力中国新经济”为主题,汇聚大数据“产学研”大咖,共同探讨大数据...

    企鹅号小编

扫码关注云+社区

领取腾讯云代金券