繁體簡(jiǎn)體

數(shù)據(jù)庫(kù)StarRocks在信也科技的應(yīng)用實(shí)踐,打造統(tǒng)一銷(xiāo)售數(shù)據(jù)平臺(tái)

信也科技是在紐交所上市的金融科技集團(tuán),致力于通過(guò)大數(shù)據(jù)、人工智能、區(qū)塊鏈等技術(shù)實(shí)現(xiàn)“科技,讓金融更美好”的使命,推動(dòng)金融服務(wù)從可獲得進(jìn)一步向可負(fù)擔(dān)、可信任和可享受進(jìn)化,成為受用戶(hù)歡迎、受伙伴信任的金融科技品牌。信也科技旗下包括金融科技業(yè)務(wù)、國(guó)際業(yè)務(wù)、科技生態(tài)孵化業(yè)務(wù)三大板塊,具體涵蓋消費(fèi)金融、科技輸出、孵化器和投資等業(yè)務(wù),堅(jiān)持以創(chuàng)新技術(shù)服務(wù)大眾、賦能機(jī)構(gòu),助力實(shí)體經(jīng)濟(jì)發(fā)展。

一、業(yè)務(wù)背景

公司銷(xiāo)售業(yè)務(wù)快速發(fā)展,用戶(hù)對(duì)多維數(shù)據(jù)分析的實(shí)時(shí)性要求越來(lái)越高,場(chǎng)景也變化多樣,業(yè)務(wù)的復(fù)雜性和多樣性給公司研發(fā)和運(yùn)維成本帶來(lái)很大的挑戰(zhàn)。與此同時(shí)開(kāi)源數(shù)據(jù)分析引擎也是百花齊放,日新月異。信也科技實(shí)時(shí)數(shù)據(jù)團(tuán)隊(duì)致力于研發(fā)效率最大化,選擇一款合適高效的存儲(chǔ)引擎就尤為重要。信也科技通過(guò)引入新一代性能彪悍的MPP架構(gòu)數(shù)據(jù)庫(kù)StarRocks來(lái)構(gòu)建實(shí)時(shí)數(shù)倉(cāng)平臺(tái),進(jìn)行實(shí)時(shí)數(shù)據(jù)分析,提供統(tǒng)一的數(shù)據(jù)服務(wù);降低業(yè)務(wù)使用復(fù)雜度,提升用戶(hù)體驗(yàn),實(shí)現(xiàn)生產(chǎn)效率最大化。

二、原有架構(gòu)及痛點(diǎn)

銷(xiāo)售數(shù)據(jù)平臺(tái)初期分四個(gè)子項(xiàng)目:

銷(xiāo)售APP系統(tǒng):實(shí)時(shí)消費(fèi)業(yè)務(wù)庫(kù)Binlog數(shù)據(jù),通過(guò)Flink實(shí)時(shí)消費(fèi)清洗,計(jì)算不同維度下的銷(xiāo)售訂單和業(yè)績(jī)等指標(biāo),按時(shí)、按天、按月等時(shí)間維度進(jìn)行實(shí)時(shí)計(jì)算,數(shù)據(jù)落到MySQL/MongoDB。

銷(xiāo)售智能地圖系統(tǒng):為了更好的分析銷(xiāo)售行為和跟蹤銷(xiāo)售軌跡,關(guān)注銷(xiāo)售的訂單,業(yè)績(jī)等指標(biāo),數(shù)據(jù)經(jīng)過(guò)流轉(zhuǎn)和清洗完之后,除了發(fā)一份數(shù)據(jù)到MySQL之外,最后還要推送一份數(shù)據(jù)到Elasticsearch中,引入Elasticsearch的原因一是用到地圖GEO函數(shù),二是靈活地支持多種維度查詢(xún)。

銷(xiāo)售實(shí)時(shí)大盤(pán):清洗完的數(shù)據(jù)(訂單、業(yè)績(jī)等)發(fā)送到消息中間件,然后落到Redis、MySQL等存儲(chǔ)系統(tǒng)中供前端使用。

銷(xiāo)售消息推送系統(tǒng):數(shù)據(jù)(訂單、業(yè)績(jī))經(jīng)過(guò)清洗之后,會(huì)發(fā)一份數(shù)據(jù)到ClickHouse中,最后實(shí)時(shí)推送數(shù)據(jù),以滿(mǎn)足不同的場(chǎng)景。

為了快速響應(yīng)業(yè)務(wù)需求,滿(mǎn)足不同的業(yè)務(wù)場(chǎng)景,團(tuán)隊(duì)選擇不同技術(shù)方案來(lái)快速滿(mǎn)足業(yè)務(wù)需求,項(xiàng)目的初期很好的滿(mǎn)足了業(yè)務(wù)需求,隨著時(shí)間的推移,數(shù)據(jù)量和業(yè)務(wù)功能變的越來(lái)越復(fù)雜,同時(shí)業(yè)務(wù)口徑變更和新需求的不斷提出,項(xiàng)目的維護(hù)成本和痛點(diǎn)就越來(lái)越明顯:

同一份數(shù)據(jù)存儲(chǔ)多份,浪費(fèi)存儲(chǔ)資源。

新需求或需求變更所涉及的團(tuán)隊(duì)和數(shù)據(jù)存儲(chǔ),數(shù)據(jù)服務(wù)比較多,溝通成本和研發(fā)成本相應(yīng)增加。

多層級(jí)組織架構(gòu)下進(jìn)行計(jì)算和統(tǒng)計(jì)分析業(yè)績(jī)、訂單、標(biāo)的等指標(biāo),這些指標(biāo)在不斷變化的維度和不同的計(jì)算口徑下給系統(tǒng)帶來(lái)很大的挑戰(zhàn),很難快速響應(yīng)業(yè)務(wù)需求。

多種存儲(chǔ)引擎和多套數(shù)據(jù)服務(wù)帶來(lái)巨大的運(yùn)維成本和整體系統(tǒng)的不穩(wěn)定性因素和隱患也相應(yīng)增加。

三、OLAP引擎選擇

根據(jù)目前的業(yè)務(wù)痛點(diǎn)和業(yè)務(wù)本身對(duì)數(shù)據(jù)多維分析查詢(xún)的要求,以及能適應(yīng)公司未來(lái)在線(xiàn)實(shí)時(shí)查詢(xún)需要,我們選擇一款OLAP引擎要有幾點(diǎn)要求:

·低延遲的毫秒級(jí)響應(yīng),數(shù)據(jù)秒級(jí)寫(xiě)入。

·運(yùn)維簡(jiǎn)單,易用性強(qiáng)。

·復(fù)雜的場(chǎng)景查詢(xún)。

·明細(xì)數(shù)據(jù)查詢(xún)。

·多表關(guān)聯(lián)查詢(xún)性能好。

·支持高并發(fā)。

·對(duì)地圖函數(shù)有支持。

·要有物化視圖的能力。

StarRocks

優(yōu)勢(shì):

·支持標(biāo)準(zhǔn)SQL,兼容MySQL協(xié)議以及分布式Join。

·水平擴(kuò)展,不依賴(lài)外部組件,方便縮擴(kuò)容。

·支持多種聚合算子,物化視圖。

·MPP架構(gòu),分片分桶的復(fù)合存儲(chǔ)模型。

·支持高并發(fā)查詢(xún),QPS可達(dá)千、萬(wàn)量級(jí)。

·支持寬表和多表Join查詢(xún),數(shù)據(jù)查詢(xún)秒級(jí)/毫秒級(jí)。

·支持地圖GEO函數(shù)。

·運(yùn)維簡(jiǎn)單,易用性強(qiáng)。

·復(fù)雜的場(chǎng)景查詢(xún)。

劣勢(shì):

·缺乏單列數(shù)據(jù)更新能力。

·周邊生態(tài)還不是很完善。

ClickHouse

優(yōu)勢(shì):

·數(shù)據(jù)壓縮,多核并行處理,單表性能極佳。

·向量引擎,稀疏索引,適合在線(xiàn)查詢(xún)。

·支持?jǐn)?shù)據(jù)復(fù)制和數(shù)據(jù)完整性。

·支持地圖GEO函數(shù)。

劣勢(shì):

·沒(méi)有完整的事務(wù)支持以及多表Join不友好。

·對(duì)修改或刪除數(shù)據(jù)的能力支持不夠,MergeTree合并不完全。

·并發(fā)能力不高。

·依賴(lài)Zookeeper,在集群擴(kuò)大時(shí)ZK會(huì)成為性能瓶頸。

TiDB/TiFlash

優(yōu)勢(shì):

·數(shù)據(jù)壓縮,多核并行處理,單表性能極佳。

·支持標(biāo)準(zhǔn)SQL,兼容MySQL協(xié)議以及分布式Join。

·TiFlash預(yù)處理加速OLAP分析。

·TiDB計(jì)算、存儲(chǔ)分離,高可用模式,運(yùn)維依賴(lài)于自動(dòng)化運(yùn)維工具,易操作。

·支持高并發(fā)查詢(xún)。

劣勢(shì):

·強(qiáng)依賴(lài)SSD,硬件成本比較高。

·OLAP場(chǎng)景下查詢(xún)性能相對(duì)弱一些。

·不支持實(shí)時(shí)預(yù)聚合。

·不支持地圖GEO函數(shù)。

早期應(yīng)用的OLAP引擎各自有一些功能局限,無(wú)法滿(mǎn)足我們的需求。如Presto、Impala無(wú)法提供低延遲亞秒級(jí)響應(yīng),Druid不提供明細(xì)查詢(xún),Kylin無(wú)法基于明細(xì)提供毫秒級(jí)查詢(xún),更多場(chǎng)景是預(yù)計(jì)算,運(yùn)維成本也比較高。這次通過(guò)對(duì)比StarRocks、TiDB/TiFlash、ClickHouse這些當(dāng)下性能卓越的開(kāi)源引擎,我們基本上鎖定了StarRocks作為我們新一代的MPP架構(gòu)的OLAP引擎。

四、銷(xiāo)售平臺(tái)現(xiàn)有架構(gòu)

引入StarRocks后,架構(gòu)如下圖所示:

數(shù)據(jù)采集

線(xiàn)上關(guān)系型業(yè)務(wù)庫(kù)數(shù)據(jù)通過(guò)Canal實(shí)時(shí)采集MySQL Binlog到Kafka,離線(xiàn)數(shù)據(jù)通過(guò)Sqoop/DataX工具導(dǎo)入到HDFS中,埋點(diǎn)數(shù)據(jù)通過(guò)自定義Kafka的Log Appender,數(shù)據(jù)會(huì)實(shí)時(shí)寫(xiě)入Kafka,供下游消費(fèi)。

數(shù)據(jù)中轉(zhuǎn)

Kafka作為業(yè)務(wù)庫(kù)實(shí)時(shí)數(shù)據(jù)的中轉(zhuǎn)站,保留一定時(shí)間的數(shù)據(jù),作為實(shí)時(shí)數(shù)倉(cāng)的ODS,為下游計(jì)算準(zhǔn)備數(shù)據(jù),HDFS作為業(yè)務(wù)庫(kù)歷史數(shù)據(jù)中轉(zhuǎn)站,是一次性的數(shù)據(jù),保留一段時(shí)間后可以刪除,節(jié)省成本。

數(shù)據(jù)處理

實(shí)時(shí)數(shù)據(jù):根據(jù)需求,我們通過(guò)Flink實(shí)時(shí)消費(fèi)Kafka數(shù)據(jù)進(jìn)行數(shù)據(jù)清洗、關(guān)聯(lián)、處理等操作,然后通過(guò)Flink-StarRocks Connector把數(shù)據(jù)落到StarRocks中。

離線(xiàn)數(shù)據(jù):通過(guò)HDFS調(diào)度平臺(tái)對(duì)離線(xiàn)數(shù)據(jù)進(jìn)行清洗、處理,然后通過(guò)StarRocks導(dǎo)入工具把數(shù)據(jù)一次性落入到StarRocks中。另外,我們的業(yè)務(wù)數(shù)據(jù)也會(huì)更新變化,比如訂單狀態(tài)等,我們選擇更新模型來(lái)滿(mǎn)足需求。

實(shí)時(shí)數(shù)倉(cāng)

實(shí)時(shí)數(shù)倉(cāng)層的數(shù)據(jù)根據(jù)數(shù)據(jù)倉(cāng)庫(kù)典型邏輯分層劃分為ODS、DWD、DWS、DIM等層,不同分層的數(shù)據(jù),可以通過(guò)Flink實(shí)時(shí)計(jì)算直接落庫(kù),也可以通過(guò)離線(xiàn)調(diào)度平臺(tái)進(jìn)行分鐘級(jí)或小時(shí)級(jí)的調(diào)度計(jì)算,當(dāng)然也可以利用StarRocks本身的物化視圖,這個(gè)要根據(jù)不同場(chǎng)景進(jìn)行選擇。總體來(lái)說(shuō)我們會(huì)利用StarRocks極速的OLAP查詢(xún)能力(分區(qū)分桶,向量化計(jì)算,列式存儲(chǔ),MPP架構(gòu))和不同的數(shù)據(jù)模型(明細(xì)模型、聚合模型和更新模型)來(lái)滿(mǎn)足不同場(chǎng)景的數(shù)據(jù)分析需求。

數(shù)據(jù)服務(wù)

目前這套架構(gòu)通過(guò)兩種方式對(duì)外提供服務(wù),一是提供數(shù)據(jù)服務(wù)接口供各個(gè)應(yīng)用方使用,二是把數(shù)據(jù)發(fā)送到消息中間層(公司自研消息中間件)供下游使用。目前數(shù)據(jù)主要面向管理層、運(yùn)營(yíng)人員、B端用戶(hù),數(shù)據(jù)查詢(xún)要求低延遲,需求變化快,而StarRocks通過(guò)極速的性能、高并發(fā)低延遲的特性以及靈活的建模方式很好滿(mǎn)足了這些用戶(hù)的數(shù)據(jù)需求。

銷(xiāo)售應(yīng)用

基于目前銷(xiāo)售數(shù)據(jù)我們?cè)谏蠈訕?gòu)建了各種應(yīng)用,比如APP后端系統(tǒng)、實(shí)時(shí)大盤(pán)、哨兵系統(tǒng)、智能地圖、運(yùn)營(yíng)推薦系統(tǒng)等,來(lái)滿(mǎn)足業(yè)務(wù)方的需求。

可以看到,引入StarRocks之后,新架構(gòu)具有如下的優(yōu)點(diǎn):

·統(tǒng)一數(shù)據(jù)存儲(chǔ)計(jì)算引擎,有助于打破數(shù)據(jù)壁壘,實(shí)現(xiàn)數(shù)據(jù)價(jià)值最大化。

·統(tǒng)一數(shù)據(jù)管理,降低管理復(fù)雜度,提升數(shù)據(jù)安全性。

·統(tǒng)一數(shù)據(jù)服務(wù)計(jì)算,復(fù)用已有接口,研發(fā)效率最大化。

·靈活多變的維度組合查詢(xún),快速響應(yīng)業(yè)務(wù)需求。

五、StarRocks運(yùn)維

基于Prometheus+Grafana進(jìn)行監(jiān)控

除了StarRocks本身提供的Manager管理功能,StarRocks也提供了基于Prometheus+Grafana的可視化監(jiān)控方案。Prometheus通過(guò)Pull方式訪(fǎng)問(wèn)FE/BE的Metric接口,將監(jiān)控?cái)?shù)據(jù)存入時(shí)序數(shù)據(jù)庫(kù),然后通過(guò)Grafana配置Prometheus為數(shù)據(jù)源,自定義繪制Dashboard。通過(guò)這套方案,我們初步搭建了StarRocks運(yùn)維監(jiān)控體系來(lái)保障線(xiàn)上服務(wù)。

基于日志的審計(jì)監(jiān)控

SQL慢查詢(xún),響應(yīng)時(shí)間長(zhǎng),不規(guī)范的SQL會(huì)給整個(gè)平臺(tái)帶來(lái)不穩(wěn)定的因素,另外還有些大批數(shù)據(jù)導(dǎo)入可能會(huì)帶來(lái)短時(shí)間的CPU、IO等壓力,這些操作我們都需要監(jiān)控到,避免帶來(lái)不必要的麻煩,目前我們是通過(guò)FileBeat去采集FE上審計(jì)日志信息,然后插入ClickHouse,然后在Grafana上展示出來(lái),對(duì)這些SQL進(jìn)行分析和監(jiān)控,以便可以更好的進(jìn)行優(yōu)化。

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

StarRocks作為新一代極速全場(chǎng)景MPP數(shù)據(jù)庫(kù),引入了StarRocks之后,實(shí)現(xiàn)了統(tǒng)一存儲(chǔ),統(tǒng)一服務(wù),并且在多種場(chǎng)景下表現(xiàn)出色,幫我們實(shí)現(xiàn)了產(chǎn)出價(jià)值最大化。未來(lái)我們對(duì)StarRocks也進(jìn)行了一定的規(guī)劃:

根據(jù)業(yè)務(wù)場(chǎng)景不同,對(duì)響應(yīng)時(shí)間要求不同,搭建多套StarRocks集群,進(jìn)行物理資源隔離。

將更多的在線(xiàn)實(shí)時(shí)任意多維度分析業(yè)務(wù)遷移到StarRocks,打造統(tǒng)一的實(shí)時(shí)數(shù)倉(cāng)平臺(tái)。

數(shù)倉(cāng)體系升級(jí)加速,提升用戶(hù)極速體驗(yàn),探索使用StarRocks打造實(shí)時(shí)數(shù)倉(cāng)和離線(xiàn)數(shù)倉(cāng)融合和一體化建設(shè)。

打通數(shù)據(jù)接入平臺(tái)和數(shù)據(jù)開(kāi)發(fā)平臺(tái),完善運(yùn)維監(jiān)控體系,保證大數(shù)據(jù)基礎(chǔ)服務(wù)的穩(wěn)定性。(作者:余榮幸,信也科技大數(shù)據(jù)資深專(zhuān)家)

來(lái)源:中國(guó)資訊報(bào)道網(wǎng)


責(zé)任編輯:侯哲
熱門(mén)評(píng)論
互聯(lián)網(wǎng)新聞信息服務(wù)許可證10120170072
京公網(wǎng)安備 11010502045281號(hào)
違法和不良信息舉報(bào)電話(huà):010-65669841
舉報(bào)郵箱:xxjb@huaxia.com

網(wǎng)站簡(jiǎn)介 / 廣告服務(wù) / 聯(lián)系我們

主辦:華夏經(jīng)緯信息科技有限公司   版權(quán)所有 華夏經(jīng)緯網(wǎng)

Copyright 2001-2024 By 612g.cn