成人免费xxxxx在线视频软件_久久精品久久久_亚洲国产精品久久久_天天色天天色_亚洲人成一区_欧美一级欧美三级在线观看

火山引擎 DataLeap 數(shù)據(jù)血緣技術(shù)建設(shè)實(shí)踐

大數(shù)據(jù)
本文介紹的數(shù)據(jù)血緣能力和實(shí)踐,目前大部分已通過(guò)火山引擎 DataLeap 對(duì)外提供服務(wù),歡迎大家點(diǎn)擊閱讀原文體驗(yàn)。

經(jīng)驗(yàn)一:數(shù)據(jù)血緣模型的分層架構(gòu)

1. 挑戰(zhàn)

首先介紹一下字節(jié)內(nèi)部數(shù)據(jù)血緣遇到的挑戰(zhàn)。

隨著公司業(yè)務(wù)擴(kuò)張、用戶數(shù)量持續(xù)增長(zhǎng)以及數(shù)倉(cāng)建設(shè)不斷完善,元數(shù)據(jù)種類和數(shù)量也經(jīng)歷了非線性增長(zhǎng),并在此期間涌現(xiàn)出一些問(wèn)題。

第一,擴(kuò)展性。好的擴(kuò)展性可以在面對(duì)新型元數(shù)據(jù)血緣時(shí)保證快速接入和迭代,而擴(kuò)展性不佳則會(huì)導(dǎo)致在業(yè)務(wù)變化時(shí)需要不停地重構(gòu)來(lái)適應(yīng)業(yè)務(wù),對(duì)業(yè)務(wù)造成很多影響。

第二,性能。一個(gè)模型本身的插入和更新效率會(huì)直接影響數(shù)據(jù)的導(dǎo)入導(dǎo)出的流程,這些都會(huì)帶來(lái)更直觀的業(yè)務(wù)上的感受,所以需要考慮如何保證環(huán)節(jié)高效性。

第三,時(shí)效性。很多應(yīng)用場(chǎng)景對(duì)正確率格外敏感,如果血緣數(shù)據(jù)有延遲,其實(shí)就等于血緣的不準(zhǔn)確,會(huì)對(duì)業(yè)務(wù)造成影響。

最后,賦能業(yè)務(wù)。技術(shù)服務(wù)于業(yè)務(wù),業(yè)務(wù)增長(zhǎng)會(huì)幫助技術(shù)升級(jí)迭代,技術(shù)創(chuàng)新也會(huì)促進(jìn)業(yè)務(wù)發(fā)展。在字節(jié)內(nèi)部,我們會(huì)根據(jù)業(yè)務(wù)特點(diǎn),考慮業(yè)務(wù)需要,將技術(shù)成本與業(yè)務(wù)收益做平衡,最終做出數(shù)據(jù)模型決策。總而言之,數(shù)據(jù)模型沒(méi)有完美的方案,只有最適合企業(yè)自身業(yè)務(wù)、適合當(dāng)前階段的數(shù)據(jù)血緣方案。

2. 數(shù)據(jù)血緣模型 - 展示層

字節(jié)內(nèi)部有很多種元數(shù)據(jù)類型,包括線上傳統(tǒng)的離線數(shù)倉(cāng) Hive、OLAP 分析引擎 ClickHouse,以及實(shí)時(shí)側(cè)元數(shù)據(jù),如 Kafka 和 ES 以及 Redis。這些元數(shù)據(jù)所對(duì)應(yīng)的表/Topic 都統(tǒng)一維護(hù)在元數(shù)據(jù)平臺(tái)上,目前血緣展示層是以這些數(shù)據(jù)資產(chǎn)作為主視角。

如下圖所示,中心數(shù)據(jù)資產(chǎn)包含普通字段和分區(qū)字段等信息,還可以從圖中看到中心資產(chǎn)上下游資產(chǎn)信息。圖中資產(chǎn)和資產(chǎn)之間連接的邊,代表的是生產(chǎn)關(guān)系:1個(gè)任務(wù)讀取了上游的資產(chǎn),產(chǎn)生了下游的資產(chǎn)。

圖片

3. 數(shù)據(jù)血緣模型 - 抽象層

接下來(lái)介紹,火山引擎 DataLeap 如何設(shè)計(jì)抽象層。

抽象層是整個(gè)數(shù)據(jù)血緣的數(shù)據(jù)模型,主要包含兩種節(jié)點(diǎn),一種是資產(chǎn)節(jié)點(diǎn),另外一種是任務(wù)節(jié)點(diǎn)。

在圖中,資產(chǎn)節(jié)點(diǎn)用圓形表示,任務(wù)節(jié)點(diǎn)用菱形表示。具體舉個(gè)例子:

  • 一個(gè) FlinkSQL 任務(wù)消費(fèi)了 Kafka 的 topic,然后寫入到一個(gè) Hive 的表里,那么 Kafka 的 topic 和 hive 表就是表資產(chǎn)節(jié)點(diǎn),而 FlinkSQL 消費(fèi)任務(wù)就是中間的任務(wù)節(jié)點(diǎn)。
  • 一個(gè) Kafka 的 topic 里面可能會(huì)定義自己的 schema,包括多個(gè)字段,例如 schema 里包含字段 a、b、c,通過(guò) FlinkSQL 任務(wù),比如一個(gè) SQL:insert into hiveTable select a,b,c from kafka Topic,通過(guò)進(jìn)行這樣的處理,字段 a、b、c 和這個(gè) hive 的字段 d 就產(chǎn)生了血緣關(guān)系。
  • 創(chuàng)建子任務(wù)的節(jié)點(diǎn),把幾個(gè)字段節(jié)點(diǎn)連接起來(lái),每個(gè)子任務(wù)節(jié)點(diǎn)會(huì)和子任務(wù)節(jié)點(diǎn)通過(guò)從屬關(guān)系的邊來(lái)進(jìn)行連接,字段節(jié)點(diǎn)和每一個(gè)表資產(chǎn)節(jié)點(diǎn)也會(huì)通過(guò)從屬關(guān)系的邊進(jìn)行連接。本身這個(gè)任務(wù)和資產(chǎn)之間會(huì)有消費(fèi)生產(chǎn)關(guān)系的邊連接。

以上就是整個(gè)血緣數(shù)據(jù)模型在抽象層的展現(xiàn)。

這樣設(shè)計(jì)有以下好處:

首先,任務(wù)資產(chǎn)的抽象是對(duì)生產(chǎn)平臺(tái)上和在各種任務(wù)平臺(tái)上廣泛直接的任務(wù)關(guān)系的抽象,當(dāng)再去接入新元數(shù)據(jù)或新任務(wù)類型時(shí),我們只需要擴(kuò)展當(dāng)前抽象的資產(chǎn)節(jié)點(diǎn)和任務(wù)節(jié)點(diǎn),即可把新加入進(jìn)來(lái)的任務(wù)鏈路所對(duì)應(yīng)的血緣接入到存儲(chǔ)中。這種數(shù)據(jù)模型也能方便地更新和刪除血緣鏈路,維持時(shí)效性。

其次,在字節(jié)內(nèi)部的血緣建設(shè)中,還存在接入各種血緣鏈路的難點(diǎn)。基于目前設(shè)計(jì)可以減少開發(fā)成本,在更新血緣的時(shí)只需要更新中心任務(wù)節(jié)點(diǎn),并且把中心任務(wù)節(jié)點(diǎn)所對(duì)應(yīng)的子任務(wù)節(jié)點(diǎn)的邊也做相應(yīng)的更新和刪除,就完成了血緣信息的插入和更新。

圖片

4. 數(shù)據(jù)血緣模型 - 實(shí)現(xiàn)層

在實(shí)現(xiàn)層,火山引擎 DataLeap 主要基于 Apache Atlas 來(lái)實(shí)現(xiàn)。Apache Atlas 本身也是一個(gè)數(shù)據(jù)治理的產(chǎn)品,它預(yù)定義了一些元數(shù)據(jù)的類型,整個(gè)類型系統(tǒng)有比較好的擴(kuò)展性。在 Atlas 本身的 DataSet 和 Process 元數(shù)據(jù)定義上,我們引入了字節(jié)內(nèi)部獨(dú)有的業(yè)務(wù)元數(shù)據(jù)的屬性和子任務(wù)定義,最終把任務(wù)相關(guān)的元數(shù)據(jù)存儲(chǔ)起來(lái)。

Atlas 本身也支持血緣的查詢能力,通過(guò) Apache Atlas 暴露的接口來(lái)轉(zhuǎn)換成圖上查找某個(gè)節(jié)點(diǎn)對(duì)應(yīng)血緣關(guān)系的邊,以此實(shí)現(xiàn)血緣查詢。

圖片

5. 數(shù)據(jù)血緣模型 - 存儲(chǔ)層

在存儲(chǔ)層,目前主要基于 Apache Atlas 原生圖數(shù)據(jù)庫(kù)——JanusGraph。JanusGraph 底層支持 HBase。我們將每條邊的關(guān)系作為兩邊的資產(chǎn)節(jié)點(diǎn)的屬性,存入到對(duì)應(yīng) RowKey 的獨(dú)立 cell 中。

另外,我們也對(duì)存儲(chǔ)做了相關(guān)的改造,如字節(jié)內(nèi)部自研的存算分離 key-value 存儲(chǔ)。我們也在獨(dú)立環(huán)境中會(huì)做輕量級(jí)部署,同時(shí)基于性能或成本,以及部署復(fù)雜度,把存儲(chǔ)切換為 OLTP 數(shù)據(jù)庫(kù),比如 MYSQL 數(shù)據(jù)庫(kù)。

圖片

以上就是整個(gè)數(shù)據(jù)血緣模型的設(shè)計(jì)部分。通過(guò)這樣的數(shù)據(jù)血緣模型,我們可以減少新的數(shù)據(jù)血緣鏈路接入開發(fā)成本,同時(shí)也很方便更新和刪除血緣。

經(jīng)驗(yàn)二:三個(gè)數(shù)據(jù)血緣優(yōu)化方向

第二部分將主要介紹在火山引擎 DataLeap 中典型的數(shù)據(jù)血緣優(yōu)化,包括實(shí)時(shí)數(shù)據(jù)血緣更新優(yōu)化、血緣查詢優(yōu)化和血緣數(shù)據(jù)開放式導(dǎo)出。

1.實(shí)時(shí)數(shù)據(jù)血緣優(yōu)化

首先,實(shí)時(shí)數(shù)據(jù)血緣的更新。字節(jié)內(nèi)部現(xiàn)在數(shù)據(jù)血緣的更新方式是通過(guò) T+1 的鏈路和實(shí)時(shí)鏈路來(lái)更新。由于內(nèi)部有很多場(chǎng)景對(duì)時(shí)效性的要求特別高,如果數(shù)據(jù)血緣更新不太及時(shí),就會(huì)影響血緣準(zhǔn)確率,甚至影響業(yè)務(wù)使用。

在數(shù)據(jù)血緣的架構(gòu)設(shè)計(jì)之初就已經(jīng)支持了 T+1 的導(dǎo)入,不過(guò)時(shí)效性始終是按天為周期的。

  • 數(shù)據(jù)血緣任務(wù)周期性的拉取所有在運(yùn)行任務(wù)的配置信息,調(diào)用平臺(tái)的API拉取對(duì)應(yīng)任務(wù)相關(guān)的配置或者 SQL
  • 對(duì)于 SQL 類型的任務(wù)會(huì)調(diào)用另外一個(gè)解析引擎服務(wù)提供的解析能力來(lái)去解析數(shù)據(jù)血緣的信息
  • 再和元數(shù)據(jù)平臺(tái)登記的資產(chǎn)信息相匹配,最后構(gòu)建出一個(gè)任務(wù)資產(chǎn)節(jié)點(diǎn)的上下游,把這個(gè)任務(wù)資產(chǎn)節(jié)點(diǎn)和表資產(chǎn)節(jié)點(diǎn)之間的邊更新到圖數(shù)據(jù)庫(kù)中去。

在實(shí)時(shí)更新的時(shí)候,我們有兩種方案:

方案一:是在引擎?zhèn)龋丛谌蝿?wù)運(yùn)行時(shí),通過(guò)任務(wù)執(zhí)行引擎把該任務(wù)在構(gòu)建 DAG 后生成的血緣信息通過(guò) Hook 送入。

  • 優(yōu)點(diǎn):在引擎?zhèn)鹊难壊杉窍鄬?duì)獨(dú)立的,每個(gè)引擎在采集血緣的時(shí)候不會(huì)互相影響。
  • 缺點(diǎn):
  • 每個(gè)引擎都需要適配一個(gè)血緣采集的 Hook,一些中小企業(yè)在引擎?zhèn)榷伎赡苊媾R的一個(gè)問(wèn)題是同一個(gè)引擎可能在線上運(yùn)行會(huì)有多個(gè)版本,那么適配的成本就會(huì)比較高,需要每個(gè)版本都適配一次。
  • Hook 還有一定的侵入性,會(huì)對(duì)本身的作業(yè)有一定的負(fù)擔(dān)。

方案二:在任務(wù)開發(fā)的平臺(tái)上把這個(gè)任務(wù)變更的消息送出,當(dāng)任務(wù)的生命周期變化的時(shí)候,通過(guò) Hook 消息把任務(wù)狀態(tài)變更消息通過(guò)調(diào)用API進(jìn)行登記或者發(fā)送到 MQ 進(jìn)行解耦,血緣服務(wù)收到這份通知之后,再主動(dòng)調(diào)用解析服務(wù)來(lái)更新這個(gè)任務(wù)血緣。

  • 優(yōu)點(diǎn):擴(kuò)展性好,不會(huì)受到引擎?zhèn)认拗疲磥?lái)要接入新的引擎時(shí),只需要在這個(gè)任務(wù)平臺(tái)上去創(chuàng)建對(duì)應(yīng)的任務(wù),把這個(gè)任務(wù)變更的消息送出,就可以得到這個(gè)血緣更新的通知,然后去更新血緣。
  • 缺點(diǎn):對(duì)血緣解析服務(wù)平臺(tái)會(huì)有一定的改造成本,任務(wù)間的消息可能會(huì)互相影響

綜合比較,我們采用了第二種方案,并且引入了 MQ 進(jìn)一步的降低任務(wù)平臺(tái)和血緣平臺(tái)的耦合,這種做法可能犧牲了部分的延遲,但是會(huì)讓整個(gè)鏈路變得更加可靠,最終減低了血緣這邊整體的延遲,時(shí)間周期從天減低到了分鐘級(jí)別。

以上就是我們?cè)谘墪r(shí)效性上的優(yōu)化。

圖片

2.數(shù)據(jù)查詢優(yōu)化

第二個(gè)優(yōu)化點(diǎn)是查詢。目前字節(jié)數(shù)據(jù)血緣查詢依賴 Apache Atlas。在使用該血緣查詢服務(wù)時(shí),有一個(gè)很普遍的場(chǎng)景,就是多節(jié)點(diǎn)查詢的場(chǎng)景。在影響分析的過(guò)程中,我們經(jīng)常會(huì)查詢一張表的全部字段血緣,會(huì)轉(zhuǎn)化成查詢多個(gè)節(jié)點(diǎn)的血緣上下游關(guān)系,需要解決查詢效率的問(wèn)題。

有兩種基本的解決方案:

一種是直接在應(yīng)用層進(jìn)行封裝,對(duì) Apache Atlas 血緣服務(wù)的暴露層新增一個(gè)接口,比如通過(guò)循環(huán)遍歷去執(zhí)行單個(gè)查詢,這樣改造的內(nèi)容是很少的,但是其實(shí)性能并沒(méi)有提升,而且實(shí)現(xiàn)比較暴力。

另外一種方式是改造 Apache Atlas 血緣服務(wù)對(duì)圖庫(kù)查詢的調(diào)用。因?yàn)?Atlas 使用 JanusGraph 作為底層的實(shí)現(xiàn),提供了一部分的抽象,但是只暴露了單節(jié)點(diǎn)的查詢,而沒(méi)有批量查詢的方法,我們還需要適配 JanusGraph 這邊批量查詢的接口,才可以達(dá)到提速的效果。

所以我們?cè)趫D數(shù)據(jù)庫(kù)的操作入口增加了一個(gè)新的批量查詢的方法,通過(guò)這種方式對(duì)血緣節(jié)點(diǎn)進(jìn)行批量查詢,來(lái)進(jìn)一步提升性能。同時(shí) Atlas 在查詢血緣節(jié)點(diǎn)回來(lái)之后,需要進(jìn)行一個(gè)映射,映射到具體的實(shí)體上去拿回它的一些屬性,在這個(gè)過(guò)程中我們也加入了異步批量的操作方式來(lái)進(jìn)一步的提升性能。經(jīng)過(guò)優(yōu)化之后,我們?cè)趯?duì)一些引用熱度比較高的表資產(chǎn)節(jié)點(diǎn)或者查詢表資產(chǎn)或者對(duì)應(yīng)列的時(shí)候,效率都可以得到明顯提升。

圖片

3.血緣數(shù)據(jù)開放式導(dǎo)出

第三個(gè)優(yōu)化點(diǎn)是在血緣的導(dǎo)出上提供了多種方式,除了在頁(yè)面上可視化的查詢血緣的能力之上,我們也陸續(xù)提供了很多使用血緣的方式,包括下載到 Excel 或者查詢這個(gè)血緣數(shù)據(jù)導(dǎo)出的數(shù)倉(cāng)表,或者直接使用服務(wù)平臺(tái)側(cè)開放的 API,還可以訂閱血緣變更的 topic,來(lái)直接監(jiān)聽血緣的變更,下游的用戶可以根據(jù)自己的開發(fā)場(chǎng)景,以及業(yè)務(wù)對(duì)準(zhǔn)確率、覆蓋率的要求,來(lái)決定到底使用哪種方式來(lái)消費(fèi)血緣數(shù)據(jù)。

圖片

經(jīng)驗(yàn)三:四大數(shù)據(jù)血緣用例解析

接下來(lái)第三部分主要介紹數(shù)據(jù)血緣的具體用例,介紹字節(jié)內(nèi)部是如何使用數(shù)據(jù)血緣的。在字節(jié)內(nèi)部數(shù)據(jù)血緣用例的典型使用領(lǐng)域主要包括:資產(chǎn)領(lǐng)域、開發(fā)領(lǐng)域、治理領(lǐng)域和安全領(lǐng)域。

1.數(shù)據(jù)血緣用例 – 資產(chǎn)領(lǐng)域

首先在資產(chǎn)領(lǐng)域,數(shù)據(jù)血緣主要應(yīng)用在資產(chǎn)熱度的計(jì)算。在資產(chǎn)熱度計(jì)算時(shí),有些資產(chǎn)會(huì)被頻繁消費(fèi)和廣泛引用。某個(gè)資產(chǎn)被眾多下游引用,是其自身權(quán)威性的體現(xiàn),而這種權(quán)威性的證明需要一種定量的度量,因此需要引入“資產(chǎn)熱度”的概念。資產(chǎn)熱度本身是參考網(wǎng)頁(yè)排名算法 PageRank 算法實(shí)現(xiàn)的,同時(shí)我們也提供了資產(chǎn)熱度值,根據(jù)資產(chǎn)的下游血緣依賴的情況,定義了資產(chǎn)引用的熱度值,如果某個(gè)資產(chǎn)引用熱度值越高,就代表了這個(gè)資產(chǎn)更應(yīng)該被信任,數(shù)據(jù)更可靠。

另外,血緣也可以幫助我們理解數(shù)據(jù)。比如用戶在元數(shù)據(jù)平臺(tái)或者血緣平臺(tái)上查詢數(shù)據(jù)資產(chǎn)節(jié)點(diǎn)的時(shí)候,可能是想要進(jìn)行下一步的作業(yè)開發(fā)或者是排查一些問(wèn)題,那么他就需要首先找到這個(gè)數(shù)據(jù)資產(chǎn)。用戶不了解數(shù)據(jù)產(chǎn)生的過(guò)程,就無(wú)法了解數(shù)據(jù)的過(guò)去和未來(lái)。也就是哲學(xué)上經(jīng)典的問(wèn)題:這個(gè)表到底是怎么來(lái)的?它具體有哪些含義?我們就可以通過(guò)數(shù)據(jù)血緣來(lái)找到具體表的上下游信息。

圖片

2.數(shù)據(jù)血緣用例 – 開發(fā)領(lǐng)域

數(shù)據(jù)血緣的第二個(gè)用例是開發(fā)領(lǐng)域。在開發(fā)領(lǐng)域中會(huì)有兩個(gè)應(yīng)用:影響分析歸因分析。

影響分析應(yīng)用

影響分析即事前分析,指當(dāng)表資產(chǎn)產(chǎn)生變更時(shí),能夠事前感知影響。血緣上游的資產(chǎn)負(fù)責(zé)人在修改對(duì)應(yīng)的生產(chǎn)任務(wù)時(shí),需要通過(guò)血緣查看資產(chǎn)下游,由此判斷資產(chǎn)修改產(chǎn)生的影響,從而針對(duì)修改的兼容性或者某條鏈路的重要性,完成通知等操作,否則會(huì)因?yàn)槿鄙偻ㄖ斐蓢?yán)重的生產(chǎn)事故。

歸因分析應(yīng)用

歸因分析應(yīng)用是事后分析。比如當(dāng)某個(gè)任務(wù)所產(chǎn)生的表出現(xiàn)了問(wèn)題,我們就可以通過(guò)查詢血緣的上游,逐級(jí)尋找到血緣上游改動(dòng)的任務(wù)節(jié)點(diǎn)或者資產(chǎn)節(jié)點(diǎn)來(lái)排查出造成問(wèn)題的根因是什么。在發(fā)現(xiàn)和定位出了問(wèn)題之后,我們會(huì)去修復(fù)數(shù)據(jù),在修復(fù)數(shù)據(jù)的時(shí)候,我們可以通過(guò)血緣來(lái)查找任務(wù)或者表的依賴關(guān)系,對(duì)于離線數(shù)倉(cāng)可能就需要重跑某個(gè)分區(qū)的輸出數(shù)據(jù),我們需要根據(jù)血緣來(lái)劃定范圍,只需要回溯對(duì)應(yīng)受影響的下游任務(wù)就可以了,減少一些不必要的資源浪費(fèi)。

圖片

3.數(shù)據(jù)血緣用例 – 治理領(lǐng)域

在治理領(lǐng)域應(yīng)用中,血緣關(guān)系在字節(jié)內(nèi)部也有典型的使用場(chǎng)景:鏈路狀態(tài)追蹤數(shù)倉(cāng)治理。

鏈路狀態(tài)追蹤

比如在重要的節(jié)日或者活動(dòng)的時(shí)候,我們需要事先挑選一些需要重要保障的任務(wù),這時(shí)就需要通過(guò)血緣關(guān)系來(lái)梳理出鏈路的主干,即核心鏈路。然后去對(duì)應(yīng)的做重點(diǎn)的治理和保障,比如簽署 SLA。

數(shù)倉(cāng)治理

數(shù)據(jù)血緣也會(huì)用來(lái)輔助數(shù)倉(cāng)建設(shè),如規(guī)范化治理。數(shù)倉(cāng)規(guī)范化治理包括清理數(shù)倉(cāng)分層不合理的引用、數(shù)倉(cāng)分層不規(guī)范、冗余表等。例如,來(lái)自同一個(gè)上游表,但屬于不同層級(jí)的兩個(gè)表,屬于冗余,將通過(guò)數(shù)據(jù)血緣輔助清理。

圖片

4.數(shù)據(jù)血緣用例 – 安全領(lǐng)域

安全相關(guān)問(wèn)題在一些跨國(guó)企業(yè)或國(guó)際化產(chǎn)品會(huì)比較常見(jiàn),每個(gè)國(guó)家地區(qū)的安全政策是不一樣的。我們?cè)谧霭踩弦?guī)檢查時(shí),每個(gè)資產(chǎn)都有對(duì)應(yīng)的資產(chǎn)安全等級(jí),這個(gè)資產(chǎn)安全等級(jí)會(huì)有一定的規(guī)則,比如我們規(guī)定下游資產(chǎn)的安全等級(jí)一定要高于上游的安全資產(chǎn)等級(jí),否則就會(huì)有權(quán)限泄露問(wèn)題或者是其他的安全問(wèn)題。基于血緣,我們可以掃描到這些規(guī)則涉及的資產(chǎn)下游,來(lái)配置相應(yīng)掃描規(guī)則,然后進(jìn)行安全合規(guī)排查,以便做出對(duì)應(yīng)的治理。

另外,血緣在標(biāo)簽傳播方面也有所應(yīng)用,可以通過(guò)血緣的傳播鏈路來(lái)進(jìn)行自動(dòng)化工作,比如對(duì)資產(chǎn)進(jìn)行安全標(biāo)簽打標(biāo)的時(shí)候,人工的打標(biāo)方式會(huì)相對(duì)比較繁瑣而且需要關(guān)注鏈路的信息,那么就可以借助血緣信息來(lái)完成自動(dòng)的打標(biāo),比如配置一些規(guī)則讓安全標(biāo)簽明確場(chǎng)景、節(jié)點(diǎn)和終止規(guī)則。

圖片

以上這些都是數(shù)據(jù)血緣在字節(jié)內(nèi)部的一些典型用例,我們也在探索更多的使用場(chǎng)景。

根據(jù)其對(duì)血緣質(zhì)量的要求,這些場(chǎng)景被分成了幾個(gè)區(qū)域。根據(jù)血緣覆蓋率、血緣準(zhǔn)確率的要求,可以分為四個(gè)象限,比如其中一類是需要覆蓋全鏈路且血緣準(zhǔn)確率要求異常高的,例如開發(fā)項(xiàng)的兩個(gè)用例,因?yàn)樵陂_發(fā)項(xiàng)的用例中,血緣的延遲會(huì)嚴(yán)重影響決策上的判斷,對(duì)血緣質(zhì)量要求是最高的。

血緣建設(shè)過(guò)程也會(huì)劃分不同的建設(shè)時(shí)期,我們可以根據(jù)現(xiàn)在要支持的業(yè)務(wù)場(chǎng)景和業(yè)務(wù)優(yōu)先級(jí)來(lái)輔助制定血緣建設(shè)規(guī)劃,決定血緣迭代的節(jié)奏和具體方向。

圖片

未來(lái)展望

1.數(shù)據(jù)血緣技術(shù)趨勢(shì)

在業(yè)界,血緣的發(fā)展趨勢(shì)主要關(guān)注以下幾點(diǎn):

通用的血緣解析能力

血緣是元數(shù)據(jù)平臺(tái)的核心能力,很多時(shí)候元數(shù)據(jù)平臺(tái)會(huì)接入多樣化元數(shù)據(jù),這些業(yè)務(wù)元數(shù)據(jù)也會(huì)依賴血緣不同的血緣解析能力,現(xiàn)在的解析往往是依賴各個(gè)引擎團(tuán)隊(duì)來(lái)支持的,但是其實(shí)在更加廣泛的場(chǎng)景,我們需要有一個(gè)兜底的方案來(lái)提供一個(gè)更通用的血緣解析能力,所以未來(lái)我們會(huì)提供標(biāo)準(zhǔn) SQL 解析引擎,以達(dá)到通用解析的目的。

非侵入式的非 SQL 類型血緣采集

除了可解析的 SQL 或可配置的任務(wù),日常還會(huì)涉及到代碼類型的任務(wù),如 JAR 任務(wù)。JAR 任務(wù)現(xiàn)在的解析方式是根據(jù)一些埋點(diǎn)信息或者用戶錄入的上下游信息去完成血緣的收集,這部分未來(lái)會(huì)出現(xiàn)一種非侵入式的非 SQL 類型血緣采集的技術(shù),比如 Flink 或者 Spark 的 JAR 任務(wù),我們可以在任務(wù)運(yùn)行時(shí)拿到這些血緣,來(lái)豐富平臺(tái)側(cè)血緣的數(shù)據(jù)。

時(shí)序血緣

時(shí)序血緣也是字節(jié)內(nèi)部的考慮點(diǎn)。目前血緣信息圖數(shù)據(jù)庫(kù)相當(dāng)于是對(duì)當(dāng)前血緣拓?fù)涞囊淮慰煺眨鋵?shí)血緣是會(huì)變化的,比如用戶在修改一個(gè)任務(wù)的時(shí)候,上線任務(wù)變更或是修改表結(jié)構(gòu),然后對(duì)應(yīng)的修改自己生產(chǎn)任務(wù),這里涉及到時(shí)序的概念,這個(gè)時(shí)序可以方便我們?nèi)プ匪菀恍┤蝿?wù)的變化,支持我們?nèi)プ鍪虑笆潞笥绊懛治觯詴r(shí)序血緣如何在圖數(shù)據(jù)庫(kù)中引入也是未來(lái)的一個(gè)趨勢(shì)。

2.數(shù)據(jù)血緣的應(yīng)用趨勢(shì)

標(biāo)準(zhǔn)化

前文提到很多應(yīng)用場(chǎng)景的底層能力都是通過(guò)接口來(lái)獲得,獲得接口的數(shù)據(jù)也涉及到應(yīng)用的標(biāo)準(zhǔn)化,標(biāo)準(zhǔn)化的應(yīng)用可以讓我們移植到更多的業(yè)務(wù)上,提供更好的血緣數(shù)據(jù)分析幫助。

端到端的血緣打通

另一個(gè)應(yīng)用趨勢(shì)是端到端的血緣能力,現(xiàn)在平臺(tái)主要接入資產(chǎn)節(jié)點(diǎn),端到端則會(huì)涉及到更上游,如 App 端和 Web 端采集的數(shù)據(jù),或者是下游報(bào)表,以及 API 之后最終的節(jié)點(diǎn)。在血緣收集中,這部分信息目前缺失,端到端血緣打通將是未來(lái)應(yīng)用上的趨勢(shì)之一。

3. 云上的全鏈路血緣能力

在字節(jié)跳動(dòng)內(nèi)部,血緣能力會(huì)進(jìn)行上云,云上涉及各類數(shù)據(jù)類型,因此血緣發(fā)展方向之一是把各類異構(gòu)數(shù)據(jù)類型統(tǒng)一接入,并且支持云上用戶來(lái)自定義接入新類型血緣。

同時(shí),當(dāng)數(shù)據(jù)應(yīng)用標(biāo)準(zhǔn)化之后,也可以把血緣應(yīng)用提供給云上用戶,云上用戶也可以反向加入到血緣應(yīng)用的開發(fā)中,最后把數(shù)據(jù)血緣模型作為一種標(biāo)準(zhǔn)來(lái)推廣,由此衍生出更好的血緣應(yīng)用、血緣服務(wù)生態(tài)。

本文介紹的數(shù)據(jù)血緣能力和實(shí)踐,目前大部分已通過(guò)火山引擎 DataLeap 對(duì)外提供服務(wù),歡迎大家點(diǎn)擊閱讀原文體驗(yàn)。

責(zé)任編輯:龐桂玉 來(lái)源: 字節(jié)跳動(dòng)技術(shù)團(tuán)隊(duì)
相關(guān)推薦

2023-02-28 07:22:14

數(shù)據(jù)血緣能DataLeap

2023-06-28 16:10:09

Dataleap數(shù)倉(cāng)建設(shè)

2024-07-18 08:40:28

2023-11-21 07:21:39

火山引擎計(jì)算治理自動(dòng)化

2023-08-22 14:29:05

大前端

2024-07-18 21:26:44

2022-04-06 15:58:25

火山引擎差分隱私LDPDC
點(diǎn)贊
收藏

51CTO技術(shù)棧公眾號(hào)

主站蜘蛛池模板: 亚洲精品中文字幕中文字幕 | 在线色网| 精品国产一区二区三区性色av | 9久久| 亚洲网在线 | 成人av片在线观看 | 中文日韩在线 | 91精品久久久久久久久久入口 | 久久成人18免费网站 | 亚洲国产精品视频一区 | 成人影院在线 | 伊人久久大香线 | 亚洲国产精品va在线看黑人 | 麻豆一区二区三区 | 精品一区二区观看 | 天天爽夜夜爽精品视频婷婷 | 本道综合精品 | 成人精品一区二区三区中文字幕 | 欧美一级欧美三级在线观看 | 91免费看片 | 污污免费网站 | 国产伦精品一区二区三区照片91 | 免费的黄色片子 | 91色视频在线 | 国产精品免费看 | 国产成人精品一区二区三区网站观看 | 欧美日韩看片 | 一级毛片视频 | 99视频入口 | 香蕉久久久久久 | 久久1区 | 一区二区精品视频 | 精品一区二区在线观看 | 国产美女福利在线观看 | 久久久久久国产精品三区 | 中文字幕一区二区三区四区五区 | 日韩电影在线 | 日韩a视频 | 午夜精 | 夜夜爆操 | 欧美黑人体内she精在线观看 |