您好,登錄后才能下訂單哦!
盒馬基于DataWorks 搭建數(shù)據(jù)中臺的實(shí)踐是怎樣的,相信很多沒有經(jīng)驗(yàn)的人對此束手無策,為此本文總結(jié)了問題出現(xiàn)的原因和解決方法,通過這篇文章希望你能解決這個(gè)問題。
大家做數(shù)據(jù)的話,首先很重要的一點(diǎn)就是一定要懂業(yè)務(wù)。之前有位同學(xué)問我,說數(shù)據(jù)中臺很難建。在我們看來,數(shù)據(jù)是跟業(yè)務(wù)息息相關(guān)的,我們?nèi)?gòu)建整個(gè)數(shù)據(jù)中臺的時(shí)候,首先要對業(yè)務(wù)有一個(gè)非常深刻的理解。盒馬是近兩三年阿里出現(xiàn)的一個(gè)新的業(yè)務(wù),有一些同學(xué)應(yīng)該體驗(yàn)過,包括北京、上海等中國一線二線的城市都覆蓋了盒馬鮮生的門店。
上圖就是盒馬商業(yè)模式的架構(gòu)圖,業(yè)務(wù)圍繞主要是兩點(diǎn),一個(gè)是線上,一個(gè)是線下。盒馬的業(yè)務(wù)雖然叫做O2O,但是比較有意思的一個(gè)點(diǎn)是,盒馬的O2O跟早期的O2O是不一樣的。以前O2O叫 Online to Offline,盒馬的O2O是什么?是Offline to Online,目標(biāo)要把線下的流量引入到線上,用線下的體驗(yàn)去讓用戶愿意到線上去購買,并且保證線下的品質(zhì)跟線上的品質(zhì)是一樣的,不會出現(xiàn)線上是一個(gè)電商特供版,看似很便宜,但是你拿到的東西和線下是不一樣的。
基于我們O2O的業(yè)務(wù)架構(gòu),同時(shí)盒馬的客戶群體是很有意思的。他們大部分是以家庭為單位的,就像我買盒馬的時(shí)候,我的女兒、我的父母也都喜歡盒馬,我是一個(gè)線上客戶,可以在線上下單。那像老一輩他不會去用APP購物的時(shí)候,他就會到線下去購買,他買的東西是跟我一樣的,包括我女兒,她可能不會購物,但是盒馬有餐飲,她很喜歡去盒馬吃海鮮,通過這種業(yè)務(wù)的閉環(huán)與傳承性,來保證業(yè)務(wù)的發(fā)展與口碑。
盒馬定了這種商業(yè)模式之后,需要開始構(gòu)建它的業(yè)務(wù)架構(gòu),那么這個(gè)架構(gòu)應(yīng)該是什么樣子?第一它要做線上線下的一體化,保證020的目標(biāo)。同時(shí)確認(rèn)了這是一個(gè)生鮮電商的業(yè)務(wù),生鮮電商基本上跟傳統(tǒng)的標(biāo)品電商做了一個(gè)差異化的區(qū)分。第三個(gè)是多功能門店,能夠融合銷售展示、倉儲、分揀、線上等業(yè)務(wù)形態(tài)。第四是限時(shí)配送:三公里30分鐘,其實(shí)打破了之前電商平臺引以為豪的當(dāng)日達(dá)跟次日達(dá)這種物流,直到目前盒馬這種限時(shí)配送在業(yè)界還是屬于比較領(lǐng)先的。第五就是盒馬的外賣,今天你非常想吃一個(gè)東西,但是你又不會做飯,盒馬會幫你把這個(gè)東西做好,或者你會做菜,但是你不會殺魚,或者是殺雞之類的,盒馬會幫你把這個(gè)做好,然后再幫你送過去。最后還有很重要一點(diǎn),因?yàn)槲覀兲岬搅碎T店的價(jià)值,盒馬的門店不是傳統(tǒng)的購物,它有一個(gè)倉的設(shè)置,剛才說的可以做線上和線下,你線下去看的是門店,對于線上來說他就是個(gè)倉。
確定業(yè)務(wù)模式后,我們要做技術(shù)架構(gòu)的設(shè)計(jì)。其實(shí)早期盒馬有過一定的糾結(jié),因?yàn)榘l(fā)現(xiàn)做零售,做門店,做商超,很多傳統(tǒng)的軟件廠商有一個(gè)現(xiàn)成的軟件體系,比如說ERP、WMS。那我們是不是買一套就可以了?但是當(dāng)時(shí)盒馬是堅(jiān)定了所有的產(chǎn)品技術(shù)的業(yè)務(wù)系統(tǒng),包括數(shù)字化系統(tǒng)都要自建。因?yàn)楹旭R需要對很多傳統(tǒng)業(yè)務(wù)做了一個(gè)全面的數(shù)字化,包括交易、門店、倉儲、運(yùn)配、采購、供應(yīng)鏈、勞動力等等。
現(xiàn)在傳統(tǒng)的ERP軟件或者是物流軟件,它也做了數(shù)字化,但是很重要區(qū)別是,我們做數(shù)字化不是只是為了簡單的數(shù)字化,把數(shù)據(jù)結(jié)構(gòu)化,更重要的是為上層策略層進(jìn)行一個(gè)非常重要的支撐,我們對流量、物流履約、流程優(yōu)化、財(cái)務(wù)策略進(jìn)行了一個(gè)非常好的智能化的支持。在這里我可以稍微分享一下,我們之前也調(diào)研過一些線下有門店的大型零售商超企業(yè),他們也做線上的APP,但他們的庫存線上線下是隔離的,如果你總共有100條魚,他會預(yù)先分配好,線上只賣10條,賣完之后線上就沒有了,而盒馬這100條是線上和線下先到先得,不會去分兩撥。通過這種策略模式,基本上就把整個(gè)線下線上的數(shù)據(jù)和商品全部打通。
再一個(gè)很重要的一點(diǎn),剛才講的一些業(yè)務(wù),你會發(fā)現(xiàn)在阿里的很多業(yè)務(wù)團(tuán)隊(duì)是分開的,比如菜鳥只負(fù)責(zé)物流,淘寶只負(fù)責(zé)營銷和交易,目前整個(gè)經(jīng)濟(jì)體的業(yè)務(wù)都在走向融合。但是盒馬為了去完成自己的業(yè)務(wù)閉環(huán),所有的系統(tǒng)從交易門店、倉儲運(yùn)費(fèi)、采購供應(yīng)鏈、勞動力全部是自建,并且能讓他們通過一個(gè)協(xié)同層把所有的業(yè)務(wù)打通,我們有生意計(jì)劃、供應(yīng)鏈管理、協(xié)同管理、全渠道多業(yè)態(tài),并且提供了一個(gè)閉環(huán)的解決方案。
閉環(huán)中非常重要的一點(diǎn)是最右側(cè)的一個(gè)數(shù)據(jù)層,如果沒有我們統(tǒng)一的數(shù)據(jù)中臺建設(shè),是很難去支撐整個(gè)企業(yè)工程的,這也是我今天會重點(diǎn)跟大家介紹的這部分。
我們說到數(shù)據(jù)中臺,其實(shí)在阿里巴巴,數(shù)據(jù)中臺不僅是一個(gè)解決方案,它也是一個(gè)團(tuán)隊(duì)的職能,在盒馬是有一個(gè)獨(dú)立的數(shù)據(jù)中臺團(tuán)隊(duì)去支持這塊業(yè)務(wù)的。我們是把數(shù)據(jù)作為一種資產(chǎn),跟盒馬的商品、會員,包括設(shè)備是同樣重要的。盒馬數(shù)據(jù)中臺的同學(xué),他們是資產(chǎn)的建設(shè)者、管理者和運(yùn)營者,并且要通過這些資產(chǎn)去驅(qū)動整個(gè)零售供應(yīng)鏈全鏈路、智能化的升級。其中最主要的是我們會去采集、管理、建設(shè)這份數(shù)據(jù),并且能讓這份數(shù)據(jù)在業(yè)務(wù)上能更好的使用起來。
上圖是盒馬的數(shù)據(jù)平臺的一個(gè)整體架構(gòu),這部分會有一定的特殊性,也有一些通用性。
首先說一下通用性,我們整個(gè)基礎(chǔ)設(shè)施是跟阿里巴巴集團(tuán)所有的部門是一樣的,采用的是阿里云的基礎(chǔ)設(shè)施,并且在整個(gè)數(shù)據(jù)分層這邊,我們有源數(shù)據(jù),源數(shù)據(jù)基本上都是來自于業(yè)務(wù)系統(tǒng)。接入層這邊相對來說盒馬會比較復(fù)雜一點(diǎn),剛才說的盒馬是全渠道,我們有APP,有線下,還有我們配送員的電動車,還有盒馬內(nèi)部的一些懸掛鏈、iot、APP、人力資源等,所以這里面就會出現(xiàn)很多結(jié)構(gòu)化和非結(jié)構(gòu)化的數(shù)據(jù),我們通過數(shù)據(jù)加工層去把我們非結(jié)構(gòu)化的數(shù)據(jù)進(jìn)行一定的加工,最終會形成非常重要的數(shù)據(jù)資產(chǎn)層。
數(shù)據(jù)資產(chǎn)層構(gòu)建之后就會有一定的業(yè)務(wù)含義,這部分?jǐn)?shù)據(jù)是可以直接被業(yè)務(wù)去使用的。但是我們在這個(gè)數(shù)據(jù)資產(chǎn)層上又會去定一層數(shù)據(jù)服務(wù),讓數(shù)據(jù)使用起來會更方便,就是開箱即用。還有一塊,到了服務(wù)這一層,他可能還是個(gè)無形的,之前有同學(xué)也問我,說今天我們希望業(yè)務(wù)用戶能直接去用數(shù)據(jù),而不是說去到很多表里面去查數(shù)據(jù),這方面盒馬用的是數(shù)據(jù)應(yīng)用層,我們會建立很多數(shù)據(jù)產(chǎn)品,通過產(chǎn)品化的方式給業(yè)務(wù)去提供真正的數(shù)據(jù)使用。最后我們盒馬這邊產(chǎn)品形式會特別多,我們在不同的端通過PC、釘釘、掌中寶,還有很多iot的小設(shè)備,深圳可能就是一個(gè)小的黑白的屏幕,都會有數(shù)據(jù)的透傳。并且在最右側(cè)我們有一套管理體系,通過這種管理體系,讓我們整個(gè)運(yùn)營和運(yùn)維可以有效地執(zhí)行起來。那么這種架構(gòu)圖,就是盒馬理解的一個(gè)偏業(yè)務(wù)型的數(shù)據(jù)中臺分層架構(gòu)圖。
那么基于這種業(yè)務(wù)型的數(shù)據(jù)中臺分層架構(gòu),我們又設(shè)計(jì)了一套數(shù)據(jù)中臺技術(shù)架構(gòu)。其實(shí)大家做過大數(shù)據(jù)的話,在數(shù)據(jù)采集的時(shí)候經(jīng)常會碰到,我同時(shí)有離線和在線的計(jì)算,那么離線計(jì)算我們基于MaxCompute,阿里巴巴幾乎所有的離線數(shù)據(jù)都放在MaxCompute上,2020年雙11 MaxCompute每日數(shù)據(jù)處理量超過1000PB,達(dá)到EB級。實(shí)時(shí)計(jì)算我們是基于Flink,計(jì)算的性能也非常強(qiáng)大。還有一塊是我們要去做數(shù)據(jù)的存儲,存儲里面其實(shí)盒馬這邊會比較重地依賴在線存儲,譬如說Lindorm就是kv,還有MMaxCompute交互式分析(Hologres)以及在線搜索Elasticsearch,并且我們會把這些存儲變成一個(gè)個(gè)數(shù)據(jù)服務(wù)。數(shù)據(jù)服務(wù)的話就會有指標(biāo)明細(xì),還有特征、標(biāo)簽等等,這些數(shù)據(jù)我們會推廣到運(yùn)營最常使用的一些設(shè)備、運(yùn)營平臺、釘釘移動辦公、智能化管理等,這些更多是runtime層面的。我們在整個(gè)集市運(yùn)營層面,有元數(shù)據(jù)、數(shù)據(jù)質(zhì)量、容災(zāi)管控、數(shù)據(jù)治理等等。這個(gè)技術(shù)架構(gòu)圖,我們更多的是當(dāng)成一個(gè)技術(shù)需求架構(gòu)圖,是我們技術(shù)團(tuán)隊(duì)在做數(shù)據(jù)中臺的時(shí)候需要去做的一些事情。
當(dāng)我們盒馬的商業(yè)模式,業(yè)務(wù)產(chǎn)品技術(shù)架構(gòu),以及數(shù)據(jù)中臺的技術(shù)需求整理之后,我們要開始做一個(gè)數(shù)據(jù)中臺的技術(shù)選型,或者是做一個(gè)技術(shù)調(diào)研,什么樣的產(chǎn)品什么樣的系統(tǒng)可以去支撐我們整套技術(shù)架構(gòu)。之前說到我們的業(yè)務(wù)系統(tǒng)是自研的,但我們整個(gè)數(shù)據(jù)中臺的技術(shù)盒馬最終選擇是不自研,因?yàn)榘⒗镌粕弦呀?jīng)有非常成熟的產(chǎn)品體系讓我們?nèi)?gòu)建盒馬自己的數(shù)據(jù)中臺。大數(shù)據(jù)計(jì)算引擎我們使用的是集團(tuán)一直在使用的MaxCompute,那么構(gòu)建數(shù)據(jù)中臺的數(shù)據(jù)開發(fā)與治理工具我們做了調(diào)研,最終選擇了DataWorks,下面就是DataWorks的整體架構(gòu)圖:
DataWorks對外提供了數(shù)據(jù)集成,它有很多這種批量、增量、實(shí)時(shí)、整庫的數(shù)據(jù)集成,能夠支持盒馬這么多且復(fù)雜的數(shù)據(jù)源,目前DataWorks數(shù)據(jù)集成離線支持50+種數(shù)據(jù)源,實(shí)時(shí)支持10+種數(shù)據(jù)源,無論數(shù)據(jù)源在公網(wǎng)、IDC、VPC內(nèi)等環(huán)境,都可以做到安全、穩(wěn)定。靈活、快速的數(shù)據(jù)集成。DataWorks還有一套元數(shù)據(jù)統(tǒng)一管理服務(wù),支持統(tǒng)一的任務(wù)調(diào)度、同時(shí)提供了非常豐富的一站式的數(shù)據(jù)開發(fā)工具,覆蓋了數(shù)據(jù)開發(fā)的整個(gè)生命周期表,極大地提高了我們的數(shù)據(jù)開發(fā)效率。上層還包括了數(shù)據(jù)治理、數(shù)據(jù)服務(wù)等,并且它提供了很重要的開放平臺。因?yàn)橹罢f到盒馬是一個(gè)非常獨(dú)立、豐富的業(yè)務(wù),很多業(yè)務(wù)系統(tǒng)都是自研的,有自己的研發(fā)團(tuán)隊(duì),我們需要通過DataWorks OpenAPI對很多功能做一個(gè)二次的加工以及和各種自研系統(tǒng)、項(xiàng)目系統(tǒng)的集成,目前DataWorks提供的100多個(gè)OpenAPI可以讓我們非常簡單地去實(shí)現(xiàn)這個(gè)需求。
那么我們再看一下這個(gè)數(shù)據(jù)中臺技術(shù)需求圖,我們?nèi)ジ鶧ataWorks做一個(gè)比對,數(shù)據(jù)采集部分對應(yīng)了DataWorks提供的數(shù)據(jù)集成,基本上我們左邊的這些數(shù)據(jù)同步的需求DataWorks都可以滿足。
還有我們做數(shù)據(jù)開發(fā),在數(shù)據(jù)開發(fā)層,DataWorks通過它的DataStudio、HoloStudio和StreamStudio可以同時(shí)完成我們的流、批、實(shí)時(shí)的開發(fā),并且它還提供了數(shù)據(jù)服務(wù)跟開放接口的功能,可以通過OpenAPI的方式跟我們現(xiàn)有的系統(tǒng)和產(chǎn)品做一個(gè)集成,還有很關(guān)鍵的一點(diǎn),DataWorks提供了數(shù)據(jù)地圖和數(shù)據(jù)治理的能力,這兩個(gè)功能看似是邊緣功能,但是在我們盒馬甚至在阿里巴巴起到了一個(gè)非常關(guān)鍵的作用,這塊我們后面會繼續(xù)展開。
前面我們更多地可以看成是數(shù)據(jù)中臺的準(zhǔn)備過程,我們了解了業(yè)務(wù),做了設(shè)計(jì),并且做了一個(gè)技術(shù)選型,那么接下來在阿里做事情很重要一點(diǎn)就是做之前要確定一個(gè)明確的目標(biāo),目標(biāo)不代表KPI,他也有可能是一個(gè)使命或者初衷。盒馬數(shù)據(jù)中臺的目標(biāo)是什么?盒馬的數(shù)據(jù)中臺是要建立一個(gè)數(shù)據(jù)豐富,全鏈路多維度,質(zhì)量可靠(就是口徑要標(biāo)準(zhǔn),結(jié)果要準(zhǔn)確),并且要運(yùn)行穩(wěn)定,產(chǎn)出及時(shí)無故障的一個(gè)中間層,很多人會說這是個(gè)數(shù)據(jù)集市,沒關(guān)系,它就是個(gè)中間層。還有很重要一點(diǎn)是我們要為上層業(yè)務(wù)提供可靠的數(shù)據(jù)服務(wù),數(shù)據(jù)產(chǎn)品及業(yè)務(wù)應(yīng)用,其實(shí)這就限定了它不是一個(gè)簡單的數(shù)倉,也不是一個(gè)簡單的數(shù)據(jù)集市,而是一個(gè)數(shù)據(jù)中臺,是可被業(yè)務(wù)去不斷使用的數(shù)據(jù)中臺。如果我們只是把數(shù)據(jù)同步加工,放到MaxCompute或者開源的Hadoop或者一個(gè)數(shù)據(jù)庫里面,那他還只是個(gè)倉。數(shù)據(jù)中臺我們定義是可被業(yè)務(wù)直接去使用的,甚至是要給業(yè)務(wù)帶來業(yè)務(wù)價(jià)值的,才叫數(shù)據(jù)中臺。
定義這樣一個(gè)目標(biāo)之后,我們要開始做一個(gè)分步拆解,我們主要做什么?首先要做一個(gè)指標(biāo)體系的設(shè)計(jì),因?yàn)闃I(yè)務(wù)去使用不是一個(gè)表的字段,需要有一個(gè)數(shù)據(jù)模型設(shè)計(jì)的支撐,讓我們?nèi)グ褦?shù)據(jù)變得更標(biāo)準(zhǔn),并且我們還要去做數(shù)據(jù)處理任務(wù)的開發(fā)。今天我們有一些智能化構(gòu)建數(shù)倉的方式,但這可能更多的是一個(gè)未來,現(xiàn)在我們不得不面臨一個(gè)問題,我們還是靠人工靠人肉去做數(shù)據(jù)開發(fā)。并且我們要把這些數(shù)據(jù)通過數(shù)據(jù)服務(wù)的方式開放出去,讓業(yè)務(wù)去使用,數(shù)據(jù)服務(wù)的形式不限于 Table、API和Report,甚至是一個(gè)產(chǎn)品或者其他的任何一個(gè)東西。
上圖可能是大家在網(wǎng)上看到最多的關(guān)于數(shù)據(jù)模型或者數(shù)據(jù)集市構(gòu)建的分層圖,那就是老生常談,ODS、DWD、DWS和ADS。其實(shí)雖然有很多概念和理念,但是每個(gè)人對這層的理解是不一樣的,盒馬有一套自己非常嚴(yán)格清晰的定義,每一層要有每層自己的一個(gè)特點(diǎn)和職責(zé)。簡單概述的話,ADS一定要是面向業(yè)務(wù)的,不是面向開發(fā)的,你這部分?jǐn)?shù)據(jù)讓業(yè)務(wù)能最短的時(shí)間去理解,甚至直接使用,還有DWS必須是指標(biāo),也是我剛才前面講的指標(biāo)體系的一個(gè)承載體,都由DWS去做,DWS匯總基本上就是ADS的支撐。還有一層是DWD,就是我們經(jīng)常說的明細(xì)層,明細(xì)層怎么建呢?我們采用的是維度建模的方式,我們有維表,有事實(shí)表,那維表也有很多層級維度,比如枚舉維度,事實(shí)表我們有周期快照。當(dāng)然在這里有一個(gè)很重要的點(diǎn),DWD的字段必須是可被直接理解的,不要有二義性,一旦有二義性的時(shí)候,DWS使用的時(shí)候會有問題,會導(dǎo)致整個(gè)上游應(yīng)用都有問題。ODS基本上大家理解應(yīng)該都保持一致,就是業(yè)務(wù)數(shù)據(jù)直接同步過來。但是現(xiàn)在有一些架構(gòu)的演變,大家喜歡在ODS做一個(gè)初步的ETL處理,這樣會導(dǎo)致ODS的數(shù)據(jù)跟我們業(yè)務(wù)的數(shù)據(jù)不一致。其實(shí)在盒馬是不允許這樣做的,原因很簡單,我們要保證我們的ODS跟業(yè)務(wù)庫是保持一致的,這樣當(dāng)我們出現(xiàn)問題的時(shí)候,我們能很快定位到問題的原因。一旦做了ETL,有可能ETL的過程是有bug的,會導(dǎo)致兩邊數(shù)據(jù)不一致。所以盒馬是嚴(yán)格要求從業(yè)務(wù)庫的數(shù)據(jù)到ODS是不允許做任何的邏輯的處理。如果出現(xiàn)問題,只能是中間件或者是其他的任何存儲出了問題導(dǎo)致的,不應(yīng)該是業(yè)務(wù)邏輯導(dǎo)致的。
前面更多的是講盒馬這邊的一些數(shù)據(jù)中臺建設(shè)的思想、設(shè)計(jì)、架構(gòu)和一些目標(biāo)及要求,接下來我會去講盒馬如何使用DataWorks構(gòu)建數(shù)據(jù)中臺以及在使用DataWorks平臺的一些心得。DataWorks這個(gè)平臺不僅僅是給盒馬用的,還有阿里巴巴集團(tuán)幾乎所有的業(yè)務(wù)部門,每天集團(tuán)內(nèi)部有數(shù)萬名運(yùn)營小二/產(chǎn)品經(jīng)理/數(shù)據(jù)工程師/算法工程師/研發(fā)等在使用DataWorks,同時(shí)DataWorks還服務(wù)大量阿里云上的用戶。所以它的設(shè)計(jì)很多是偏向于開放的、通用的、靈活的。這個(gè)時(shí)候我們在使用的時(shí)會導(dǎo)致一些過于靈活或者是沒有標(biāo)準(zhǔn)出現(xiàn)等一系列的問題,后面的內(nèi)容就會針盒馬的一些經(jīng)驗(yàn)和大家分享當(dāng)時(shí)的一些心得。
首先數(shù)據(jù)同步是建數(shù)據(jù)中臺的第一步,如果數(shù)據(jù)進(jìn)不了倉,那么數(shù)據(jù)中臺就沒辦法構(gòu)建。盒馬在做數(shù)據(jù)同步的時(shí)候,會有幾個(gè)要求,比如盒馬的所有業(yè)務(wù)數(shù)據(jù)都是統(tǒng)一同步到一個(gè)項(xiàng)目,并且只同步一份,不允許重復(fù)同步,這樣的話方便我們管理,減少成本,同時(shí)保證了數(shù)據(jù)不要有二義性。數(shù)據(jù)源出問題了,那后邊數(shù)據(jù)就都有錯,所以我們一定要保證數(shù)據(jù)源100%正確。然后從數(shù)據(jù)回溯與審計(jì)考慮,數(shù)據(jù)生命周期設(shè)置的是一個(gè)永久保存,哪怕業(yè)務(wù)系統(tǒng)因?yàn)橐恍┚€上庫的流量問題,會有一些歸檔、刪除,但當(dāng)他們想再使用歷史數(shù)據(jù)的時(shí)候,可以通過ODS這層原封不動地再還原回去。
第二塊就是數(shù)據(jù)開發(fā),數(shù)據(jù)開發(fā)這部分基本上是很考驗(yàn)個(gè)人能力的,基本上大家都是使用SQL。我們對于數(shù)據(jù)開發(fā)這部分是有一定的心得,簡單來說就是數(shù)據(jù)處理過程是業(yè)務(wù)邏輯的實(shí)現(xiàn),既要保證業(yè)務(wù)邏輯的正確性,也要保證數(shù)據(jù)產(chǎn)出的穩(wěn)定性、時(shí)效性和合理性。DataWorks進(jìn)行數(shù)據(jù)開發(fā)的編輯器,除了提供了比較好的coding能力以外,也提供了一些處理流程的可視化的方式,幫助我們?nèi)プ鲆恍ヽode review,甚至一些校驗(yàn),這個(gè)功能在我們?nèi)粘J褂弥惺欠浅S袔椭摹?/p>
整個(gè)數(shù)據(jù)開發(fā)的過程,因?yàn)槲冶旧硪彩亲?Java的同學(xué),我們知道每一種編程都有一定的編程范式,我們在整個(gè)數(shù)據(jù)開發(fā)的過程中也去抽象了幾個(gè)步驟,首先是一個(gè)代碼轉(zhuǎn)換,這個(gè)代碼轉(zhuǎn)換主要是干什么用的?剛才講過業(yè)務(wù)系統(tǒng)很多是為了完成一個(gè)業(yè)務(wù)流程,它有很多這種個(gè)性化的處理,尤其是大家做互聯(lián)網(wǎng),為了解決一些性能問題或者是filter的問題,會做一些Json字段,媒體字段、分隔符等等,這樣的內(nèi)容會出現(xiàn)二義性。我們在開發(fā)中會有個(gè)代碼轉(zhuǎn)換,比如說把一些枚舉的東西轉(zhuǎn)成一個(gè)實(shí)際會看得懂的東西,譬如說0到底是什么?2是什么?或者a是什么?我們會做代碼轉(zhuǎn)換。還有個(gè)格式轉(zhuǎn)換,我們有一些業(yè)務(wù)系統(tǒng),它很難標(biāo)準(zhǔn),譬如說時(shí)間,有的是用的是timestamp,有的是存字符串,有的是存yymm這些,雖然它們都代表時(shí)間,但是格式不一樣,在數(shù)據(jù)集市的構(gòu)建過程中,它一定要求里面的數(shù)據(jù)格式必須是一致的,我們會去把非標(biāo)準(zhǔn)的數(shù)據(jù)格式通過格式轉(zhuǎn)換的方式變成一個(gè)標(biāo)準(zhǔn)的格式。
還有一個(gè)是業(yè)務(wù)判斷,業(yè)務(wù)判斷這里邊基本上就是通過條件的方式得出一個(gè)業(yè)務(wù)結(jié)果。舉個(gè)例子,年輕人在業(yè)務(wù)系統(tǒng)里面肯定不會算一個(gè)叫“年輕人”這樣的字段或業(yè)務(wù)邏輯,如果有年齡數(shù)據(jù),那么我們在梳理的時(shí)候會說小于30歲的我們叫年輕人等等,這個(gè)就是我們說的業(yè)務(wù)判斷。數(shù)據(jù)連接這塊,基本上很簡單,就是一個(gè)表關(guān)聯(lián)去補(bǔ)數(shù)據(jù)。另外一個(gè)數(shù)據(jù)聚合,我們在做DWS的時(shí)候會大量用到數(shù)據(jù)聚合的這部分。還有數(shù)據(jù)過濾,我們經(jīng)常會碰到一些無效的數(shù)據(jù),我們通過數(shù)據(jù)庫這個(gè)方式把這些無效的數(shù)據(jù)給處理掉。再一個(gè)是條件選擇,這個(gè)條件選擇基本上也就是一些when的東西,跟數(shù)據(jù)過濾稍微有點(diǎn)相似。最后是業(yè)務(wù)解析,其實(shí)業(yè)務(wù)解析是我們最經(jīng)常用到的,因?yàn)楝F(xiàn)在NoSQL或者是MySQL也支持了,甚至有一些業(yè)務(wù)團(tuán)隊(duì)用了Mongo,那一個(gè)大字段里邊有很多業(yè)務(wù)表示,我們這幾年在數(shù)據(jù)集市做DWD的時(shí)候,一定要把這種Json字段或者map字段的格式全部解析成固定的列字段。因?yàn)閯偛盼覀冋f過它的內(nèi)容必須要一致的,讓用戶直接可以看到。在這里面分享個(gè)心得,就是業(yè)務(wù)邏輯會盡量收口在數(shù)據(jù)明細(xì)層,目的是保證數(shù)據(jù)的一致性,簡化下游使用。源頭上的變化,也可以通過代碼或格式等轉(zhuǎn)換,保證明細(xì)層結(jié)構(gòu)的穩(wěn)定性,避免給下游帶來更多的變化。好的模型也需要上游業(yè)務(wù)系統(tǒng)協(xié)同開發(fā),一要業(yè)務(wù)系統(tǒng)有合理的設(shè)計(jì),二要變更能及時(shí)的感知,就是說數(shù)據(jù)中臺的建設(shè)不是數(shù)據(jù)團(tuán)隊(duì)一個(gè)團(tuán)隊(duì)的事情,也要跟業(yè)務(wù)團(tuán)隊(duì)去做一個(gè)聯(lián)動和共創(chuàng)。
剛才講的這些部分更多的是開發(fā)階段,如果DataWorks只完成這些的話,我們認(rèn)為它就是一個(gè)IDE,但是DataWorks是一個(gè)一站式大數(shù)據(jù)開發(fā)治理平臺,開發(fā)平臺很重要一點(diǎn)是它要去保證它的運(yùn)行,如何去保證我們做數(shù)據(jù)開發(fā)的代碼能運(yùn)行起來?就是通過DataWorks的任務(wù)調(diào)度。盒馬的業(yè)務(wù)是非常復(fù)雜的,有30分鐘送達(dá),還有次日達(dá)、三日達(dá),還有一些預(yù)售預(yù)購等等。這些如果是簡單的調(diào)度系統(tǒng)可能就支持不了,DataWorks這邊比較好的一點(diǎn)是,它提供了非常靈活的任務(wù)調(diào)度的周期選擇,比如說月、周、日。盒馬的業(yè)務(wù)是一個(gè)閉環(huán),他每個(gè)業(yè)務(wù)是有相關(guān)性的,那么反過來盒馬的數(shù)據(jù)任務(wù)也是有相關(guān)性的,這個(gè)時(shí)候整個(gè)盒馬的任務(wù)調(diào)度鏈路是非常復(fù)雜的。
在整個(gè)過程里面,盒馬也有很多嘗試、創(chuàng)新,也踩過了很多坑,這邊就給大家分享一下,就是DataWorks任務(wù)節(jié)點(diǎn)未起調(diào)或者在錯誤的時(shí)間起調(diào)都可能出現(xiàn)數(shù)據(jù)缺失或者是錯誤。這里就要保證我們數(shù)據(jù)開發(fā)對于每個(gè)線上任務(wù)的任何問題都要及時(shí)處理,因?yàn)槊總€(gè)問題都會造成一個(gè)數(shù)據(jù)的問題。合理的調(diào)度策略既可以保障數(shù)據(jù)產(chǎn)出的正確性,也可以保障數(shù)據(jù)產(chǎn)出的及時(shí)性。我們希望他一天產(chǎn)出,那就不要把它變成一小時(shí),我們就按一天就可以了,如果三天就是三天。
通過這幾步,正常情況下,就是我們一個(gè)項(xiàng)目或者一個(gè)需求,按照這種方式去完成,我們認(rèn)為一個(gè)數(shù)據(jù)開發(fā)工程師的任務(wù)就結(jié)束了。但是一般情況下不是這個(gè)樣子的,因?yàn)閿?shù)據(jù)中臺是一個(gè)偏商業(yè)化的事情,所以說它一旦出問題,在阿里的話,影響是特別大的。業(yè)務(wù)線它有核心系統(tǒng)、非核心系統(tǒng),部門核心系統(tǒng)、集團(tuán)核心系統(tǒng),通過這種方式有不同的保障,還有業(yè)務(wù)團(tuán)隊(duì)有p1、p2、p3、p4的方式去定義故障總級。數(shù)據(jù)業(yè)務(wù)跟正常業(yè)務(wù)系統(tǒng)不太一樣,我們這邊是依托了DataWorks來去做整個(gè)線上大數(shù)據(jù)業(yè)務(wù)任務(wù)的穩(wěn)定性保障。其中DataWorks這邊提供了很重要的一個(gè)模塊,就是數(shù)據(jù)質(zhì)量監(jiān)控。數(shù)據(jù)質(zhì)量監(jiān)控其實(shí)我們更多的是能及時(shí)去發(fā)現(xiàn)一些問題,保證當(dāng)業(yè)務(wù)有影響的時(shí)候,我們第一時(shí)間就知道。因?yàn)橛械臅r(shí)候業(yè)務(wù)使用還是有一定的延遲性的。這里面提供了很多能力,比如說數(shù)據(jù)質(zhì)量的一些監(jiān)控,數(shù)據(jù)質(zhì)量監(jiān)控的目的是保障數(shù)據(jù)產(chǎn)出的正確性,并且監(jiān)控范圍一定要比較全,不僅限于表大小的變化,函數(shù)的變化,字段枚舉值和一些主鍵的沖突,甚至一些非法格式,并且很重要一點(diǎn)就是異常值會觸發(fā)報(bào)警或中斷數(shù)據(jù)處理過程,然后值班人員要第一時(shí)間介入。
上面講的是監(jiān)控的問題,但是一旦監(jiān)控很多就會導(dǎo)致監(jiān)控泛濫,會有很多預(yù)警報(bào)警出來,那么DataWorks也提供了另一種能力,就是任務(wù)基線的管理。我剛才講過業(yè)務(wù)有分級,我們線上業(yè)務(wù)也有一些重要性和非重要性的任務(wù),我們通過這種基線的方式去把這些任務(wù)進(jìn)行一個(gè)隔離?;€這邊盒馬的經(jīng)驗(yàn)就是:基線是保障數(shù)據(jù)資產(chǎn)的及時(shí)產(chǎn)出,優(yōu)先級決定了系統(tǒng)硬件資源的保障力度,也決定了運(yùn)營人員值班的保障力度,最重要的業(yè)務(wù)一定要放8級基線,這樣會保證你的最重要的任務(wù)第一時(shí)間產(chǎn)出。并且DataWorks有一個(gè)很好的功能,DataWorks提供了一些回刷工具,當(dāng)我的基線出問題或者破線的時(shí)候,可以通過回刷工具快速地把數(shù)據(jù)回刷出來,并且DataWorks智能監(jiān)控功能會通過一些基線下的任務(wù)狀態(tài)和歷史的運(yùn)行時(shí)長等,去幫你提前預(yù)估出是否存在破線的風(fēng)險(xiǎn),這種智能化地監(jiān)控與風(fēng)險(xiǎn)的預(yù)估還是非常有用的。
那么做好數(shù)據(jù)質(zhì)量的監(jiān)控跟基線,基本上就保證了我們的大數(shù)據(jù)任務(wù)和業(yè)務(wù)的穩(wěn)定、正常地運(yùn)行,但是還有很重要的一點(diǎn)就是數(shù)據(jù)資產(chǎn)的治理。阿里巴巴是提倡數(shù)據(jù)的公司,它做轉(zhuǎn)變的一個(gè)非常大的里程碑就是阿里巴巴在數(shù)據(jù)方面的存儲和計(jì)算的硬件成本超過了業(yè)務(wù)系統(tǒng)的硬件成本。這也導(dǎo)致了阿里巴巴的CTO會去把數(shù)據(jù)資產(chǎn)治理作為它的一個(gè)非常核心的任務(wù)。DataWorks是整個(gè)阿里巴巴集團(tuán)數(shù)據(jù)使用的體量最大的平臺,甚至是一個(gè)唯一的平臺,而且也提供了數(shù)據(jù)資產(chǎn)的模塊叫UDAP,這里面基本上是可以通過多方面多維度,從項(xiàng)目到表甚至到個(gè)人,全局查看今天整個(gè)資源使用情況是什么樣的,并且很重要的一點(diǎn)是給你提供了一個(gè)健康分的概念。這個(gè)健康分可以綜合地看到每個(gè)業(yè)務(wù)部門內(nèi)每個(gè)個(gè)人的排名情況。做治理最簡單的方式就是先把頭部打掉,阿里是這么做的,先治理頭部健康分最低的,然后把健康分拉上來,整個(gè)水平就下來了。并且它提供了很多數(shù)據(jù)可視化的工具,可以讓你很快的看到治理的效果。盒馬在這方面做的一些心得:主要目標(biāo)是優(yōu)化存儲與計(jì)算,降低成本,提升資源使用率;技術(shù)團(tuán)隊(duì)會建很多項(xiàng)目空間,我們需要與技術(shù)團(tuán)隊(duì)共建,一起去完成數(shù)據(jù)治理。盒馬一些比較好用的手段就是無用的應(yīng)用要下線、表生命周期管理、重復(fù)計(jì)算治理、還有很重要的是計(jì)算資源暴力掃描,我們是嚴(yán)格禁止暴力掃描的。UDAP里面的一些功能我們現(xiàn)在在DataWorks的資源優(yōu)化模塊也能夠?qū)崿F(xiàn),比如一些重復(fù)表、重復(fù)數(shù)據(jù)開發(fā)與數(shù)據(jù)集成任務(wù)等。
做完以上這些,我們認(rèn)為數(shù)據(jù)中臺該做的事情就差不多了,最后還有很重要的一點(diǎn)就是數(shù)據(jù)安全管理。隨著互聯(lián)網(wǎng)的發(fā)展,中國應(yīng)該是持續(xù)基本上每一年都會出一個(gè)相關(guān)的網(wǎng)絡(luò)法,比如說電子商務(wù)法,然后還有網(wǎng)絡(luò)安全法等等,然后最近應(yīng)該是草擬數(shù)據(jù)安全法。作為一家企業(yè),對法律的遵守是特別重要的。DataWorks作為阿里大數(shù)據(jù)最統(tǒng)一的一個(gè)數(shù)據(jù)入口和出口,做了很多這種數(shù)據(jù)安全管理的手段,它可以從引擎層面進(jìn)行一個(gè)管控,并且通過項(xiàng)目層面進(jìn)行管控,同時(shí)可以到表層面,甚至到字段層面,在字段層面,每個(gè)字段它有等級,比如說有一些字段的等級是必須要到部門負(fù)責(zé)人或者是總裁層面才可以審批通過的,再比如說有一些我們認(rèn)為即使審批通過了,它也有一定的風(fēng)險(xiǎn)的時(shí)候,比如說身份證號碼,手機(jī)號碼等,我們會提供一種技術(shù)叫數(shù)據(jù)脫敏,這個(gè)數(shù)據(jù)被拿走是被脫敏過的,不影響你的統(tǒng)計(jì)或者分析,但是你不可見。
盒馬在數(shù)據(jù)安全治理這邊基本上跟集團(tuán)是比較類似的,阿里巴巴集團(tuán)有一套統(tǒng)一的數(shù)據(jù)管理方法,它是跟組織架構(gòu)打通的,我們員工離職或者轉(zhuǎn)崗,他的權(quán)限會自動收回。在任何企業(yè)包括阿里,他的人員變動是非常頻繁的,通過這樣的功能與體系,我們在保證數(shù)據(jù)安全的前提下去更好地應(yīng)用數(shù)據(jù)。
之前講的都是基于DataWorks來構(gòu)建盒馬的數(shù)據(jù)中臺,最早提到數(shù)據(jù)中臺一定要是服務(wù)業(yè)務(wù)的,我現(xiàn)在也介紹一下盒馬的數(shù)據(jù)中臺是如何為業(yè)務(wù)服務(wù)。很有幸我跟首義是見證了盒馬從0到1再到N家店快速發(fā)展的一個(gè)過程,一家企業(yè)它用數(shù)據(jù)的過程也是這樣由淺而深的過程。首先大家都一樣,最開始我只是看數(shù)據(jù),我有什么數(shù)據(jù),然后通過數(shù)據(jù)去看一些問題,做一些人工的輔助和決策,但是盒馬它的擴(kuò)張是特別快的,最多的時(shí)候一年開了100家店,當(dāng)它的業(yè)務(wù)形態(tài)發(fā)生變化,通過簡單的數(shù)據(jù)報(bào)表和數(shù)據(jù)可視化,是無法再支撐這個(gè)業(yè)務(wù)了。所以說我們也做了很多精細(xì)化的管控,比如說品類診斷、庫存健康,告訴這個(gè)業(yè)務(wù)你現(xiàn)在有哪些問題,而不是讓他們用報(bào)表去做再去發(fā)現(xiàn)問題。
看完上述內(nèi)容,你們掌握盒馬基于DataWorks 搭建數(shù)據(jù)中臺的實(shí)踐是怎樣的的方法了嗎?如果還想學(xué)到更多技能或想了解更多相關(guān)內(nèi)容,歡迎關(guān)注億速云行業(yè)資訊頻道,感謝各位的閱讀!
免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點(diǎn)不代表本網(wǎng)站立場,如果涉及侵權(quán)請聯(lián)系站長郵箱:is@yisu.com進(jìn)行舉報(bào),并提供相關(guān)證據(jù),一經(jīng)查實(shí),將立刻刪除涉嫌侵權(quán)內(nèi)容。