
專案地址:https://github.com/tal-tech/cds
ClickHouse是一個用于聯機分析(OLAP)的列式資料庫管理系統(DBMS),它有著優異的性能,可以快速部署和運行,
不過要想使用ClickHouse搭建起數倉用于資料分析,一個重要的問題就是資料如何進入ClickHouse?
我們希望資料源的變化能夠自動實時地被同步到ClickHouse,而且支持方便的動態的添加新的資料源(新的資料庫,表),
能夠自動的生成對應資料源的schema,
go-zero 團隊使用go語言圍繞ClickHouse開發了一些方便的組件與服務,
我們得到了下面這樣的資料同步設計

該資料同步系統大致由以下三部分組成
- DM 全量同步服務 github.com/tal-tech/cds/dm
- RTU 實時增量同步服務 github.com/tal-tech/cds/rtu
- Galaxy 網頁控制臺服務 github.com/tal-tech/cds/galaxy
流程如下:
- 用戶可以在網頁控制臺添加資料源,自動生成DDL,添加同步任務,該任務會被發送到etcd,
- dm會收到全量同步的通知,執行歷史資料的全量同步作業,
- 之后網頁控制臺服務會指定connector開啟資料庫log監聽作業,資料會進入kafka,
- 監聽etcd集群的RTU實時增量同步服務服務會發現有新的任務,RTU自動領取任務,到kafka消費資料并同步至ClickHouse,
上述服務的開發使用了go語言,借助于go-zero中的工具包,如goctl等,
我們快速實作了它,它還加入了支持自適應mongoDB結構變化,支持資料分表等,
我們相信這是go語言與ClickHouse探索大資料的一個不錯的起點,我們希望有更多的人能夠參與進來,
CDS專案地址:https://github.com/tal-tech/cds
go-zero專案地址:https://github.com/tal-tech/go-zero
歡迎大家 star 并加入微信社區 ??
專案地址:
https://github.com/tal-tech/go-zero
轉載請註明出處,本文鏈接:https://www.uj5u.com/houduan/228362.html
標籤:Go
