基于 Flink x TiDB,智慧芽打造實(shí)時(shí)分析新方案
?摘要:本文整理自智慧芽數(shù)據(jù)倉庫架構(gòu)師曲明星在 Flink Forward Asia 2021 實(shí)時(shí)數(shù)倉專場的分享。本篇內(nèi)容主要分為三個(gè)部分:
- 產(chǎn)品架構(gòu)
- 技術(shù)架構(gòu)
- 未來計(jì)劃
01產(chǎn)品架構(gòu)
上圖是智慧芽APP 的產(chǎn)品架構(gòu)圖,包括后臺(tái)管理系統(tǒng)、AI、內(nèi)容引擎、幫助中心,為客戶提供知識(shí)產(chǎn)權(quán)信息化服務(wù)和科技創(chuàng)新情報(bào)系統(tǒng)。
02技術(shù)架構(gòu)
2.1 原實(shí)時(shí)分析方案
上圖是原來的實(shí)時(shí)分析方案。流程大致是客戶檢索一個(gè)條件,通過分析 API 把客戶檢索的相關(guān)條件發(fā)送到不同的搜索引擎。這種方案會(huì)產(chǎn)生 4 個(gè)問題:
- 對(duì)檢索性能產(chǎn)生影響;
- 復(fù)雜分析需要開發(fā)插件支持;
- 跨多個(gè)搜索引擎分析復(fù)雜度高;
- 不同維度的數(shù)據(jù)無法存儲(chǔ)。
在建立實(shí)時(shí)數(shù)倉前,收集了業(yè)務(wù)要求實(shí)時(shí)數(shù)倉特點(diǎn):
- 秒級(jí)響應(yīng);
- 準(zhǔn)實(shí)時(shí)數(shù)據(jù)更新;
- 能支持一定量的并發(fā)能力;
- 與搜索引擎數(shù)據(jù)保持一致;
- 支持復(fù)雜分析的能力;
- 支持統(tǒng)一使用方式及主流特性;
- 支持與搜索引擎交互;
- 支持存儲(chǔ)容量橫向擴(kuò)展的能力。
上圖是數(shù)據(jù)平臺(tái)概覽。從下往上看:
- 最下層是數(shù)據(jù)底座,包括數(shù)據(jù)存儲(chǔ)和數(shù)據(jù)計(jì)算,其中數(shù)據(jù)計(jì)算層由 Spark、Kafka、Flink 組成;
- 中間層是數(shù)據(jù)平臺(tái),包括數(shù)據(jù)開發(fā)、數(shù)據(jù)分類、數(shù)據(jù)管理和數(shù)據(jù)服務(wù);
- 上層是數(shù)據(jù)應(yīng)用,主要有數(shù)據(jù)業(yè)務(wù)、外部分析服務(wù)和內(nèi)部分析業(yè)務(wù)構(gòu)成。
2.2 新實(shí)時(shí)分析方案
新的技術(shù)選型主要基于 TiDB,主要包括數(shù)據(jù)存儲(chǔ)、數(shù)倉服務(wù)兩個(gè)部分。數(shù)倉服務(wù)分為安全檢查、驅(qū)動(dòng)表管理、緩存管理、集群負(fù)載檢查以及執(zhí)行器等部分。
選擇 TiDB 是因?yàn)樗窃圃⑶疑鐓^(qū)活躍、滿足 TP 及 AP 業(yè)務(wù)場景、豐富的生態(tài)工具及多平臺(tái)以及其使用簡單,兼容 MySQL 以及大數(shù)據(jù)能力。
選擇 Flink 也是因?yàn)樗且粋€(gè)開源的大數(shù)據(jù)計(jì)算引擎,并且有活躍的云原生社區(qū),能夠滿足對(duì)數(shù)據(jù)的及時(shí)性要求,一致性方面有 exactly-once 語義,同時(shí)具備低延遲高吞吐量。
在線業(yè)務(wù)數(shù)據(jù)寫入流程:把源頭的數(shù)據(jù)變更放到消息隊(duì)列中去,通過索引程序?qū)?shù)據(jù)分發(fā)到不同的搜索引擎,同時(shí)搜索引擎也會(huì)給索引程序發(fā)送消息。
離線分析技術(shù)體系:整個(gè)離線分析技術(shù)體系比較依賴于 oss。將每日的增量數(shù)據(jù)離線放到 oss 里,對(duì)全量的數(shù)據(jù)進(jìn)行一些比較復(fù)雜的分析。
離線業(yè)務(wù)數(shù)據(jù)寫入流程:數(shù)據(jù)變更會(huì)觸發(fā)持久流化至 oss,oss 同時(shí)會(huì)和歷史流進(jìn)行合并在 oss 放一份全量數(shù)據(jù)。
2.3 原用戶行為分析方案
原用戶行為分析方案是非常復(fù)雜的方案,這個(gè)方案在前端有 JS 和 Java 的 API,JS 會(huì)將用戶的埋點(diǎn)數(shù)據(jù)放置到 Segment 中去,同時(shí)有 Gainsight 和 AMPLITUDE 兩個(gè)合成化引擎。
2.4 新用戶行為分析方案
新的用戶行為分析方案相對(duì)比較簡潔。首先收集用戶的行為數(shù)據(jù),通過 Kinesis 以流的方式接到到 Flink,再進(jìn)行一些實(shí)時(shí)指標(biāo)的計(jì)算,并將計(jì)算結(jié)果存放于不同的表中,給我們提供了可視化的開發(fā)。
2.5 Flink + Iceberge 探索
在 Flink + Iceberge 的探索中,將幾百 G 左右的表以流的方式放到 Kafka 中,再推送到 oss 中。目前,市面上缺乏成熟的解決方案,所以沒有把這個(gè)方式應(yīng)用到生產(chǎn)環(huán)境上。
03未來計(jì)劃
- 云原生數(shù)據(jù)庫架構(gòu)遷移;
- 提供更完善的指標(biāo)和取數(shù)系統(tǒng);
- 建設(shè)數(shù)據(jù)生產(chǎn)的全鏈路監(jiān)控和預(yù)警;
- 供支撐公司數(shù)據(jù)消費(fèi)和服務(wù)能力;
- 在線實(shí)時(shí)分析數(shù)倉及其數(shù)據(jù)處理管道的繼續(xù)演進(jìn);
- 打造云原生數(shù)據(jù)技術(shù)體系和新一代大數(shù)據(jù)平臺(tái);
- 提供數(shù)據(jù)網(wǎng)關(guān)入口,提供統(tǒng)一的數(shù)據(jù)出口、提高數(shù)據(jù)應(yīng)用效率。?