Flink 實踐 | 貝殼基于 Flink 的實時計算演進(jìn)之路
發(fā)展歷程
平臺建設(shè)
實時數(shù)倉及其應(yīng)用場景
事件驅(qū)動場景
未來規(guī)劃
GitHub 地址 
一、發(fā)展歷程




二、平臺建設(shè)

支持任務(wù)托管的基本能力,包括任務(wù)的編輯發(fā)布、版本管理、監(jiān)控報警等;
支持多種語言的實時任務(wù),包括對貝殼算法相關(guān)的 Python 實時任務(wù)的良好支持;
根據(jù)業(yè)務(wù)場景不同,支持多種業(yè)務(wù)類型,如自定義任務(wù)、模板任務(wù)及場景任務(wù)(SQL 任務(wù)),內(nèi)部通用配置化任務(wù),如分流合并操作。目前 SQL 任務(wù)在平臺占比較高,我們的目標(biāo)是 80%;
支持公共隊列(針對較數(shù)據(jù)量小的需求),對于數(shù)據(jù)量大的需求,要有穩(wěn)定的資源保證,我們可以提供專有隊列,運(yùn)行更為可靠。




三、實時數(shù)倉
在實時側(cè),分層越少越好,否則中間環(huán)節(jié)越多,出問題的概率越大;
在 SQL 層面,支持標(biāo)準(zhǔn)的SQL語法,維表關(guān)聯(lián),提供圖形化的SQL開發(fā)環(huán)境。另外還支持豐富的內(nèi)置函數(shù),并逐步完善支持用戶自定義函數(shù)(UDF)的開發(fā);
數(shù)據(jù)血緣方面,平臺支持圖形化展示和完善的鏈路分析,而且能實時看到數(shù)據(jù)流的運(yùn)行情況并對異常進(jìn)行標(biāo)示;
最后是多源支持,對公司內(nèi)部用到的各種存儲做到了較好的支持。









解析模塊(Parse Model)將用戶原始的 SQL 解析成內(nèi)部的執(zhí)行計劃,完全依賴于 Flink SQL。Connector Model 完成目前 Flink 尚未支持的 Connector 開發(fā)。
Format Model 實現(xiàn)數(shù)據(jù)源字段的序列化和反序列化。
執(zhí)行模塊(Execute Model)基于 Flink1.11 SQL API 執(zhí)行解析后的執(zhí)行計劃。
UDF 模塊是專門處理 UDF 的解析,如參數(shù)調(diào)用的合法驗證、權(quán)限驗證、細(xì)致的數(shù)據(jù)權(quán)限限制。
SDK Model 是對外提供的標(biāo)準(zhǔn)化服務(wù),如 SQL 文本開發(fā)的驗證,debug 功能等。


四、事件驅(qū)動

事件驅(qū)動是根據(jù)事件流中的事件實時觸發(fā)外部計算和外部狀態(tài)的更新,主要關(guān)注實時事件觸發(fā)的外部變化,重在單獨事件以及外部動作的觸發(fā)。
數(shù)據(jù)分析型主要是從原始數(shù)據(jù)中提取有價值的信息,重在分析。

一是用戶行為事件缺乏統(tǒng)一的抽象和管理,開發(fā)效率低,周期長,各部門存在重復(fù)建設(shè);
二是規(guī)則邏輯與業(yè)務(wù)系統(tǒng)是耦合的,難以實現(xiàn)靈活的變化,對于復(fù)雜的規(guī)則或場景,業(yè)務(wù)方缺乏相關(guān)的技能和知識儲備,如對 CEP 的支持;
第三是缺乏統(tǒng)一的下游動作觸發(fā)的配置。





一是本地方式,即可以根據(jù)事件的各個字段和維度設(shè)定條件;
二是遠(yuǎn)程方式,這與我們的埋點系統(tǒng)(用戶行為日志)直接連通,可以直接得到用戶事件的定義。


五、未來規(guī)劃


更多 Flink 相關(guān)技術(shù)交流,可掃碼加入社區(qū)釘釘大群~
戳我,回顧作者分享視頻!