有人認為,多維的數(shù)據(jù)分類體系已經(jīng)夠用了,標簽就是一個“雞肋”;也有人認為標簽體系有有利于大數(shù)據(jù)的萃取和分析,提供畫像能力,實現(xiàn)精準推薦,必須是數(shù)據(jù)中臺的標配。
如果“標簽體系”確有爭議的話,那么今天介紹的這個功能一定沒有爭議,它絕對是數(shù)據(jù)中臺的真正標配,它就是——數(shù)據(jù)服務。
— 01 —
什么是數(shù)據(jù)服務?
數(shù)據(jù)服務的類別相當廣泛,有提供數(shù)據(jù)傳輸能力的叫做數(shù)據(jù)傳輸服務,有提供數(shù)據(jù)存儲能力的叫做數(shù)據(jù)存儲服務,有執(zhí)行各種類型分析的叫做數(shù)據(jù)分析服務,還有提供數(shù)據(jù)安全管理的叫做數(shù)據(jù)安全服務等等。
這些都叫數(shù)據(jù)服務,但這些數(shù)據(jù)服務強調(diào)的是能力,更準確的定義是“Data as a Service——數(shù)據(jù)即服務”,但這不是我們今天要講的數(shù)據(jù)中臺的數(shù)據(jù)服務!
數(shù)據(jù)中臺的數(shù)據(jù)服務到底是什么?
數(shù)據(jù)中臺的概念是由阿里巴巴提出來的,我們來看看“中臺鼻祖”怎么說。在阿里巴巴數(shù)據(jù)中臺全景圖中,統(tǒng)一數(shù)據(jù)服務也叫OneService ,即由數(shù)據(jù)中臺提供統(tǒng)一的數(shù)據(jù)接入和數(shù)據(jù)查詢服務。

阿里數(shù)據(jù)中臺的OneService提供了三項數(shù)據(jù)服務:
主題式數(shù)據(jù)服務,基于元數(shù)據(jù)和規(guī)范定義和建模,構(gòu)建主題邏輯表,屏蔽復雜物理表,提供業(yè)務視角下的查詢。
統(tǒng)一且多樣化數(shù)據(jù)服務,一站式提供一般查詢、 OLAP 分析、在線接口服務等查詢和應用服務,便于數(shù)據(jù)跟蹤管理。
跨源數(shù)據(jù)服務,統(tǒng)一數(shù)據(jù)接入層,屏蔽多種異構(gòu)數(shù)據(jù)源的讀寫差異,減少數(shù)據(jù)訪問和應用成本。
我的理解:不同系統(tǒng)之間使用服務的方式進行交互,
數(shù)據(jù)服務為數(shù)據(jù)和應用之間建立了一座“溝通的橋梁”,這座橋梁的存在形式是API。可以把它想象成一個電源插座,例如,只需要你的吹風機有一個匹配的插頭,并將其插入,電流就會流向你的吹風機,就像數(shù)據(jù)流向你的
數(shù)據(jù)應用一樣。
— 02 —數(shù)據(jù)中臺為什么需要數(shù)據(jù)服務?
網(wǎng)上的很多文章中,喜歡將數(shù)據(jù)中臺用“廚師做菜”來形象比喻。廚師做菜一般有幾個步驟:買菜、洗菜擇菜、制定菜單、炒菜。這幾個步驟在數(shù)據(jù)中臺的數(shù)據(jù)加工流程中被稱為:數(shù)據(jù)采集、數(shù)據(jù)清洗、數(shù)據(jù)建模、數(shù)據(jù)分析/數(shù)據(jù)應用。

數(shù)據(jù)采集:跟廚師做菜一樣,巧婦難為無米之炊,需要做幾道好菜,首先得有原材料,那么數(shù)據(jù)采集/數(shù)據(jù)接入就是買菜的過程。
數(shù)據(jù)清洗:買回來菜需要摘洗干凈,才能下鍋,數(shù)據(jù)清洗就是摘菜洗菜的過程,是需要把臟數(shù)據(jù)清洗掉。
數(shù)據(jù)建模:菜摘洗好了,但炒什么菜要需要根據(jù)客人下的菜單來做。數(shù)據(jù)建模就像對為客人制定菜單一樣,例如:客人喜歡什么菜?魚香肉絲還是宮保雞丁,口味是甜一點,辣一點還是清淡一點等問題都要描述清楚并傳遞給“廚師”。數(shù)據(jù)建模就是將數(shù)據(jù)消費者的需求轉(zhuǎn)化為計算機能夠理解的語言。
數(shù)據(jù)分析/數(shù)據(jù)應用:根據(jù)客人的“菜單”要求,炒菜裝盤。
好了,看到這里有人不禁要問:說了這么多,數(shù)據(jù)服務在哪里?數(shù)據(jù)中臺到底為什么需要數(shù)據(jù)服務?
在這個“廚師做菜”的過程中,有一個不能忽略的角色,不知道你有沒有發(fā)現(xiàn),這個角色就是“服務員”。他的任務是幫助客戶點菜,并將炒好的菜端到客人的桌上。而數(shù)據(jù)中臺的“服務員”就是數(shù)據(jù)服務,英文名字:OneService。
想象一下,你正坐在餐廳的一張桌子旁,那里有可供選擇的菜單。但如果沒有服務員,就會缺少的是將你的菜單傳達給廚房并將你的食物送回餐桌的關(guān)鍵環(huán)節(jié)。這就是“服務員”(數(shù)據(jù)服務)的用武之地,接受數(shù)據(jù)消費者的請求,并告訴系統(tǒng)做什么,將做好的數(shù)據(jù)服務以API的方式提供給數(shù)據(jù)消費者。
另外,在整個過程中,數(shù)據(jù)服務還有一個作用,它屏蔽了底層數(shù)據(jù)的技術(shù)細節(jié),數(shù)據(jù)消費者不需要關(guān)心“這些數(shù)據(jù)來自哪里,哪個庫,哪張表,數(shù)據(jù)庫類型是什么等”問題,只需要關(guān)心“這些數(shù)據(jù)能否滿足我的需要”就行了。
就如同你去餐廳吃飯,不用關(guān)心菜是從哪買回來的,誰是配菜的,誰是炒菜的等這些問題一樣,只需要關(guān)心這個菜合不合你的口味就行了。
— 03 —數(shù)據(jù)服務能解決哪些問題?
在傳統(tǒng)的數(shù)據(jù)集成方案中,往往需要將數(shù)據(jù)從一個系統(tǒng)導出/導入,或復制到另一個系統(tǒng)當中。隨著企業(yè)數(shù)據(jù)應用規(guī)模的不斷擴大,需要在幾十個甚至上百個系統(tǒng)中進行數(shù)據(jù)集成,傳統(tǒng)的數(shù)據(jù)集成方式難度越來越大,暴露的問題也越來越多。

1、數(shù)據(jù)“搬家”造成的數(shù)據(jù)不一致問題
傳統(tǒng)數(shù)據(jù)集成需要將數(shù)據(jù)從一個系統(tǒng)復制到另一個系統(tǒng)中,過程中由于網(wǎng)絡、接口、程序、任務以及其他的一些不確定因素都會導致數(shù)據(jù)在“搬家”的過程中“丟失”,從而造成數(shù)據(jù)不一致問題。
而通過數(shù)據(jù)中臺提供的數(shù)據(jù)API交付數(shù)據(jù),大部分情況下不需要數(shù)據(jù)“落地”,強調(diào)使用權(quán)而不是擁有權(quán),這樣就大大減少了數(shù)據(jù)在流向下游系統(tǒng)過程中造成不一致問題。2、數(shù)據(jù)接入多樣,集成效率低數(shù)據(jù)中臺會根據(jù)企業(yè)數(shù)據(jù)的類型、數(shù)據(jù)量大小、數(shù)據(jù)的應用需求等,設計相應的不同數(shù)據(jù)接入和存儲方案。例如:通過MySQL、Oracle接入數(shù)據(jù)量相對較小的數(shù)據(jù),通過Greenplum接入數(shù)據(jù)量大且需要多維分析的數(shù)據(jù),通過Hbase接入大量的keyValue數(shù)據(jù),以及通過ES建立數(shù)據(jù)索引提升數(shù)據(jù)的查詢效率等等。這種情況下,如果按每種數(shù)據(jù)接入方式暴露數(shù)據(jù)的話,無疑是一個非常復雜事情。
而通過數(shù)據(jù)中臺將各類型數(shù)據(jù)封裝為統(tǒng)一的數(shù)據(jù)API,對外提供接口,能夠屏蔽數(shù)據(jù)接入多樣性帶來的數(shù)據(jù)集成復雜、效率低下等問題。3、數(shù)據(jù)被哪些應用訪問了無法監(jiān)控傳統(tǒng)的數(shù)據(jù)項目中,即使用了元數(shù)據(jù)這樣的工具,也無法實現(xiàn)數(shù)據(jù)的采集、匯總、清洗、處理、應用的全鏈路血緣分析。尤其是數(shù)據(jù)平臺到數(shù)據(jù)應用的鏈路幾乎全部是割裂的,數(shù)據(jù)平臺通過導出/導入或數(shù)據(jù)復制的方式為數(shù)據(jù)應用提供數(shù)據(jù),數(shù)據(jù)一旦進入到下游系統(tǒng)中,數(shù)據(jù)平臺就無法監(jiān)控其使用情況了。而數(shù)據(jù)中臺提供的統(tǒng)一數(shù)據(jù)服務API,為數(shù)據(jù)應用和數(shù)據(jù)中臺搭建了一座橋梁。
數(shù)據(jù)API只有通過授權(quán)才能被訪問,在給數(shù)據(jù)應用授權(quán)以及應用程序訪問數(shù)據(jù)API的時候,可以“標簽”的形式,將數(shù)據(jù)訪問鏈路通知給元數(shù)據(jù)中心,從而打通了數(shù)據(jù)中臺到數(shù)據(jù)應用的鏈路,形成了數(shù)據(jù)的全生命周期血緣。4、上游數(shù)據(jù)變更,影響下游數(shù)據(jù)應用在很多數(shù)據(jù)項目中,還有一種情況比較常見:數(shù)據(jù)應用直接調(diào)用數(shù)據(jù)平臺的數(shù)據(jù)庫來訪問數(shù)據(jù)。這就會導致,一旦上游數(shù)據(jù)發(fā)生變更就會對下游的數(shù)據(jù)應用造成較大影響。而數(shù)據(jù)中臺提供統(tǒng)一的數(shù)據(jù)API供數(shù)據(jù)應用調(diào)用,實現(xiàn)了數(shù)據(jù)中臺與數(shù)據(jù)應用的解耦。在數(shù)據(jù)服務內(nèi)部建立與與各數(shù)據(jù)源建立映射,
上游數(shù)據(jù)發(fā)生變更,只需要調(diào)整數(shù)據(jù)服務的映射即可,不會對數(shù)據(jù)應用的使用造成影響。
— 04 —數(shù)據(jù)服務應具備哪些功能?
在數(shù)據(jù)中臺架構(gòu)中數(shù)據(jù)服務層位于數(shù)據(jù)中臺上層,連接數(shù)據(jù)消費層,將已整合的數(shù)據(jù)以服務的形式提供給數(shù)據(jù)消費者,以獲得更好的性能和體驗。數(shù)據(jù)服務層具備的功能如下:

跨源數(shù)據(jù)服務:數(shù)據(jù)中臺接入數(shù)據(jù)的多樣性,決定了數(shù)據(jù)中臺的技術(shù)架構(gòu)需要由多個大數(shù)據(jù)組件組成,例如:Hive、HBASE、GP、ES、Redis、MySQL、Oracle等等,而業(yè)務上對數(shù)據(jù)的使用可能是跨多個數(shù)據(jù)庫的。數(shù)據(jù)服務層提供的跨源數(shù)據(jù)服務,屏蔽了底層數(shù)據(jù)源的技術(shù)差異,可以從不同數(shù)據(jù)源提取數(shù)據(jù),并按照業(yè)務需要進行編排,形成統(tǒng)一API進行對外共享。
主題數(shù)據(jù)服務:按照不同的業(yè)務主題,組織形成統(tǒng)一的數(shù)據(jù)API。數(shù)據(jù)中臺繼承了數(shù)據(jù)倉庫面向主題的思想,將位于不同數(shù)據(jù)中間存儲的同一業(yè)務主題的數(shù)據(jù)整合到一起,屏蔽多數(shù)據(jù)源與多物理表,形成標準的數(shù)據(jù)服務供外部使用。例如:銷售主題,需要將企業(yè)的批發(fā)、零售、線上、線下、代理等等各個渠道的銷售數(shù)據(jù)匯集起來。
一站式查詢:數(shù)據(jù)服務最終將用戶訪問的API 轉(zhuǎn)化為底層對各種數(shù)據(jù)源的訪問,實現(xiàn)對數(shù)據(jù)中臺數(shù)據(jù)的一站式查詢,提供數(shù)據(jù)檢索、聯(lián)機分析、實時查詢等,提升數(shù)據(jù)查詢的效率。
全鏈路打通:數(shù)據(jù)和應用的分離會導致數(shù)據(jù)血緣無法完整追溯,數(shù)據(jù)服務不僅提供了連接數(shù)據(jù)和應用能力,還通過服務授權(quán)以及訪問監(jiān)控等功能,將數(shù)據(jù)API的訪問情況實時寫入元數(shù)據(jù)中心,形成完整的數(shù)據(jù)血緣。
訂閱交付能力:數(shù)據(jù)API構(gòu)建完成,并不需要數(shù)據(jù)消費者重復構(gòu)建集成通道,而是通過授權(quán)“訂閱”的方式,讓數(shù)據(jù)消費者通過接口快速使用數(shù)據(jù)。
API網(wǎng)關(guān)服務:
API網(wǎng)關(guān)服務使用云原生技術(shù)提供了服務API的統(tǒng)一管理和監(jiān)控能力,包括:服務注冊、服務自動發(fā)現(xiàn)、認證授權(quán)、流量控制、超時熔斷、安全控制、監(jiān)控分析等。
— 05 —數(shù)據(jù)中臺的數(shù)據(jù)服務該如何構(gòu)建?
為了使數(shù)據(jù)中臺具備快速響應前端業(yè)務需求的能力,主流的數(shù)據(jù)中臺均采用了云原生技術(shù)來構(gòu)建數(shù)據(jù)服務層,實現(xiàn)數(shù)據(jù)服務的快速開發(fā)、有序落地。同時,數(shù)據(jù)服務的設計開發(fā)還應注意以下事項:
顆粒度問題:服務拆分的越細則復用性越好,但如果只考慮服務重用,大量的細顆粒度服務將很難管理并且勢必會對整體性能帶來影響。服務的設計需要從業(yè)務需求、管理難以程度、性能特性等方面綜合考量。
標準化問題:服務的開發(fā)采用Restful API技術(shù),該技術(shù)具有結(jié)構(gòu)清晰、易于理解、方便擴展等特點,且接口規(guī)范標準,不論前端應用是java、.net、C#還是PHP都能夠調(diào)用。就像設計一個插座,一定要具備普適性,這樣不論你的吹風機插頭是美標的、歐標的還是國標均的都能夠適配。
DataOps:DataOps是將DevOps的理念延伸到數(shù)據(jù)世界,提供了一種數(shù)據(jù)服務的持續(xù)運營方式。通過API網(wǎng)關(guān)進行服務的注冊和管理,實現(xiàn)數(shù)據(jù)服務的動態(tài)發(fā)現(xiàn)、自動部署、自動化監(jiān)控。根據(jù)服務的運行監(jiān)控數(shù)據(jù)對數(shù)據(jù)服務的進行有效治理,包括數(shù)據(jù)服務的迭代優(yōu)化、服務編排、自動測試、服務下架等。
寫在最后的話
數(shù)據(jù)服務層(OneService)改變了傳統(tǒng)的數(shù)據(jù)集成和交付方式,所有整合到數(shù)據(jù)中臺的數(shù)據(jù)都通過數(shù)據(jù)服務提供,數(shù)據(jù)服務對外暴露的不是數(shù)據(jù)而是接口,數(shù)據(jù)消費者不用直接獲取數(shù)據(jù),而是通過接口服務獲取。
數(shù)據(jù)服務不是簡單的對外暴露一個API就行了,從功能層面,數(shù)據(jù)服務還包括了跨數(shù)據(jù)源服務、主題數(shù)據(jù)服務、一站式查詢服務、訂閱式交付、全鏈路打通等能力;在技術(shù)層面,數(shù)據(jù)服務采用了云原生技術(shù),具備了服務的動態(tài)發(fā)現(xiàn)、自動部署、自動監(jiān)控、服務治理等能力。
這樣看來,數(shù)據(jù)服務層無疑是數(shù)據(jù)中臺不可或缺的標配,你說呢?
(部分內(nèi)容來源網(wǎng)絡,如有侵權(quán)請聯(lián)系刪除)