Flink 和 ClickHouse 分別是實時計算和(近實時)OLAP 領域的翹楚,也是近些年非常火爆的開源框架,很多大廠都在將兩者結合使用來構建各種用途的實時平臺,效果很好。

點擊流數倉分層設計

點擊流實時數倉的分層設計仍然可以借鑑傳統數倉的方案,以扁平爲上策,儘量減少數據傳輸中途的延遲。簡圖如下。

* DIM 層:維度層,MySQL 鏡像庫,存儲所有維度數據。

* ODS 層:貼源層,原始數據由 Flume 直接進入 Kafka 的對應 topic。

* DWD 層:明細層,通過 Flink 將 Kafka 中數據進行必要的 ETL 與實時維度 join 操作,形成規範的明細數據,並寫回 Kafka 以便下游與其他業務使用。再通過 Flink 將明細數據分別寫入 ClickHouse 和 Hive 打成大寬表,前者作爲查詢與分析的核心,後者作爲備份和數據質量保證(對數、補數等)。

* DWS 層:服務層,部分指標通過 Flink 實時彙總至 Redis,供大屏類業務使用。更多的指標則通過 ClickHouse 物化視圖等機制週期性彙總,形成報表與頁面熱力圖。特別地,部分明細數據也在此層開放,方便高級 BI 人員進行漏斗、留存、用戶路徑等靈活的 ad-hoc 查詢,這些也是 ClickHouse 遠超過其他 OLAP 引擎的強大之處。

相關文章