本文是基于阿里开源的mysql binlog解析方案canal,以及golang版本封装的一套数据更新通道。
先来张设计图
简单介绍下功能
- canal本身实现了对mysql binlog的解析(只支持row模式),该golang版本本身是只支持单mysql实例,需要封装下支持多个数据源。
- zookeeper实现了HA(flag : EPHEMERAL|SEQUENTIAL基本就能搞定)
- kafka可以方便各个业务方订阅不同的数据源事件,而且是n:m的关系,其中n是多个数据库,m是多个业务方。比如可以把db+table作为一个topic,供一个或多个业务方去消费。
做成服务
服务化的设计,可以很好的支持公司各个部门对db数据变更的需求,比如业务cache更新、搜索、大数据等。