查看原文
其他

Maxwell和Canal的选型和规划

The following article is from 杨建荣的学习笔记 Author 杨建荣

相关推荐:数据同步之道(Sqoop、dataX、Kettle、Canal、StreamSets)






正文



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

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

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





01 

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

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

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





 02  

这几天看了下两个开源项目相关的代码,有了更进一层的认识。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,在数据接入层面的功能非常完善,目前看没有后端的功能支持。





 03  

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

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

如果您喜欢本文,欢迎点击右上角,把文章分享到朋友圈~~


往期推荐


1. 菜鸟实时数仓技术架构演进

2. 大数据职业发展与规划【含干货】

3. 分层随机抽样巧用窗口函数 | percent_rank()/ntile()over()

4. 建设实时数仓之前的思考与方案记录(一)

5. 基于Binlog与Flink实时同步数仓实践(二)

6. 基于Binlog实时同步数据仓库问题总结(三)


欢迎加入中台|数仓技术交流群。戳:数据交流群

进群方式:请加微信(微信号:iom1128),回复:数据,通过审核会自动拉你进群。


(备注:行业-职位-城市)


▼ 福利时刻 ▼ 


01. 后台回复「经典」,即可领取大数据数仓经典书籍。

02. 后台回复「中台」,即可领取大厂中台架构高清ppt。

03. 后台回复「加群」,或添加小助微信IDiom1128  拉您入群(大数据|数仓|分析|Flink|资源)或领取资料。


Q: 关于数据仓库,你还想了解什么?


欢迎大家扫描下方二维码订阅「数据仓库与Python大数据」内容并推荐给更多数据方向的朋友,希望有更多机会和大家交流。


更多精彩,请戳"阅读原文"到"数仓之路"查看

  

关注不迷路~ 各种福利、资源定期分享


你也「在看」吗?👇

戳原文,更有料!

您可能也对以下帖子感兴趣

文章有问题?点此查看未经处理的缓存