京東零售的指標(biāo)中臺(tái)建設(shè)
本文將分享京東零售在指標(biāo)中臺(tái)建設(shè)方面的實(shí)踐經(jīng)驗(yàn)。京東指標(biāo)中臺(tái)依據(jù)現(xiàn)代數(shù)據(jù)棧、Headless BI、數(shù)據(jù)虛擬化和數(shù)據(jù)編織等方法論,并結(jié)合自身了多運(yùn)營(yíng)模式,多運(yùn)營(yíng)視角,多數(shù)據(jù)維度等業(yè)務(wù)特點(diǎn),構(gòu)建了從指標(biāo)定義到指標(biāo)生產(chǎn)再到指標(biāo)消費(fèi)的全鏈路解決方案。指標(biāo)中臺(tái)技術(shù)不僅僅是一個(gè)技術(shù)實(shí)現(xiàn),更是一種組織和管理數(shù)據(jù)的戰(zhàn)略思維。指標(biāo)中臺(tái)技術(shù)是企業(yè)在數(shù)字化轉(zhuǎn)型過(guò)程中的一種重要策略,它通過(guò)構(gòu)建共享平臺(tái)來(lái)整合企業(yè)的核心能力,從而提升業(yè)務(wù)效率和市場(chǎng)響應(yīng)速度。隨著技術(shù)的發(fā)展和市場(chǎng)的變化,中臺(tái)技術(shù)將繼續(xù)演進(jìn),為企業(yè)帶來(lái)更多的創(chuàng)新和價(jià)值。
一、背景介紹
首先來(lái)介紹一下京東指標(biāo)中臺(tái)建設(shè)的背景。
1. 背景介紹-問(wèn)題定義
在建設(shè)指標(biāo)中臺(tái)之前,公司內(nèi)部已經(jīng)存在指標(biāo)系統(tǒng)、指標(biāo)平臺(tái)或者類似的產(chǎn)品的,但都可以歸為"指標(biāo)登記/注冊(cè)系統(tǒng)",這類系統(tǒng)會(huì)通常提供指標(biāo)查找,注冊(cè)等功能,希望可以達(dá)到指標(biāo)的統(tǒng)一維護(hù),一處注冊(cè),多處使用的效果,但因?yàn)楸旧淼亩ㄎ缓图軜?gòu)設(shè)計(jì)等問(wèn)題,逐漸都以失敗告終。這類系統(tǒng)通常會(huì)有以下幾類問(wèn)題:
(1)查找難
指標(biāo)難找的根源是定義的不夠清晰和準(zhǔn)確?!爸笜?biāo)登記系統(tǒng)”在找指標(biāo)的時(shí)候,往往只能通過(guò)一些關(guān)鍵字,例如“交易額”、“交易量”,來(lái)進(jìn)行搜索,會(huì)得到很多“相近”的結(jié)果,很難定位到最終想要的結(jié)果。存在很多“同名不同義”或“同義不同名”的指標(biāo)。
其次,即使可以找到,是否敢用?登記性質(zhì)的指標(biāo)系統(tǒng),指標(biāo)定義和指標(biāo)生產(chǎn)的割裂的,指標(biāo)的質(zhì)量很難保證,指標(biāo)的維護(hù)和治理都依賴"自上而下"的運(yùn)動(dòng)式的治理。用戶很難知道指標(biāo)的確切口徑,以及是否是最新的,于是很可能不得不創(chuàng)建一個(gè)相似的指標(biāo)為自己所用,因此慢慢的,這類系統(tǒng)最后都逐漸被淘汰了。
(2)定義難
我們認(rèn)為指標(biāo)的定義過(guò)程,是一個(gè)將業(yè)務(wù)中的自然語(yǔ)言進(jìn)行結(jié)構(gòu)化的過(guò)程,進(jìn)行拆解的過(guò)程。之前的指標(biāo)系統(tǒng),往往沒(méi)有很明確的定義規(guī)范,有的雖然也是基于原子指標(biāo)+衍生指標(biāo)來(lái)定義,但定義的過(guò)程往往還是通過(guò)“非結(jié)構(gòu)化”的自然語(yǔ)言來(lái)進(jìn)行,這樣很難準(zhǔn)確的表意;基于上述問(wèn)題,可能還會(huì)成立諸如"資產(chǎn)小組"的組織,來(lái)協(xié)助指標(biāo)定義,這樣做確實(shí)能比較有效的提升指標(biāo)的質(zhì)量,但這完全就依賴于個(gè)人經(jīng)驗(yàn),"知識(shí)"并沒(méi)有沉淀在系統(tǒng)中,勢(shì)必會(huì)帶來(lái)諸如"人力短缺"以及"指標(biāo)質(zhì)量不穩(wěn)定"等問(wèn)題。
(3)開發(fā)難
早期的指標(biāo)系統(tǒng)往往都不具備指標(biāo)開發(fā)的功能,指標(biāo)開發(fā)流程仍然是傳統(tǒng)的數(shù)據(jù)加工+數(shù)據(jù)服務(wù)開發(fā)+指標(biāo)展示層開發(fā),指標(biāo)的開發(fā)和定義是完全割裂的。指標(biāo)的質(zhì)量完全取決于個(gè)人能力,開發(fā)過(guò)程中有多少中間表,有沒(méi)有不必要的浪費(fèi),完全不可控;而且口徑可能散落在這個(gè)過(guò)程中的各個(gè)環(huán)境,比如一個(gè)過(guò)濾條件,既可以在數(shù)據(jù)開發(fā)時(shí)的 spark 里做,也可能上提到指標(biāo)服務(wù) Java 中做,甚至在數(shù)據(jù)展示中進(jìn)行,這樣對(duì)口徑的還原難度很大。我們就有發(fā)生過(guò),兩個(gè)數(shù)據(jù)產(chǎn)品對(duì)口徑對(duì)一個(gè)月都對(duì)不齊的案例。對(duì)于口徑有變更,或者新功能開發(fā),難度都很大。
(4)使用難
由于沒(méi)有統(tǒng)一的查詢語(yǔ)言,每個(gè)指標(biāo)的調(diào)用方式都取決于開發(fā)團(tuán)隊(duì),因此一個(gè)指標(biāo)想復(fù)用到另一個(gè)系統(tǒng)上就涉及重復(fù)開發(fā),比如為大屏開發(fā)的指標(biāo),BI 報(bào)表想復(fù)用,是無(wú)法直接復(fù)用的,需要進(jìn)行改造。
2. 背景介紹-解決思路
面對(duì)上述問(wèn)題,我們把業(yè)務(wù)目標(biāo)定義為以下五點(diǎn):
- 首先要有一個(gè)清晰的指標(biāo)目錄,這個(gè)指標(biāo)目錄里要能很便捷很準(zhǔn)確地找到需要的指標(biāo),好用且敢用。
- 第二,指標(biāo)定義一定要清晰,既可以保證區(qū)分度,又要保證精確度,避免指標(biāo)二義性的問(wèn)題。
- 第三,要有比較強(qiáng)大的指標(biāo)生產(chǎn)能力,通過(guò)指標(biāo)的定義來(lái)驅(qū)動(dòng)指標(biāo)生產(chǎn),系統(tǒng)可以解決的問(wèn)題一定要系統(tǒng)來(lái)解決,盡量減少人工參與。在性能上,可以滿足業(yè)務(wù)需要,能從全局考慮數(shù)據(jù)加速的問(wèn)題。
- 第四,指標(biāo)消費(fèi)有統(tǒng)一的查詢語(yǔ)句,與最終的展示層無(wú)關(guān),即 headless BI 的概念。
- 最后是指標(biāo)治理,保證指標(biāo)口徑永遠(yuǎn)都是最新的,從開始加工到最后展示這條鏈路中,如果發(fā)現(xiàn)有低頻使用,那么從數(shù)據(jù)到服務(wù)到指標(biāo)應(yīng)用都要有相應(yīng)的指標(biāo)退出機(jī)制,從而釋放整條數(shù)據(jù)鏈路上的資源。
3. 定義用戶
指標(biāo)中臺(tái)是服務(wù)哪些用戶的:
- 業(yè)務(wù)師,分析師
主要訴求是能夠清晰地獲取指標(biāo),不太關(guān)注指標(biāo)的實(shí)現(xiàn)過(guò)程。對(duì)應(yīng)能力就是清晰的指標(biāo)目錄。 - 數(shù)據(jù)產(chǎn)品,資產(chǎn)產(chǎn)品
負(fù)責(zé)定義指標(biāo)。對(duì)應(yīng)能力為指標(biāo)定義。 - 數(shù)據(jù)、服務(wù)開發(fā)
負(fù)責(zé)指標(biāo)生產(chǎn),準(zhǔn)確地實(shí)現(xiàn)指標(biāo)口徑。對(duì)應(yīng)能力為指標(biāo)開發(fā)。 - 數(shù)據(jù)消費(fèi)
準(zhǔn)確的消費(fèi)數(shù)據(jù),實(shí)現(xiàn)業(yè)務(wù)訴求。對(duì)應(yīng)能力為指標(biāo)消費(fèi)。
二、指標(biāo)中臺(tái)建設(shè)
1. 整體架構(gòu)
虛線以內(nèi)的都是指標(biāo)中臺(tái)的范圍,從左往右看,首先是用戶交互的部分,用戶可以在"指標(biāo)市場(chǎng)"中檢索想要的指標(biāo),還可以進(jìn)行指標(biāo)定義,指標(biāo)的定義依賴指標(biāo)語(yǔ)義層的建設(shè)。語(yǔ)義層包括 4W1H,指標(biāo),維度,修飾等概念和規(guī)范,下面會(huì)詳細(xì)介紹。中間是一整套數(shù)據(jù)鏈路,從數(shù)據(jù)生產(chǎn)到數(shù)據(jù)查詢,都可以通過(guò)系統(tǒng)化進(jìn)行配置,大大減少了人力投入。最右側(cè)是元數(shù)據(jù),包括配置信息,語(yǔ)義信息等,為數(shù)據(jù)的生產(chǎn),查詢,治理提供依據(jù)。下面將會(huì)展開詳細(xì)介紹。
2. 語(yǔ)義層建設(shè)
關(guān)于語(yǔ)義層應(yīng)該建設(shè)在哪里,業(yè)界大致有三種方案,分別是在模型層,展示層,或者獨(dú)立一層。隨著近年來(lái)的發(fā)展和迭代,大家發(fā)現(xiàn)將語(yǔ)義層耦合在模型層或者展示層都是有明顯弊端的。如果語(yǔ)義層建設(shè)在模型層,那勢(shì)必跟業(yè)務(wù)耦合得太緊。數(shù)倉(cāng)產(chǎn)出的結(jié)果應(yīng)該是一個(gè)個(gè)“積木”,可以根據(jù)業(yè)務(wù)需要進(jìn)行組合,而不應(yīng)該與上層業(yè)務(wù)耦合,否則隨著業(yè)務(wù)的成長(zhǎng),數(shù)倉(cāng)的數(shù)據(jù)將會(huì)爆炸。另外一個(gè)更重要的原因,如果語(yǔ)義層放在數(shù)倉(cāng),生產(chǎn)血緣可以很容易的進(jìn)行構(gòu)建,通過(guò)調(diào)度系統(tǒng)就知道數(shù)據(jù)整個(gè)的加工鏈路,但是消費(fèi)血緣將是缺失的,不知道指標(biāo)數(shù)據(jù)該如何使用。反過(guò)來(lái),如果與展示層耦合得比較緊,那么只能回答消費(fèi)血緣,而不知道指標(biāo)數(shù)據(jù)是如何加工的。
所以最合適的一種方式是語(yǔ)義層要有一個(gè)獨(dú)立的建設(shè),對(duì)下要屏蔽業(yè)務(wù),對(duì)上要屏蔽數(shù)據(jù)模型的概念。但這樣做的缺點(diǎn)就是對(duì)語(yǔ)義的制定規(guī)范會(huì)比較難,但考慮到其收益,現(xiàn)在也是業(yè)界普遍認(rèn)可的一種方式。
上面提到過(guò),我們認(rèn)為定義指標(biāo)的過(guò)程,就是將業(yè)務(wù)的"自然語(yǔ)言"結(jié)構(gòu)化拆解的過(guò)程。而拆解規(guī)則設(shè)計(jì)得越好,指標(biāo)定義的就越準(zhǔn)確,既能保證區(qū)分度,也能保證精確度。這里的核心概念就是 4W1H,即 4 個(gè) W 開頭的單詞,和一個(gè) H 開頭的單詞,分別回答作用范圍,領(lǐng)域,動(dòng)作,作用在誰(shuí)身上,以及如何量化的問(wèn)題,回答好了這幾個(gè)問(wèn)題,一個(gè)原子指標(biāo)就定義好了。
基于原子指標(biāo),結(jié)合業(yè)務(wù)限定和函數(shù)就可以得到衍生指標(biāo),這是用戶最常用的指標(biāo)類型。業(yè)務(wù)限定簡(jiǎn)單點(diǎn)說(shuō)就是數(shù)據(jù)的過(guò)濾條件,SQL 中的 where 語(yǔ)句。業(yè)務(wù)限定有兩個(gè)子類型,一類叫做修飾,它由維度操作符和維值組成,比如部門 id = 1 或者成交 flag = 0 的。另一個(gè)是“裁剪口徑”,“裁剪口徑”是一些列修飾的集合。我們發(fā)現(xiàn),大部分用戶在定義指標(biāo)時(shí),都是參考某些核心指標(biāo)來(lái)定義的,比如保證和零售大盤成交金額的業(yè)務(wù)限定保持一致,而核心指標(biāo)上有很多修飾,如果一個(gè)一個(gè)添加,操作起來(lái)是很麻煩的;而且一旦這個(gè)核心指標(biāo)的口徑有變化,用戶定義的這新指標(biāo)是很難感知到的,因此,我們?cè)谛揎椀幕A(chǔ)上封裝了”裁剪口徑“,這樣在指標(biāo)定義時(shí)不僅可以通過(guò)選擇和核心指標(biāo)一致的“裁剪口徑”,就能很輕易的就能和其保持口徑對(duì)齊,如果口徑有更改,還可以第一時(shí)間知道。
通過(guò)上圖的示例可以看到是如何通過(guò) 4W1H 來(lái)定義一個(gè)原子指標(biāo)的。再加上裁剪口徑,就可以得到衍生指標(biāo)。另外,我們通過(guò)函數(shù)來(lái)定義時(shí)間周期和指標(biāo)的二次聚合,比如近 7 天,近半年,年至今等時(shí)間函數(shù),和均值,累計(jì)值,最值等二次聚合。
在衍生指標(biāo)的基礎(chǔ)上進(jìn)行四則運(yùn)算得出的新指標(biāo),適合定義各種比率比值,可以得到復(fù)合指標(biāo)。
以上介紹了指標(biāo)定義和體系建成的過(guò)程,而實(shí)際使用過(guò)程中還是會(huì)遇到很多問(wèn)題。這里介紹其中一些關(guān)鍵問(wèn)題。
首先,在推廣 4W1H 這一核心理念時(shí),有些用戶不太理解,覺得又是在造輪子。我們經(jīng)過(guò)了很詳細(xì)地推演,證明這套策略可以覆蓋絕大部分指標(biāo)定義過(guò)程,并在小范圍進(jìn)行實(shí)驗(yàn)性落地后,才開始大范圍推進(jìn)推廣。經(jīng)過(guò)一年,用戶也慢慢發(fā)現(xiàn)這套體系真的能夠幫助其提效,能做到多方共贏,最終逐漸走向正軌。
4W1H 的內(nèi)容怎么選也是很重要的,現(xiàn)在業(yè)務(wù)域主題有 40 個(gè),業(yè)務(wù)過(guò)程和主題上百個(gè),對(duì)缺乏經(jīng)驗(yàn)的用戶來(lái)說(shuō),很難從中做出選擇。比如成交購(gòu)買用戶數(shù),其中主體是用戶,度量是數(shù)量。在最初還沒(méi)有口徑繼承能力時(shí),業(yè)務(wù)方要建一個(gè)時(shí)尚業(yè)務(wù)域的成交購(gòu)買用戶數(shù),主體選擇了“購(gòu)買_用戶”,度量是“人數(shù)”,也不能說(shuō)他定義的就是不對(duì)的,但基于此,在系統(tǒng)中就很難匹配出這兩個(gè)指標(biāo)是存在關(guān)系的。這里存在一定的靈活性和不確定性,如果以這種方式建立下去,就會(huì)出現(xiàn)相似指標(biāo)太多的情況。因此我們采用了主動(dòng)治理和被動(dòng)治理的方式來(lái)解決該問(wèn)題。主動(dòng)治理是由系統(tǒng)推薦一些最佳實(shí)踐,比如被使用最多的,有其他核心產(chǎn)品的信用背書的等等,主動(dòng)幫助用戶進(jìn)行選擇,減少出錯(cuò)的可能。被動(dòng)處理是在后臺(tái)分析合理性,并進(jìn)行總結(jié)經(jīng)驗(yàn),推動(dòng)用戶進(jìn)行治理。經(jīng)過(guò)以上的優(yōu)化,用戶定義指標(biāo)的準(zhǔn)確率得到了顯著提高。
第三個(gè)問(wèn)題和第二個(gè)類似,是一個(gè)更加細(xì)化的問(wèn)題。4w1h 的有些概念,是可以搭配使用的,比如廣告主題下的流量-頁(yè)面,以及點(diǎn)擊-坑位,這種搭配是需要業(yè)務(wù)常識(shí)的,如果不知道,就可能選擇點(diǎn)擊-頁(yè)面這個(gè)組合,看起來(lái)也沒(méi)錯(cuò),但并不專業(yè),容易出現(xiàn)二義性。我們?cè)诠ぷ髦?,也在逐步收集用戶的?shù)據(jù)進(jìn)行分析,并和有經(jīng)驗(yàn)的同事來(lái)共同制定相關(guān)標(biāo)準(zhǔn)。
最后,由于注冊(cè)流程比較冗長(zhǎng),很多審批需要人工完成。我們也結(jié)合了上面主動(dòng)治理和被動(dòng)治理的方式,在指標(biāo)定義過(guò)程中,如果滿足一些條件,就會(huì)簡(jiǎn)化審批流程。
3. 指標(biāo)生產(chǎn)
下面介紹指標(biāo)生產(chǎn)。傳統(tǒng)的指標(biāo)生產(chǎn),服務(wù)研發(fā)和數(shù)據(jù)研發(fā)基于約定進(jìn)行開發(fā),當(dāng)一個(gè)需求出現(xiàn)后,服務(wù)研發(fā)主導(dǎo)和數(shù)據(jù)研發(fā)主導(dǎo)的解決思路是不一樣的。如果是數(shù)據(jù)研發(fā)主導(dǎo),比如某個(gè)需求要做三個(gè)看板,可能就開發(fā)三個(gè)對(duì)應(yīng)的模型,如果性能不好,可以再做預(yù)計(jì)算,預(yù)關(guān)聯(lián)。如果是服務(wù)研發(fā),會(huì)分析需求中這三張表是否有一些共用的信息,是不是可以只用一張表。兩方都是從自己的角度出發(fā)來(lái)進(jìn)行設(shè)計(jì)。實(shí)際采用哪種方式,哪種方式是相對(duì)更優(yōu)的,就完全取決于研發(fā)的個(gè)人能力以及整個(gè)團(tuán)隊(duì)的能力,并沒(méi)有一個(gè)絕對(duì)的評(píng)判標(biāo)準(zhǔn)。所以我們希望通過(guò)系統(tǒng)來(lái)替代人工的開發(fā),來(lái)屏蔽掉這種不確定性。
下面介紹配置化生產(chǎn)的工作過(guò)程。比如配置一個(gè)類似于成交金額的訂單金額,首先要設(shè)置好物理表,把這個(gè)指標(biāo)所需要的維度和修飾都定義好,系統(tǒng)可以自動(dòng)翻譯出來(lái)一個(gè) SQL 查詢語(yǔ)句,對(duì)應(yīng)的指標(biāo),維度和修飾都可以體現(xiàn)在 SQL 上面。
如果維度是來(lái)自于維表,可以進(jìn)行關(guān)聯(lián)維表的配置。
再?gòu)?fù)雜一些的情況,明細(xì)數(shù)據(jù)的粒度很細(xì),按某些維度看是有重復(fù)數(shù)據(jù),比一個(gè)訂單有多條記錄,那么就要按訂單 ID 或者 sku_id 先做去重,之后再做聚合。這里可以進(jìn)行二次聚合的配置。
上述是指標(biāo)口徑的配置。對(duì)于在線查詢的要求,性能上還達(dá)不到,需要將數(shù)據(jù)加速到 OLAP 存儲(chǔ)引擎中,因此這里需要配置加速策略。我們當(dāng)前支持介質(zhì)加速、輕聚合、預(yù)計(jì)算,以及智能加速。支持 ClickHouse、HBase、Redis 等多種數(shù)據(jù)源。配置完調(diào)度任務(wù)后,系統(tǒng)會(huì)自動(dòng)翻譯成執(zhí)行語(yǔ)句并生成加工任務(wù),把事實(shí)表和維表按配置好的加速類型推到相應(yīng)的計(jì)算引擎里面。
指標(biāo)生產(chǎn),其模型需要符合維度建模規(guī)范。創(chuàng)建模型時(shí),我們希望指標(biāo)的口徑全部通過(guò)維度來(lái)區(qū)分,通過(guò)修飾來(lái)實(shí)現(xiàn),而不是直接把維度打到每個(gè)字段里。如果這樣做,一是無(wú)法進(jìn)行靈活的分析,后續(xù)也沒(méi)有任何優(yōu)化的可能性。
下面我們從整體上看看系統(tǒng)提供的數(shù)據(jù)加速能力。業(yè)界著名的 F1Query SQL 優(yōu)化引擎,在查詢優(yōu)化上非常優(yōu)秀,但該優(yōu)化只停留在查詢范疇上,可能會(huì)出現(xiàn)性能斷崖,因?yàn)槲锢砩系臉O限是無(wú)法突破的,而且不可能保證穩(wěn)定的快。而我們會(huì)分別從查詢和生產(chǎn)兩方面進(jìn)行加速,查詢需要什么樣的加速數(shù)據(jù),生產(chǎn)就進(jìn)行該數(shù)據(jù)的生產(chǎn),兩者相互配合,理論上是可以做到所有的查詢都是 O(1) 的時(shí)間復(fù)雜度。而且和傳統(tǒng)的預(yù)計(jì)算相比,我們的數(shù)據(jù)加速擺脫了盲目性,會(huì)根據(jù)需要進(jìn)行按需加速,低頻退化,在成本上也盡量做到極致。
下面介紹查詢加速策略。
首先是合并查詢,其核心思想是盡量減少查詢次數(shù),比如兩個(gè)同源查詢,可以通過(guò)把這些過(guò)濾條件放到指標(biāo)中,通過(guò) case when 來(lái)解決。對(duì)于非同源查詢,可以通過(guò) union all 的方式來(lái)合并。
另一種加速方式是謂詞上拉。在 ClickHouse 中使用 arrayJoin,可能會(huì)出現(xiàn)性能急劇下降的情況。如果放到 prewhere 里做,就可以減少很多掃描的數(shù)據(jù),查詢的性能可以得到大幅提升。
屬性拼接也是一種很有效果的優(yōu)化。我們發(fā)現(xiàn)有很多維度,是沒(méi)有對(duì)其進(jìn)行分析的訴求的,只是為了和其他維度一起展示使用,比如 sku 顏色,sku 尺寸等,通常只是展示 sku 信息時(shí)才會(huì)用到,很少有對(duì)其進(jìn)行分析的場(chǎng)景。在查詢時(shí),如果按 sku 的粒度進(jìn)行分析,需要在 groupby 中加上 sku 顏色,sku 尺寸等需要的維度,這對(duì)查詢性能是巨大的挑戰(zhàn)。另外,如果整條數(shù)據(jù)鏈路都帶上這部分?jǐn)?shù)據(jù),勢(shì)必會(huì)造成極大的浪費(fèi)?;诖耍诖_定沒(méi)有對(duì)這類維度進(jìn)行分析的前提下,整個(gè)數(shù)據(jù)鏈路都不生產(chǎn)這部分?jǐn)?shù)據(jù),只根據(jù)需要在數(shù)據(jù)服務(wù)側(cè)進(jìn)行結(jié)果的拼接,這樣不僅可以提升查詢效率,還可以很大程度上節(jié)約計(jì)算資源和存儲(chǔ)資源。
最后介紹自定義桶深的能力。我們?cè)谝恍﹫?chǎng)景,如排行榜,業(yè)務(wù)方是可以通過(guò)犧牲一些精度來(lái)提升性能的。對(duì)于 Clikehouse 來(lái)說(shuō),是可以通過(guò)在本地節(jié)點(diǎn)對(duì)數(shù)據(jù)進(jìn)行前置過(guò)濾,來(lái)減少網(wǎng)絡(luò)帶寬和協(xié)調(diào)節(jié)點(diǎn)匯總壓力,從而顯著提升查詢性能。
生產(chǎn)加速方面,要做到全鏈路系統(tǒng)化,這樣中間結(jié)果才是可知可控的,哪些中間結(jié)果是可以共用的,或者哪些不會(huì)再用可以刪掉。如果是人工來(lái)做,則完全沒(méi)有依據(jù)。只有系統(tǒng)化,才能從全局進(jìn)行把控。目前我們?cè)跀?shù)倉(cāng)資產(chǎn)層只有數(shù)千個(gè)規(guī)模模型,處于相對(duì)穩(wěn)定的狀態(tài)。而到了應(yīng)用層,就迅速擴(kuò)展到了十?dāng)?shù)萬(wàn)個(gè),并且仍會(huì)以非常快的速度激增。我們所希望的是像右邊的梯形,通過(guò)系統(tǒng)化減少中間結(jié)果,讓應(yīng)用層的數(shù)據(jù)盡可能地復(fù)用。
預(yù)計(jì)算是通過(guò)空間換取時(shí)間,要預(yù)計(jì)算哪些數(shù)據(jù)往往根據(jù)用戶的業(yè)務(wù)需要,如果不夠精確,會(huì)浪費(fèi)大量的存儲(chǔ)空間。為了解決這個(gè)問(wèn)題,我們開發(fā)了基于 HBO 的加速策略,用戶只需要輸入 QPS 和 TP99 等業(yè)務(wù)目標(biāo),系統(tǒng)會(huì)根據(jù)用戶的歷史查詢情況,自動(dòng)將高頻的維度組合,時(shí)間分區(qū)等進(jìn)行預(yù)計(jì)算加速,讓性能優(yōu)化更加具有針對(duì)性,既滿足用戶的業(yè)務(wù)目標(biāo),又能最大化的節(jié)省存儲(chǔ)資源。
4. 指標(biāo)治理
最后要分享的是指標(biāo)治理。目前我們的數(shù)據(jù)治理工作覆蓋了從數(shù)據(jù)目錄到最后的數(shù)據(jù)展示的端到端全鏈路。在數(shù)據(jù)目錄中,對(duì)指標(biāo)進(jìn)行調(diào)用量監(jiān)控,長(zhǎng)期沒(méi)有調(diào)用的指標(biāo)要進(jìn)行指標(biāo)下線,對(duì)全部指標(biāo)進(jìn)行質(zhì)量評(píng)分;在指標(biāo)定義方面,對(duì) 4W1H 里的元素有進(jìn)行推薦,對(duì)同質(zhì)化的指標(biāo)進(jìn)行監(jiān)控;生產(chǎn)方面,對(duì)中間結(jié)果進(jìn)行物化并監(jiān)控其生命周期,對(duì)低頻的數(shù)據(jù)進(jìn)行數(shù)據(jù)退出;數(shù)據(jù)服務(wù)方面,包括動(dòng)態(tài)擴(kuò)容,QPS 使用率監(jiān)控,當(dāng)前真正調(diào)用的 QPS 大約只占申請(qǐng) QPS 的 1/3,這里有很大的優(yōu)化空間;最后是數(shù)據(jù)展示方面,有很多看板,比如今年贊助春晚的一些定制大屏,以后就再也不使用了,這種低頻的要去推進(jìn)它下線。
綜上,我們整體的治理目標(biāo)是,口徑清晰、數(shù)據(jù)新鮮、系統(tǒng)高效、成本經(jīng)濟(jì)。
三、應(yīng)用實(shí)戰(zhàn)案例
1. 從指標(biāo)定義到指標(biāo)展示的低成本,高時(shí)效交付
上面介紹了指標(biāo)中臺(tái)的很多能力,實(shí)際工作中我們是如何使用的呢?這里主要涉及上面提到的 3 類角色,分別是產(chǎn)品,數(shù)據(jù)開發(fā),前端開發(fā)。對(duì)于一般復(fù)雜度的看板,每個(gè)角色只需要一名人員投入,而且全程 codeless,對(duì)技術(shù)要求的門檻比較低。產(chǎn)品通過(guò)指標(biāo)市場(chǎng)查找現(xiàn)有指標(biāo)并定義新指標(biāo),包括對(duì)應(yīng)的修飾和裁剪口徑等。這部分工作 1-2 天可以完成,并把定義好的指標(biāo)同時(shí)交付給數(shù)據(jù)開發(fā)和前端,并行進(jìn)行數(shù)據(jù)開發(fā)和展示層開發(fā)。數(shù)據(jù)開發(fā)通過(guò)配置化指標(biāo)生產(chǎn),并通過(guò)加速策略滿足性能要求,這部分工作 1-3 天可以完成。前端開發(fā)通過(guò)前端低代碼平臺(tái),也是配置化完成看板的搭建,也只需要 1-2 天即可完成。后續(xù)還有聯(lián)調(diào)和壓測(cè)等工作,順利的話 5-7 天可以交付一個(gè)高質(zhì)量看板。這徹底改變數(shù)據(jù)交付模式,根據(jù)我們的統(tǒng)計(jì),在戰(zhàn)報(bào)、大屏、黃金眼等核心數(shù)據(jù)決策場(chǎng)景研發(fā)成本降低 40%+,大促備戰(zhàn)人力下降 20%,數(shù)據(jù)需求交付效率提升 70%+。
2. 指標(biāo)多端復(fù)用,口徑清晰統(tǒng)一
經(jīng)統(tǒng)計(jì),在已注冊(cè)的有效指標(biāo)中,有過(guò)復(fù)用(被使用超過(guò) 1 次)的指標(biāo)占比超過(guò) 50%,其中被使用最多的一些核心主題指標(biāo)復(fù)用率超過(guò) 80%。以零售通用域的“成交金額”指標(biāo)為例,該指標(biāo)被應(yīng)用在 20+ 的數(shù)據(jù)看板、系統(tǒng)上,保障了多端看到的數(shù)據(jù)一致性。在此基礎(chǔ)上開發(fā)的復(fù)合指標(biāo)和子指標(biāo),與前端低代碼平臺(tái)進(jìn)行高效聯(lián)動(dòng),可以完成日內(nèi)的看板需求交付。
四、總結(jié)與展望
1. 成果總結(jié)
指標(biāo)中臺(tái)建立兩年多來(lái),已經(jīng)成為零售指標(biāo)數(shù)據(jù)的統(tǒng)一出口,并逐步擴(kuò)展到其他 BGBU。支持零售多個(gè)核心數(shù)據(jù)產(chǎn)品,包括黃金眼,商智,大屏,AB 實(shí)驗(yàn)等。日均調(diào)用量超過(guò) 4000W+ 次,注冊(cè)指標(biāo)超過(guò) 10000。目前整體的需求覆蓋度為 55% 以上。新需求覆蓋度則可以達(dá)到 80% 以上。節(jié)省人力超過(guò) 50%。
2. 未來(lái)規(guī)劃
未來(lái)的工作主要有三個(gè)思路,即讓用戶用數(shù)用得更廣泛、更集約、更放心。
- 更廣泛用數(shù)
繼續(xù)進(jìn)行能力建設(shè),尤其是高階長(zhǎng)尾的能力,繼續(xù)提升需求覆蓋度。
- 更集約用數(shù)
繼續(xù)提升系統(tǒng)化,智能化能力,基于主動(dòng)元數(shù)據(jù)的數(shù)據(jù)治理覆蓋度更高,減少人力和存儲(chǔ)資源。
- 更放心用數(shù)
繼續(xù)提升數(shù)據(jù)和系統(tǒng)的穩(wěn)定性,提升指標(biāo)語(yǔ)義層質(zhì)量,結(jié)合大模型降低指標(biāo)查找和注冊(cè)的難度。