本項目地址:https://github.com/tal-tech/cdsgit
ClickHouse 是一個用於聯機分析 (OLAP) 的列式數據庫管理系統 (DBMS)。它有着優異的性能,能夠快速部署和運行。不過要想使用 ClickHouse 搭建起數倉用於數據分析,一個重要的問題就是數據如何進入 ClickHouse?咱們但願數據源的變化可以自動實時地被同步到 ClickHouse,並且支持方便的動態的添加新的數據源 (新的數據庫,表), 可以自動的生成對應數據源的 schema。github
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/cds
歡迎你們 star 並加入微信社區 ????