首先第一点:Canal 像个安插在MySQL内部的“间谍”,它实时监听数据库的所有增删改操作(记在binlog里),然后把任何变化都准确无误地抄录下来。
其次:MQ(消息队列,如Kafka/RocketMQ) 就是个“中转快递站”。Canal把变化消息打包扔到MQ里就完事儿,不关心后面谁处理、处理得快慢,实现了核心业务和数据处理之间的解耦。
然后消费者从MQ里取出这些变化消息,然后想干嘛干嘛:比如同步到Elasticsearch生成搜索索引、更新Redis缓存、或者记录日志等等。
最后一点这个方案的一个好处就是业务代码无侵入,不影响主数据库性能,还能保证数据同步的实时性和可靠性(靠MQ的堆积能力)。
1775

被折叠的 条评论
为什么被折叠?



