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




二、平臺(tái)建設(shè)

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




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









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


四、事件驅(qū)動(dòng)

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

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





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


五、未來(lái)規(guī)劃


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