愛奇藝數據中臺的建設實踐

{"type":"doc","content":[{"type":"blockquote","content":[{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","text":"隨着市場對數據價值的認可,促進了數據在各行各業的爆發式增長,以及大數據設施的快速演化,同時也帶來了不少新的數據問題;解決這些問題,發揮更大的數據價值,成爲了各大公司的重點工作。愛奇藝通過數據中臺的建設和實施,發揮通用化、中心化、服務化和標準化等能力和特點,將數據能力覆蓋到公司任何角落,賦能業務發展,並通過加深數據AI化等新的技術方式,對數據價值進行深度探索;本文將從數據中臺的概念、架構、建設理念等角度切入,對關鍵組成部分進行深入介紹,讓大家能夠在理解中臺的同時,瞭解到如何通過中臺解決問題,幫助業務挖掘數據價值。主要內容包括:"}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null}},{"type":"bulletedlist","content":[{"type":"listitem","attrs":{"listStyle":null},"content":[{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","text":"定位和價值"}]}]},{"type":"listitem","attrs":{"listStyle":null},"content":[{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","text":"愛奇藝數據中臺介紹"}]}]},{"type":"listitem","attrs":{"listStyle":null},"content":[{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","text":"數據中臺統一服務層"}]}]},{"type":"listitem","attrs":{"listStyle":null},"content":[{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","text":"應用場景"}]}]}]}]},{"type":"heading","attrs":{"align":null,"level":2},"content":[{"type":"text","text":"定價和價值"}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","text":"首先和大家分享下數據中臺的定位和價值,數據中臺的定位主要是爲了解決大數據快速發展過程中所遇到的各種棘手問題。"}]},{"type":"heading","attrs":{"align":null,"level":3},"content":[{"type":"text","text":"1. 現狀和問題"}]},{"type":"image","attrs":{"src":"https:\/\/static001.geekbang.org\/infoq\/4d\/4d35922e1b3c61ab286d2e3f39dd14c1.jpeg","alt":"圖片","title":null,"style":[{"key":"width","value":"75%"},{"key":"bordertype","value":"none"}],"href":null,"fromPaste":true,"pastePass":true}},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null}},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","text":"大數據發展的現狀特點主要歸納爲以下幾點:"}]},{"type":"bulletedlist","content":[{"type":"listitem","attrs":{"listStyle":null},"content":[{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","text":"基礎設施發展的速度過快,導致在使用的層面需要快速響應,快速的迭代,從而給業務使用和數據挖掘帶來很高的成本;"}]}]},{"type":"listitem","attrs":{"listStyle":null},"content":[{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","text":"數據量級爆發式增長,對於存儲、計算以及一些特殊場景的優化帶來很大的挑戰;"}]}]},{"type":"listitem","attrs":{"listStyle":null},"content":[{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","text":"應用場景的融合疊加,以往數據產品主要用於報表分析,再進行應用分析,現在數據和AI技術深度融合,對大數據應用以及管理有更高的要求;"}]}]},{"type":"listitem","attrs":{"listStyle":null},"content":[{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","text":"隨着業務發展節奏越來越快,對數據時效性的要求也越來越高,已經不能止步於T+1的離線數據,或是H+1的數據,可能現在需要的是分鐘級,甚至是秒級的延遲速度。"}]}]}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null}},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","text":"針對大數據發展特點遇到的各種問題,包括一些特殊業務場景中遇到的特例問題,在此僅羅列一些比較通用的問題:"}]},{"type":"bulletedlist","content":[{"type":"listitem","attrs":{"listStyle":null},"content":[{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","text":"數據口徑的不一致;"}]}]},{"type":"listitem","attrs":{"listStyle":null},"content":[{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","text":"數據質量的可靠性;"}]}]},{"type":"listitem","attrs":{"listStyle":null},"content":[{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","text":"數據使用門檻高;"}]}]},{"type":"listitem","attrs":{"listStyle":null},"content":[{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","text":"資源消耗浪費嚴重;"}]}]},{"type":"listitem","attrs":{"listStyle":null},"content":[{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","text":"數據資產管理混亂;"}]}]},{"type":"listitem","attrs":{"listStyle":null},"content":[{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","text":"數據接入成本高;"}]}]},{"type":"listitem","attrs":{"listStyle":null},"content":[{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","text":"數據流通性差;"}]}]},{"type":"listitem","attrs":{"listStyle":null},"content":[{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","text":"數據生產鏈路長;"}]}]},{"type":"listitem","attrs":{"listStyle":null},"content":[{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","text":"數據業務打通難;"}]}]}]},{"type":"heading","attrs":{"align":null,"level":3},"content":[{"type":"text","text":"2. 數據中臺的定義"}]},{"type":"image","attrs":{"src":"https:\/\/static001.geekbang.org\/infoq\/bc\/bcc09bf7859cca6c8a77cc2674945f81.jpeg","alt":"圖片","title":null,"style":[{"key":"width","value":"75%"},{"key":"bordertype","value":"none"}],"href":null,"fromPaste":true,"pastePass":true}},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null}},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","text":"中臺是一個企業架構,是把一些通用的能力進行抽象。數據中臺,就是對數據能力進行抽象,並且把數據的治理以及資產的管理統一抽象出一種通用的能力,把這種數據使用的門檻降到一定程度,讓更多的業務,更多的用戶可以通過數據去挖掘一些業務價值。"}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null}},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","text":"數據中臺如何解決問題可從以下八個點展開:"}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","text":"① 打造一站式數據開發平臺,這個方式是爲了解決因大數據基礎設施快速發展,面對不同的場景下需要大家用不同的技術手段去處理數據,然而設置零散性的數據組織形式會導致數據使用效率以及維護效率特別低。"}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","text":"② 建立統一的元數據中心,以往企業更關注數據生產,在管理上相對來說比較薄弱,因此需要建立統一的數據中心對數據的元數據元信息進行統一的管理,後續會爲更多使用場景提供元數據。"}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","text":"③ 提供配置化的數據服務託管能力,就是數據中臺的統一服務化建設。"}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","text":"④ 建設覆蓋全生命週期的數據治理體系,對於大數據產生的價值以及成本,需要更細粒度的管制,所以要建立一個覆蓋全生命週期的數據治理體系。"}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","text":"⑤ 制定數據生產和採集標準,數據生產和採集的過程是業務和用戶接觸數據中臺的第一個環節,如何把數據生產標準化,如何把數據的採集和輸入標準化對用戶來說是節省成本的一個關鍵環節。"}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","text":"⑥ 建立一個數據湖,數據倉庫及周邊體系,把數據作爲一箇中心化的組織形式來爲公司或者各個業務的產品使用場景提供環境。"}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","text":"⑦ 推動數據中心化,傳統的數據結構往往是A依賴於B,B依賴於C,C可能依賴於A的網狀引用結構,這個過程會帶來很多溝通的成本以及使用上的理解偏差,包括各自維護自己的數據,導致存儲成本和管理方面成本相對較高.對此如何加快數據交換,需要運營中心化的建設,來幫助數據的生產方和使用方降低使用和維護的成本,並作爲一個數據交換的中心。"}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","text":"⑧ 通過AI能力替代人工的反覆性工作,通過AI技術的融合建設一個自動化平臺,讓用戶可以方便快捷地使用這種AI能力,同時需要把AI能力賦能到我們的數據平臺中,比如數據質量的監測、數據使用的分析,包括數據倉庫建設的健康度,都需要AI能力去覆蓋。"}]},{"type":"heading","attrs":{"align":null,"level":2},"content":[{"type":"text","text":"愛奇藝數據中臺介紹"}]},{"type":"heading","attrs":{"align":null,"level":3},"content":[{"type":"text","text":"1. 愛奇藝數據中臺定位"}]},{"type":"image","attrs":{"src":"https:\/\/static001.geekbang.org\/infoq\/21\/21b705307e75367203e768e374dfec10.jpeg","alt":"圖片","title":null,"style":[{"key":"width","value":"75%"},{"key":"bordertype","value":"none"}],"href":null,"fromPaste":true,"pastePass":true}},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null}},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","text":"愛奇藝數據中臺主要服務於業務前臺和業務中臺,數據中臺主要由數據的生產接入,數據的處理加工,數據資產,數據治理,以及最終對外提供數據服務組成。數據中臺主要的作用分以下四個方面展開:"}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","text":"① 將數據的生產收集處理存儲和服務等環節進行封裝,面向於不同層級的用戶和業務,提供不同的服務形式。可以解釋爲,面向不同層級且具備一定的數據開發能力的用戶,可能需要寫SQL對數據表進行直接的查詢,或者做更深度的數據開發,比如比較複雜的數據處理流程,數據開發平臺支持用戶通過拖拉拽的方式構建複雜工作流去DAG。數據中臺在對接業務前臺時,如果直接使用數據表的成本會比較高,因此需要將數據封裝成數據服務,並提供數據服務能力去幫助用戶通過這種配置化的能力達到業務系統的對接能力。"}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","text":"② 在數據標準化的過程中,防止數據的重複建設,以及避免口徑問題,來提高數據的使用效率,防止大家在從各種口徑問題上花費過多的精力,或者避免因爲口徑問題帶來一些決策上的錯誤。"}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","text":"③ 對於數據進行全鏈路的治理,來保證數據的生產使用,使得對資源的利用,有比較好的保障。"}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","text":"④ 最終的目的,屏蔽數據處理的複雜性,讓用戶可以更方便更高效地使用和發現數據,滿足業務快速發展需求。"}]},{"type":"heading","attrs":{"align":null,"level":3},"content":[{"type":"text","text":"2. 愛奇藝數據中臺組成"}]},{"type":"image","attrs":{"src":"https:\/\/static001.geekbang.org\/infoq\/98\/982a85f0517d640dccd04abd2826f2fa.jpeg","alt":"圖片","title":null,"style":[{"key":"width","value":"75%"},{"key":"bordertype","value":"none"}],"href":null,"fromPaste":true,"pastePass":true}},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null}},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","text":"接下來介紹愛奇藝數據中臺組成,這個分層組成的粒度較粗,但完全能覆蓋到數據中臺應該具備的能力。"}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","text":"架構最底層是大數據基礎設施,結合雲技術,可提供標準化、可彈性高、可用的統一雲服務的能力。雲服務之上有兩部分,一個是統一數據生產和接入,另一個是統一數據的開發平臺。往上是統一的數據組織形式,主要是數據湖,數據倉庫以及其他的一些數據組織形式。統一數據層上方是本文主要的分析方向——統一數據服務層。統一數據服務層有以下幾個特性,分別是可彈性、可配置化、可監控、可組合。這其實是一個高階應用,高階使用的方式,把一些原子的數據服務能力進行二次或者三次組合,來完成相對複雜的數據服務。"}]},{"type":"heading","attrs":{"align":null,"level":3},"content":[{"type":"text","text":"3. 愛奇藝數據中臺特點"}]},{"type":"image","attrs":{"src":"https:\/\/static001.geekbang.org\/infoq\/3d\/3db3bb72554d352c5477f64bb51805b2.jpeg","alt":"圖片","title":null,"style":[{"key":"width","value":"75%"},{"key":"bordertype","value":"none"}],"href":null,"fromPaste":true,"pastePass":true}},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null}},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","text":"愛奇藝數據中臺有以下六個特點:"}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","text":"① 平臺化,以平臺化的形式對用戶展現能力,比如數據開發平臺、數據服務平臺、數據治理平臺、以及一些數據接入工具等。"}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","text":"② 標準化,可以體現在多個方面,一方面是流程的標準化,包括如何採集數據,如何存儲數據,然後如何管理對外交換的數據。另一方面,是對數據資產本身的標準化,比如數據表的命名、庫的命名、字段的命名,還有數據倉庫相關的,比如數據模型、指標系統、維度系統的標準化建設。打造全公司標準的統一的存儲平臺以及指標系統和維度系統,所有的數據體系可能都依賴於此。"}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","text":"③ 中心化,數據中臺相當於把公司數據放入中轉站,把數據彙總和分發,然後讓數據得以統一管理,進而高效管理,同時對數據使用和安全情況做後續的審計。"}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","text":"④ 智能化, 體現在兩方面,一方面是提供一個平臺,智能化平臺(AI平臺),讓用戶可以通過拖拉拽的方式快速地獲得一些簡單的AI機器學習的能力或者深度學習的能力。另一方面是在中臺內部體現智能化能力,比如把智能的預測能力用於數據監測、數據分析上。"}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","text":"⑤ 服務化,是指把數據中臺的能力通過服務的形式對系統推進,展現給業務,同時在組織形式上更像公司內部toB的一個公司,去服務於各個業務線,幫助售前、售中、售後實施數據定製方案。"}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","text":"⑥ 價值化,數據中臺的建設與業務目標的關係相對模糊,所以希望能夠尋求一些合理的方式來衡量建設數據中臺的價值。"}]},{"type":"heading","attrs":{"align":null,"level":2},"content":[{"type":"text","text":"數據中臺統一服務層"}]},{"type":"heading","attrs":{"align":null,"level":3},"content":[{"type":"text","text":"1. 統一服務面對的問題"}]},{"type":"image","attrs":{"src":"https:\/\/static001.geekbang.org\/infoq\/d0\/d0c0e001c93bb99441f634c142a20963.jpeg","alt":"圖片","title":null,"style":[{"key":"width","value":"75%"},{"key":"bordertype","value":"none"}],"href":null,"fromPaste":true,"pastePass":true}},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null}},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","text":"接下來介紹一下愛奇藝數據中臺的統一服務層,統一服務面對的問題主要分爲以下幾點:"}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","text":"① 數據和接口的複用性。由於傳統的數據使用場景更多的是直接暴露數據表或者分配權限,往往這種情況下表的改動或者遷移,都會對於下游的服務造成特別大的影響。另外,數據表本身的流通性比數據接口的流動性差,因爲對接業務或對接前臺的部門,可能存在大家對於接口理解遠高於對數據表的理解。"}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","text":"② 發現和理解數據。過去,愛奇藝通過各種形式維護元數據,比如數據表的含義、數據表字段的定義、字段類型等描述,但是這些數據在長時間運轉下來,這些數據的信息其實逐漸的落後於實際情況,就造成了信息的缺失和不準確。其次是溝通成本問題,更多的還是需要人和人溝通,這種溝通一方面溝通效率會比較差,另一方面因爲人與人溝通會產生理解的偏差。"}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","text":"③ 標準和統一管理。對於數據接口,過去總是各自依賴於自己所需要的數據,然後自己定義自己開發,導致出現各式各樣的接口,在流通或者管理過程中的成本是很高的。而且往往對於一個數據資源,大家開發不同的數據接口,它的重複性會比較多,重複的概率會比較大,從而造成資源浪費嚴重。"}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","text":"④ 數據接入效率。過去給業務去提供一個數據表或者一個數據庫業務,需要根據自身的情況去做相應的開發,然後評估服務的QPS和部署形式,以及申請域名的接口、安全網關等,但是這些其實都可以通過通用化的能力去解決,把效率提升起來。"}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","text":"⑤ 服務使用審計。以往提供的一個數據接口,可能就是A傳B、B傳C就擴散地使用起來了,但是往往這種情況會對於數據血緣的信息收集帶來特別大的影響,導致後續升級一些數據表或者升級數據服務的時候,缺失部分下游的信息,從而導致一些操作對於某些線上業務帶來額外的影響,而且有一些高精密性的數據,可能也會由於這種分享式的方式導致安全隱患。"}]},{"type":"heading","attrs":{"align":null,"level":3},"content":[{"type":"text","text":"2. 數據服務介紹"}]},{"type":"image","attrs":{"src":"https:\/\/static001.geekbang.org\/infoq\/8d\/8d44b3a57db74d4a20e11001bbae84b5.jpeg","alt":"圖片","title":null,"style":[{"key":"width","value":"75%"},{"key":"bordertype","value":"none"}],"href":null,"fromPaste":true,"pastePass":true}},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null}},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","text":"對於數據服務的定義以及它所具備的能力有了一個初步的概括後,開始介紹愛奇藝數據服務內容,主要有幾下六點:"}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","text":"① 一站式的開發和運維的能力,它可以通過SQL,可以通過配置來定義輸入輸出,並且可以和元數據中心打通,通過一些可選的方式去定義自己的數據服務。"}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","text":"② 全鏈路打通,因爲有了數據接口到數據之間的血緣,並且依賴於現有數據和數據之間的血緣關係。其實從數據的生產到數據的加工到最終數據的使用,是一個全鏈路打通的一個狀態,我們可以有效地去評估這個數據對於下游的影響情況,並且去衡量數據的價值。"}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","text":"③ API集市,過去的使用背景往往是大家的數據表可能是基於各自的需求去開發各自的數據接口,這種複用性很難得到保障。通過API集市的方式,把所有基於某些表的數據接口展現出來,以及它所對應的輸入輸出,一個接口的元信息以更友好的形式體現出來。這樣,用戶再去新建或者再去尋找數據服務的時候,有可靠的統一的入口,可以有很好的達到接口複用的目的。"}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","text":"④ PULL和PUSH的這兩種能力,也是業務關注的兩種服務模式。PULL很容易理解,用戶通過發送數據訪問到數據接口,數據接口對請求進行解析和優化,通過各種數據源計算數據,以秒或者毫秒級的響應速度返回數據結果,但這種場景往往是面向小型的數據量。而在數據服務面向的廣大的業務當中,有一些場景下數據的時效性要求不是極高高,不需要到秒級或者毫秒級,但可以退而取其次可以達到一個分鐘級,從而用以換取可以獲得更大數據量的結果。這種情況下, 靠PULL的形式就很難以實現,所以需要通過PUSH回調的形式去通知調用數據服務的業務,去拉取這種大數據量的數據來滿足後續業務的需求。"}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","text":"⑤ 邏輯模型,可以給業務或者用戶一個更低門檻的或者更容易理解的一種展現形式。數據表往往有一些侷限性,所以需要通過一種模型的概念,也就是大家都能理解的一個文字性的描述的東西,去支持數據接口的一個定義來解決數據複用的能力。"}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","text":"⑥ 數據網關,其實一個很通用的能力,對於這種數據服務,一定要提供網關的集成能力,以及支持認證權限,然後限流和監控的這一整套的服務能力。"}]},{"type":"heading","attrs":{"align":null,"level":3},"content":[{"type":"text","text":"3. 數據服務架構"}]},{"type":"image","attrs":{"src":"https:\/\/static001.geekbang.org\/infoq\/ea\/ea5d26ada5c03f7d072e7f85cf494e9d.jpeg","alt":"圖片","title":null,"style":[{"key":"width","value":"75%"},{"key":"bordertype","value":"none"}],"href":null,"fromPaste":true,"pastePass":true}},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null}},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","marks":[{"type":"strong"}],"text":"關於數據服務架構:"}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","text":"自上往下,最上層是最終對外提供的API集市,大家可以通過REST API的形式去訪問,查詢數據以及獲取數據。下一層是查詢引擎,產品羣裏基本上是API的接口,更多的是以一種協議的形式存在,所以在查詢引擎的最上層是有一個解析的過程。根據協議標準將數據請求進行解析,獲取將要查詢的數據源,根據數據源信息獲取對應的數據模型,數據模型會通過底層元數據信息映射出對應的數據表;根據請求中的字段列表以及filter條件,最終將請求解析成一個邏輯執行計劃,並進一步產生一個物理執行計劃,計算出最終結果封裝成響應返回。這種調用形式其實分爲兩種,一種是同步的接口形式,也就是接口API,另外一種就是異步。異步就是說定義一個異步的時候,可能要比同步的方案要定義的信息更多一些,比如說給業務方提供的一個數據接口,數據的業務方需要去定製自己的回調接口,以及制定適合自己業務後續去處理的數據存儲地址,然後填寫到數據服務的定製化接口配置界面上。當數據請求過來之後,數據服務會把整個的接口請求轉換成一種DAG工作流的形式。因爲這個數據量比較大,靠一個本地的計算已經難以滿足,或者說是內存上可能會存在一些瓶頸,所以把它翻譯成一種離線的DAE形式來去計算,或者是判斷其他的覆蓋能力,計算完的數據,會存到用戶指定的地方,並且調用戶指定的回調接口來告知用戶,數據已經準備好,可以去某某地方拉取。這個數據存儲的最終形式就是按照用戶定義的那種結果形式去存儲,這樣供業務前臺可以快速的去拿到數據去進行後續的處理,這些產品其實都是通過統一的查詢能力去完成。"}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","text":"查詢引擎的下一層是API的配置層。對API配置功能的拆解,首先是接口定義,接口的名字是什麼,接口的描述以及傳入的參數,輸出的結果,包括filter的條件。其次是協議的管理,不僅支持AGP的協議,還可以支持RPC的各種協議。還有異步的形勢下,需要用戶填寫自己的回調地址,或者說指定一下數據存儲的位置。"}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null}},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","text":"再往下是對於整個數據服務的管理模塊,主要分爲數據源管理、版本管理、資源管理、流量管理等。數據源管理是對數據接口的數據服務自身的一個管理。對於資源的管理能力,體現在數據服務常常會消耗服務器資源,然後對接公司的QAE的這套體系,就是說一套虛擬化的一個容器。流量管理就是對於每一個服務,可能都需要有一定的流量的管理措施去衡量以及動態調整服務的副本數。"}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null}},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","text":"左邊就是網關,一個數據服務或者是一個服務接口所具備的能力,比如說一些安全認證及權限訪問的問題,包括數據服務本身運行的穩定性的監控,還有數據接口調用分析,包括當接口併發量突然有激增的情況發生時,需要有限流的能力。"}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null}},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","text":"最底層是數據源,爲了後續對數據服務做一個更深層次分析,我們需要對日誌進行統一採集,統一管理。"}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","text":"最右邊是整個數據中臺裏面很重要的一塊——元數據中心,因爲現在看無論是任何一個模塊,任何一個數據的分層,對元數據的依賴都是相當重的。"}]},{"type":"heading","attrs":{"align":null,"level":3},"content":[{"type":"text","text":"4. 元數據服務組成"}]},{"type":"image","attrs":{"src":"https:\/\/static001.geekbang.org\/infoq\/cc\/cc3dd2b773e3d387c1aeb47351d90fc0.jpeg","alt":"圖片","title":null,"style":[{"key":"width","value":"75%"},{"key":"bordertype","value":"none"}],"href":null,"fromPaste":true,"pastePass":true}},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null}},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","text":"元數據的概念比較難理解,其實元數據就是數據的數據。對於元數據服務,現在提供了兩種服務形式。一種是搜索服務,就是大家可以通過已知的一些信息去進行搜索,拿到數據資產的一些更詳細的說明。比如可以通過搜表名、搜維度,搜業務線的名稱、搜指標,就可以拿到跟搜索詞相關的數據資產,並且進一步查看它的詳細信息。另外一種形式可能比較偏向導性的或者結構化的一種展現形式,也就是業務圖譜。我們可以從業務的角度出發,一層一層地圈定更細的範圍來查找我們想要看到的數據資產。"}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null}},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","text":"元數據中心給用戶展現的信息主要是包括幾種,一種是基礎信息,也就是說數據的定義,包括任務的定義、數據的生產者、安全責任人、數據的樣例以及變更的歷史。另一種是數據資產本身的特點,首先是數據資產等級,我們需要對不同的資產做分級,以保證不同等級的資產有不同的保障機制,然後更多的精力放到重要資產上。其次是對數據的健康度和質量的體現,我們會對於所有的數據資產分級地檢測質量,包括它的產出時間來對數據資產進行定級。最後是數據流行度,主要是爲了體現數據在下游使用當中的使用次數,以此來表明數據的重要程度。我們也會把數據的流行度作爲數據價值的一個重要衡量指標。"}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null}},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","text":"除了這些元信息之外,我們可能也需要對於整個數據生態的一數據標準,通過元數據中心去對外去體現。比如業務的信息,包括業務的所屬部門、負責人的信息,以及業務相關的一些指標維度和數據模型,把元信息以這兩種服務形式對外提供,其實是爲了可以讓使用方可以更快速更高效地去找數據,把數據能理解和使用起來,並且可以指導用戶去快速地開發自己的數據需求。"}]},{"type":"heading","attrs":{"align":null,"level":3},"content":[{"type":"text","text":"5. 元數據服務架構"}]},{"type":"image","attrs":{"src":"https:\/\/static001.geekbang.org\/infoq\/97\/97e8d19603d2975c82094f0e55a89785.jpeg","alt":"圖片","title":null,"style":[{"key":"width","value":"75%"},{"key":"bordertype","value":"none"}],"href":null,"fromPaste":true,"pastePass":true}},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null}},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","text":"關於元數據的服務架構,左側是相當於元數據的採集員,血緣採集其實是把數據資產由血緣形式體現出來,讓每一個數據知道其的上下游是誰,然後在一些變更的時候能及時通知,並且如果數據上有一些變化,也可以及時的通過數據血緣的能力去找到自己的上游來排查數據變化的原因。血緣採集主要是分以下幾部分:"}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null}},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","text":"一是通過HiveHook採集,Hive表之間的血緣,然後sparkhook採集spark的生產數據,就是發個任務生產的數據,以及它的數據源之間的關係。接下來是數據集成,是對數據異構數據源的同步能力,我們把這種導入導出的一種血緣管控起來。最後是pingback,因爲pingback是很多數據產生的一個源頭,所以這一塊是說我們從數據產生最源頭到最終數據的使用,全鏈路渲染的採集的方式。"}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null}},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","text":"下邊是對於非關係型數據的元數據採集,比如說Hive、Kafka、MySQL,pingback,還有數據報表。這些更多的是對於數據資產的原始信息的採集方式。然後通過消息隊列和API的這兩種形式實現離線或者是實時的元數據採集流程。元數據中心可以通過JanusGraph去對血緣進行一個整體的管理。我們現在的血緣其實支持pingback到Hive,Hive到Hive,Hive到MySQL,然後MySQL到報表的整體的血緣關係。這樣我們所有的數據資產,正常的來說應該都在這整個的血緣網當中,而且通過JanusGraph我們可以通過這種圖結構的數據庫去快速查找一些數據資產,包括它的上下游關係以及相互依賴關係。"}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null}},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","text":"然後技術元數據和業務元數據,主要是包括一些字段信息、存儲信息、分區信息、資產信息、數據模型、數據流行度等等。爲了快速查找,把索引信息存到了ES裏,用於實現快速的搜索能力,並且這種詳細信息我們可以通過JanusGraph或者其他的這種數據庫存儲形式去獲取。"}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null}},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","text":"最後,元數據中心對外的體驗形式主要有兩種,一種叫查詢API,它可以對接到各種的業務系統上。另一種叫搜索API,搜索API就是現在平臺的展現形式,後面展現數據庫的搜索APIDE 能力。"}]},{"type":"heading","attrs":{"align":null,"level":3},"content":[{"type":"text","text":"6. 推理服務介紹"}]},{"type":"image","attrs":{"src":"https:\/\/static001.geekbang.org\/infoq\/ed\/ed5dfe50b7dc0b866b374324f3afe825.jpeg","alt":"圖片","title":null,"style":[{"key":"width","value":"75%"},{"key":"bordertype","value":"none"}],"href":null,"fromPaste":true,"pastePass":true}},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null}},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","text":"接下來對推理服務作一個簡單的介紹,前面花了很大篇幅講了數據服務和元數據服務,而推理服務其實是基於我們現在智能化建設的角度提出的。我們在離線部分有一個叫機器學習平臺,它可以通過和我們現有的數據開發平臺打通去做一些離線的特徵管理、樣板管理、特徵訓練,然後通過和數據服務打通,能支持模型的自動複製。推理服務還可以可以對外提供AGTP或者RPC的接口服務,對各種前臺應用提供實時在線的一個預測服務能力,並且它可以支持預加載或者熱更新,以及支持ABTest。"}]},{"type":"heading","attrs":{"align":null,"level":3},"content":[{"type":"text","text":"7. 推理服務架構"}]},{"type":"image","attrs":{"src":"https:\/\/static001.geekbang.org\/infoq\/ae\/ae9907dd0527a39ad56c7f6edc6cde16.jpeg","alt":"圖片","title":null,"style":[{"key":"width","value":"75%"},{"key":"bordertype","value":"none"}],"href":null,"fromPaste":true,"pastePass":true}},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null}},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","text":"推理服務的架構,它主要分爲幾個模塊。其中,模型的管理平臺,通過離線訓練,把一些模型數據通過PMML的形式來管理起來,然後輸出到在線預測管理平臺上。再通過預測管理平臺去部署推理服務,同時運維監控平臺對於線上的推理服務做一些性能或者心跳方面的監測。"}]},{"type":"heading","attrs":{"align":null,"level":2},"content":[{"type":"text","text":"場景應用"}]},{"type":"heading","attrs":{"align":null,"level":3},"content":[{"type":"text","text":"1. 數據服務案例"}]},{"type":"image","attrs":{"src":"https:\/\/static001.geekbang.org\/infoq\/96\/96a7341611ff1839849213edccc1b67a.jpeg","alt":"圖片","title":null,"style":[{"key":"width","value":"75%"},{"key":"bordertype","value":"none"}],"href":null,"fromPaste":true,"pastePass":true}},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null}},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","text":"數據服務平臺其實是數據平臺和業務前臺以及數據源之間的關係,可以說是管理各種數據源發佈同步數據的接口,然後提供給Client。Client其實很多時候是業務前臺來提供同步的調用法。右側的異步的交流能力是通過發佈一個異步的數據接口來把數據源做一些DAG的管理和處理,把最終的數據發佈到消息隊列上,同時去回調業務前臺的回調接口,再通知業務前臺去消息隊列獲取結果數據。"}]},{"type":"heading","attrs":{"align":null,"level":3},"content":[{"type":"text","text":"2. 數據服務平臺"}]},{"type":"image","attrs":{"src":"https:\/\/static001.geekbang.org\/infoq\/cc\/cc0a89422b0a7542f642f462e5dd4d7c.jpeg","alt":"圖片","title":null,"style":[{"key":"width","value":"75%"},{"key":"bordertype","value":"none"}],"href":null,"fromPaste":true,"pastePass":true}},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null}},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","text":"上圖所示是數據服務的應用場景,左圖是數據服務的API集市。上面有數據服務的簡單介紹、創建人、創建部門以及上線時間。右側是接口的詳細信息,比如上線時間、有效期、緊急程度、接口的地址說明、接口描述和一些列的解釋,這個列的解釋就是最終的輸出的結果。"}]},{"type":"heading","attrs":{"align":null,"level":3},"content":[{"type":"text","text":"3. 元數據服務案例"}]},{"type":"image","attrs":{"src":"https:\/\/static001.geekbang.org\/infoq\/0b\/0b49f874713b42de72015202f0977e50.jpeg","alt":"圖片","title":null,"style":[{"key":"width","value":"75%"},{"key":"bordertype","value":"none"}],"href":null,"fromPaste":true,"pastePass":true}},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null}},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","text":"雲數據服務就是數據源和數據使用方進行打通。上游的數據生產、數據採集和數倉建設來對元數據進行生產,然後通過元數據服務,把元數據的輸出到比如數據圖譜報表系、自助查詢系統以及後續的數據治理體系當中。"}]},{"type":"heading","attrs":{"align":null,"level":3},"content":[{"type":"text","text":"4. 數據圖譜"}]},{"type":"image","attrs":{"src":"https:\/\/static001.geekbang.org\/infoq\/97\/97e99a00829608f853260298b96a5deb.jpeg","alt":"圖片","title":null,"style":[{"key":"width","value":"75%"},{"key":"bordertype","value":"none"}],"href":null,"fromPaste":true,"pastePass":true}},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null}},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null}},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","text":"這是數據圖譜的界面,其實是元數據一個體現形式。通過搜索可以快速地查找到一些表,然後再進一步去看右下方表的詳細信息,包括所屬於的項目、集羣、庫名、owner、創建人,以及相關的字段信息等。除此之外還會有一些血緣數據、血緣關係,包括所關聯的模型、變更歷史以及使用記錄。"}]},{"type":"heading","attrs":{"align":null,"level":2},"content":[{"type":"text","text":"未來展望"}]},{"type":"image","attrs":{"src":"https:\/\/static001.geekbang.org\/infoq\/96\/96b0b34cb01eabea01828ebc10742bb0.jpeg","alt":"圖片","title":null,"style":[{"key":"width","value":"75%"},{"key":"bordertype","value":"none"}],"href":null,"fromPaste":true,"pastePass":true}},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null}},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","text":"最後是對數據服務未來的展望。在數據服務上我們其實還有很多事情要去完成,主要爲以下四個方面:"}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null}},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","text":"① 第一塊是需要做一些跨數據源的合併,目前雖然我們做到了一些小數據量的跨數據源合併,但是大數據量的跨數據源合併能還需要再深挖升級。"}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","text":"② 第二塊是服務接口組合,也是說我們如果有了一些原子接口,怎麼去把它組合成更復雜更靈活的服務接口也是未來要解決的。"}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","text":"③ 第三塊就是服務模型化,就是如何通過數據模型去構建服務,讓使用方不去關注表的底層表的概念,或者底層表的信息,就能創建出符合自己預期的模型。"}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","text":"④ 最後一塊是自動化管理,目前主要是人爲地定義接口,後續需要把接口定義的各個環節儘可弱化,通過生成一個接口,然後內部的request模板或者response的字段說明,可以通過接口自動解析,然後以更靈活的方式體現出來,不需要每一個接口都事先定義才能使用。"}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null}},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","marks":[{"type":"strong"}],"text":"嘉賓介紹:"}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","marks":[{"type":"strong"}],"text":"馬金韜"}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","text":"愛奇藝 | 數據中臺負責人"}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","text":"馬金韜,目前就職於愛奇藝,負責數據中臺的規劃、建設和推廣工作,前後在360、百度和阿里巴巴等多家公司從事廣告和大數據相關工作,目前主要關注大數據技術生態、發展方向和業務價值實現等方向。"}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null}},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","text":"本文轉載自:DataFunTalk(ID:dataFunTalk)"}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","text":"原文鏈接:"},{"type":"link","attrs":{"href":"https:\/\/mp.weixin.qq.com\/s\/xPLmG0iPcQOe30II1mLEHQ","title":"xxx","type":null},"content":[{"type":"text","text":"愛奇藝數據中臺的建設實踐"}]}]}]}
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章