背景
我们都知道随着业务的发展,监听数据库的数据变更及时性是必须的,虽然我们可以在入库之前进行处理,但是有个问题就是事务的一致性不好掌控,而且很多业务都是微服务的,那么不在一个微服务中,可能有需要跨服务去调用,那么此时直接去监听mysql的binlog来实现数据的操作既可以实现及时性又可以和业务解耦
目前市面上比较流行的就是cancel和maxwell,那么我们该如何去选型呢?这里我说下我的选型历程
大数据组件之Maxwell与Canal工具对比
- Canal是阿里公司使用Java开发,Maxwell是zendesk公司使用Java开发。
- Canal支持高可用HA,支持断点续传。Maxwell不支持HA,但是支持断点续传,要想支持HA需要自己实现。
- Canal由于有Client消费数据,针对binlog数据可以使用Client自定义数据格式, - - Maxwell支持Json数据写出到Kafka或Redis。
- Canal只能获取MySQL最新数据,Maxwell支持Bootstrap,可以支持获取MySQL中历史数据。
- Canal采用Server+client模式,Maxwell没有采用这种模式,直接将数据发送到Kafka或者Redis等。
总体来看,Maxwell相对于Canal更加轻量级