本文是基于阿里開源的mysql binlog解析方案canal淮野,以及golang版本封裝的一套數(shù)據(jù)更新通道舒岸。
先來張設(shè)計圖
簡單介紹下功能
- canal本身實現(xiàn)了對mysql binlog的解析(只支持row模式),該golang版本本身是只支持單mysql實例,需要封裝下支持多個數(shù)據(jù)源。
- zookeeper實現(xiàn)了HA(flag : EPHEMERAL|SEQUENTIAL基本就能搞定)
- kafka可以方便各個業(yè)務(wù)方訂閱不同的數(shù)據(jù)源事件蜒车,而且是n:m的關(guān)系,其中n是多個數(shù)據(jù)庫,m是多個業(yè)務(wù)方磨确。比如可以把db+table作為一個topic,供一個或多個業(yè)務(wù)方去消費声邦。
做成服務(wù)
服務(wù)化的設(shè)計乏奥,可以很好的支持公司各個部門對db數(shù)據(jù)變更的需求,比如業(yè)務(wù)cache更新亥曹、搜索邓了、大數(shù)據(jù)等。