引言
随着业务的发展,我们需要对数据库中的数据进行汇总、统计等操作,通常我们的做法是:写一个定时任务,定时读取数据,再进行汇总、统计等。但随着数据量的越来越来,查询的成本高了很多。那么有什么好的方法来实现呢?阿里巴巴开源的Canal就派上用场了。Canal的定位是:基于数据库增量日志解析,提供增量数据订阅&消费,也就是说,我们可以通过Canal做到实时获取数据库数据变更,以此再进行数据汇总、统计就很方便了。
关于Canal的使用网上已经有很多资料了,本文就不再赘述了,本文主要介绍一些使用上的一些注意事项和开发指南。本文使用的canal版本是:1.1.2。
配置文件
canal.properties是Canal的核心配置文件。使用过程中需要注意一下几个配置项:
canal.serverMode
提供tcp、kafka、RocketMQ三个值。
- tcp:客户端通过tcp方式从Canal服务端拉取增量数据
- kafka:Canal服务端将增量数据同步到kafka中,客户端从kafka消费数据,此时客户端感知不到Canal的存在,只需要跟kafka交互。
- RocketMQ:同kafka,增量数据同步到RocketMQ中。
canal.zkServers
Canal连接的zookeeper集群地址,用于多台Canal组成集群时,存储集群信息等。