1、Deployer故障,自动HA

3、主从集群下 Canal高可用 - 图1
Deployer机器发生故障,系统自动HA到备机,任务得以继续消费。总起来说,问题二并没有给我们的业务带来任何的损耗,但是,还是比较经典的一个案例。这主要反应出来,对于数据异构这样一个需求。它的链路上所有环节,基本上都是有高可用的要求的。
3、主从集群下 Canal高可用 - 图2
Canal一共提供两种HA,其中Deployer的HA是靠Zookeeper的临时节点和重试机制实现的,而Mysql的HA则是靠一个单独的线程不断的Detect来实现的。

但是MySQL的HA,只能用GTID的模式,这是因为Mysql master和slave的binlogfile name、position是不一样的。如果用master的binlogfilename和position去slave发送dump协议,这会出现无法匹配的问题。但是GTID是全局有序的,这也就保证了Mysql的HA只在GTID模式下才可用。

*备注:大促突围:京东到家基于Canal的数据异构设计
(https://www.toutiao.com/i6960894099515851303/?tt_from=weixin&utm_campaign=client_share&wxshare_count=1&timestamp=1620781528&app=news_article&utm_source=weixin&utm_medium=toutiao_android&use_new_style=1&req_id=202105120905270102120720782A29C419&share_token=02cd1d24-3327-49ea-8b1b-b565067aa814&group_id=6960894099515851303)