1、Deployer故障,自动HA
Deployer机器发生故障,系统自动HA到备机,任务得以继续消费。总起来说,问题二并没有给我们的业务带来任何的损耗,但是,还是比较经典的一个案例。这主要反应出来,对于数据异构这样一个需求。它的链路上所有环节,基本上都是有高可用的要求的。
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模式下才可用。