精品欧美一区二区三区在线观看 _久久久久国色av免费观看性色_国产精品久久在线观看_亚洲第一综合网站_91精品又粗又猛又爽_小泽玛利亚一区二区免费_91亚洲精品国偷拍自产在线观看 _久久精品视频在线播放_美女精品久久久_欧美日韩国产成人在线

百億節(jié)點,毫秒級延遲,攜程金融基于nebula的大規(guī)模圖應(yīng)用實踐

開發(fā)
本文主要分享nebula在攜程金融的實踐,希望能帶給大家一些實踐啟發(fā)。

?作者 | 霖霧,攜程數(shù)據(jù)開發(fā)工程師,關(guān)注圖數(shù)據(jù)庫等領(lǐng)域。?

背景

2017年9月攜程金融成立,在金融和風(fēng)控業(yè)務(wù)中,有多種場景需要對圖關(guān)系網(wǎng)絡(luò)進行分析和實時查詢,傳統(tǒng)關(guān)系型數(shù)據(jù)庫難以保證此類場景下的關(guān)聯(lián)性能,且實現(xiàn)復(fù)雜性高,離線關(guān)聯(lián)耗時過長,因此對圖數(shù)據(jù)庫的需求日益增加。攜程金融從2020年開始引入大規(guī)模圖存儲和圖計算技術(shù),基于nebula構(gòu)建了千億級節(jié)點的圖存儲和分析平臺,并取得了一些實際應(yīng)用成果。本文主要分享nebula在攜程金融的實踐,希望能帶給大家一些實踐啟發(fā)。

本文主要從以下幾個部分進行分析:

  • 圖基礎(chǔ)介紹
  • 圖平臺建設(shè)
  • 內(nèi)部應(yīng)用案例分析
  • 痛點與優(yōu)化
  • 總結(jié)規(guī)劃

一、圖基礎(chǔ)

首先我們來簡單介紹下圖相關(guān)的概念:

1.1 什么是圖

在計算機科學(xué)中,圖就是一些頂點的集合,這些頂點通過一系列邊結(jié)對(連接)。比如我們用一個圖表示社交網(wǎng)絡(luò),每一個人就是一個頂點,互相認識的人之間通過邊聯(lián)系。

在圖數(shù)據(jù)庫中,我們使用 (起點,邊類型,rank,終點) 表示一條邊。起點和終點比較好理解,表示一條邊兩個頂點的出入方向。邊類型則是用于區(qū)分異構(gòu)圖的不同邊,如我關(guān)注了你,我向你轉(zhuǎn)賬,關(guān)注和轉(zhuǎn)賬就是兩種不同種類的邊。而rank是用來區(qū)分同起始點同終點的不同邊,如A對B的多次轉(zhuǎn)賬記錄,起點、終點、邊類型是完全相同的 ,因此就需要如時間戳作為rank來區(qū)分不同的邊。

同時,點邊均可具有屬性,如:A的手機號、銀行卡、身份證號、籍貫等信息均可作為A的點屬性存在,A對B轉(zhuǎn)賬這條邊,也可以具有屬性,如轉(zhuǎn)賬金額,轉(zhuǎn)賬地點等邊屬性。

圖片

1.2 什么時候用圖

(信息收集于開源社區(qū)、公開技術(shù)博客、文章、視頻)

1)金融風(fēng)控:

  • 詐騙電話的特征提取,如不在三步社交鄰居圈內(nèi),被大量拒接等特征。實時識別攔截。(銀行/網(wǎng)警等)
  • 轉(zhuǎn)賬實時攔截 (銀行/支付寶等)
  • 實時欺詐檢測,羊毛黨的識別(電商)
  • 黑產(chǎn)群體識別,借貸記錄良好用戶關(guān)聯(lián),為用戶提供更高額貸款、增加營收

2)股權(quán)穿透

  • 影子集團、集團客戶多層交叉持股、股權(quán)層層嵌套復(fù)雜關(guān)系的識別(天眼查/企查查)

3)數(shù)據(jù)血緣

  • 在數(shù)據(jù)倉庫開發(fā)過程中, 會因為數(shù)據(jù)跨表關(guān)聯(lián)產(chǎn)生大量的中間表,使用圖可直接根據(jù)關(guān)系模型表示出數(shù)據(jù)加工過程和數(shù)據(jù)流向,以及在依賴任務(wù)問題時快速定位上下游。

4)知識圖譜

  • 構(gòu)建行業(yè)知識圖譜

5)泛安全

  • ip關(guān)系等黑客攻擊場景,計算機進程與線程等安全管理

6)社交推薦

  • 好友推薦,行為相似性,咨詢傳播路徑,可能認識的人,大v粉絲共同關(guān)注,共同閱讀文章等,商品相似性,實現(xiàn)好友商品或者咨詢的精準推薦
  • 通過對用戶畫像、好友關(guān)系等,進行用戶分群、實現(xiàn)用戶群體精準管理

7)代碼依賴分析

8)供應(yīng)鏈上下游分析

  • 如汽車供應(yīng)鏈上下游可涉及上萬零件及供應(yīng)商,分析某些零件成本上漲/供應(yīng)商單一/庫存少等多維度的影響(捷豹)

1.3 誰在研發(fā)圖,誰在使用圖

(信息收集于開源社區(qū)、公開技術(shù)博客、文章、視頻)

目前國內(nèi)幾家大公司都有各自研發(fā)的圖數(shù)據(jù)庫,主要滿足內(nèi)部應(yīng)用的需求,大多數(shù)都是閉源的,開源的僅有百度的hugegraph。其他比較優(yōu)秀的開源產(chǎn)品有Google Dgraph, vesoft的nebula 等,其中nebula在國內(nèi)互聯(lián)網(wǎng)公司應(yīng)用非常廣泛。結(jié)合我們的應(yīng)用場景,以及外部公開的測試和內(nèi)部壓測,我們最終選擇nebula構(gòu)建金融圖平臺。

圖片

二、圖平臺建設(shè)

圖片

2.1. 圖平臺建設(shè)

我們的圖平臺早期只有1個3節(jié)點的nebula集群,隨著圖應(yīng)用場景的不斷擴充,需要滿足實時檢索、離線分析、數(shù)據(jù)同步與校驗等功能,最終演化成上述架構(gòu)圖。

1)離線圖:主要用于圖構(gòu)建階段(建模、圖算法分析),通過spark-connector同集團的大數(shù)據(jù)平臺打通,此外我們還將Nebula提供的數(shù)10種常用圖算法進行工具化包裝,方便圖分析人員在spark集群提交圖算法作業(yè)。

2)線上圖:經(jīng)過離線圖分析確定最終建模后,會通過spark-connector將數(shù)據(jù)導(dǎo)入線上圖。通過對接qmq消息(集團內(nèi)部的消息框架) 實時更新,對外提供實時檢索服務(wù)。  同時也會有T+1的hive增量數(shù)據(jù)通過spark-connector按天寫入。

3)全量校驗:雖然 Nebula Graph 通過 TOSS 保證了正反邊的插入一致性,但仍不支持事務(wù),隨著數(shù)據(jù)持續(xù)更新,實時圖和離線(hive數(shù)據(jù))可能會存在不一致的情況,因此我們需要定期進行全量數(shù)據(jù)的校驗(把圖讀取到Hive,和Hive表存儲的圖數(shù)據(jù)進行比對,找出差異、修復(fù)),保證數(shù)據(jù)的最終一致性。

4)集群規(guī)模:為了滿足千億節(jié)點的圖業(yè)務(wù)需求,實時集群采用三臺獨立部署的高性能機器,每臺機器64core / 320GB / 12TB SSD ,版本為nebulav2.5,跨機房部署。離線集群64core /320GB /3.6TB SSD * 12  ,測試集群 48core/ 188GB/5T HDD * 4.

2.2. 遇到的問題

在nebula應(yīng)用過程中,也發(fā)現(xiàn)一些問題,期待逐步完善:

1)資源隔離問題,目前nebula沒有資源分組隔離功能 ,不同業(yè)務(wù)會相互影響;如業(yè)務(wù)圖A在導(dǎo)數(shù)據(jù),業(yè)務(wù)圖B線上延遲就非常高。

2)版本升級問題:

  • nebula在版本升級過程中需要停止服務(wù),無法實現(xiàn)熱更新;對于類似實時風(fēng)控等對可靠性要求非常高的場景非常不友好。此種情況下如需保證在線升級,就需要配備主備集群,每個集群切量后挨個升級,增加服務(wù)復(fù)雜性和運維成本。
  • 客戶端不兼容,客戶端需要跟著服務(wù)端一起升級版本。對于已有多個應(yīng)用使用的nebula集群,想要協(xié)調(diào)各應(yīng)用方同時升級客戶端是比較困難的。

三、內(nèi)部應(yīng)用案例分析

3.1 數(shù)據(jù)血緣圖

數(shù)據(jù)治理是近年來比較熱的一個話題,他是解決數(shù)倉無序膨脹的有效手段,其中數(shù)據(jù)血緣是數(shù)據(jù)有效治理的重要依據(jù),金融借助nebula構(gòu)建了數(shù)據(jù)血緣圖,以支撐數(shù)據(jù)治理的系統(tǒng)建設(shè)。

圖片

圖片

數(shù)據(jù)血緣就是數(shù)據(jù)產(chǎn)生的鏈路,記錄數(shù)據(jù)加工的流向,經(jīng)過了哪些過程和階段;主要解決 ETL 過程中可能產(chǎn)出幾十甚至幾百個中間表導(dǎo)致的復(fù)雜表關(guān)系,借用數(shù)據(jù)血緣可以清晰地記錄數(shù)據(jù)源頭到最終數(shù)據(jù)的生成過程。

圖 a 是數(shù)據(jù)血緣的關(guān)系圖,采用庫名 + 表名作為圖的頂點來保證點的唯一性,點屬性則是分開的庫名和表名,以便通過庫名或者表名進行屬性查詢。在兩張表之間會建立一條邊,邊的屬性主要存放任務(wù)的產(chǎn)生運行情況,比如說:任務(wù)開始時間,結(jié)束時間、用戶 ID等等同任務(wù)相關(guān)的信息。

圖 b 是實際查詢中的一張關(guān)系圖,箭頭的方向表示了表的加工方向,通過上游或者下游表我們可以快速地找到它的依賴, 清晰明了地顯示從上游到下游的每一個鏈路。

如果要表達復(fù)雜的血緣依賴關(guān)系圖,通過傳統(tǒng)的關(guān)系型數(shù)據(jù)庫需要復(fù)雜的SQL實現(xiàn)(循環(huán)嵌套),性能也比較差,而通過圖數(shù)據(jù)庫實現(xiàn),則可直接按數(shù)據(jù)依賴關(guān)系存儲,讀取也快于傳統(tǒng)DB,非常簡潔。目前,數(shù)據(jù)血緣也是金融BU在圖數(shù)據(jù)庫上的一個經(jīng)典應(yīng)用。

3.2 風(fēng)控關(guān)系人圖

關(guān)系人圖常用于欺詐識別等場景,它是通過 ID、設(shè)備、手機標識以及其他介質(zhì)信息關(guān)聯(lián)不同用戶的關(guān)系網(wǎng)絡(luò)。比如說,用戶 A 和用戶 B 共享一個 WiFi,他們便是局域網(wǎng)下的關(guān)系人;用戶 C 和用戶 D 相互下過單,他們便是下單關(guān)系人。簡言之,系統(tǒng)通過多種維度的數(shù)據(jù)關(guān)聯(lián)不同的用戶,這便是關(guān)系人圖。

構(gòu)建模型時,通常要查詢某個時點(比如欺詐事件發(fā)生前)的關(guān)系圖,對當時的圖進行模型抽取和特征構(gòu)建,我們稱這個過程為圖回溯。隨著回溯時間點的不同,返回的圖數(shù)據(jù)也是動態(tài)變化的;比如某人上午,下午各自打了一通電話, 需要回溯此人中午時間點時的圖關(guān)系,只會出現(xiàn)上午的電話記錄,具體到圖,則每類邊都具有此類時間特性,每一次查詢都需要對時間進行限制。

對于圖回溯場景,最初我們嘗試通過HIVE SQL實現(xiàn),發(fā)現(xiàn)對于二階及以上的圖回溯,SQL表達會非常復(fù)雜,而且性能不可接受(比如二階回溯 Hive需要跑數(shù)小時,三階回溯Hive幾乎不能實現(xiàn));因此嘗試借助圖數(shù)據(jù)庫來實現(xiàn),把時間作為邊rank進行建模,再根據(jù)邊關(guān)系進行篩選來實現(xiàn)回溯。這種回溯方式更直觀、簡潔,使用簡單的API即可完成,在性能上相比Hive也有1個數(shù)量級以上的提升(二階回溯,圖節(jié)點:百億級,待回溯節(jié)點:10萬級)。

圖片

下面用一個例子說明:如圖(a),點A分別在 t0 、t1、 t2 時刻建立了一條邊 ,t0、t1、t2為邊rank值,需要返回tx時的的圖關(guān)系數(shù)據(jù),只能返回 t0、 t1 對應(yīng)的 點 B、C ,因為當回溯到tx時間點時候,t2還沒有發(fā)生;最終返回的圖關(guān)系為 t0 和 t1 時候,VertexA ->VertexB 、 VertexA -> VertexC (見圖 (c) )。這個例子是用一種邊進行回溯,實際查詢中可能會涉及到 2~3 跳,且存在異構(gòu)邊(打電話是一種邊,點外賣又是一種邊,下單酒店機票是一種邊,都是不同類型的邊),而這種異構(gòu)圖的數(shù)據(jù)都具有回溯特征,因此實際的關(guān)系人圖回溯查詢也會變得復(fù)雜。

3.3 實時反欺詐圖

圖片

用戶下單時,會進入一個快速風(fēng)控的階段:通過基于關(guān)系型數(shù)據(jù)庫和圖數(shù)據(jù)庫的規(guī)則進行模型特征計算,來判斷這個用戶是不是風(fēng)險用戶,要不要對該用戶進行下單攔截(實時反欺詐)。

我們可以根據(jù)圖關(guān)系配合模型規(guī)則,用來挖掘欺詐團伙。比如說,已知某個 uid 是犯欺團伙的一員,根據(jù)圖關(guān)聯(lián)來判斷跟他關(guān)系緊密的用戶是不是存在欺詐行為。為了避免影響正常用戶的下單流程,風(fēng)控階段需要快速響應(yīng),因此對圖查詢的性能要求非常高(P95 <15ms)。我們基于nebula構(gòu)建了百億級的反欺詐圖,在查詢性能的優(yōu)化方面進行了較多思考。

圖片

此圖 Schema 為脫敏過后的部分圖模型,當中隱藏很多建模信息。這里簡單講解下部分的查詢流程和關(guān)聯(lián)信息。

如上圖為一次圖查詢流程,每一次圖查詢由多個起始點如用戶uid、用戶mobile等用戶信息同時開始,每條線為一次關(guān)聯(lián)查詢,因此一次圖查詢由幾十次點邊查詢組成,由起始點經(jīng)過一跳查詢和2跳查詢,最終將結(jié)果集返回給風(fēng)控引擎。

系統(tǒng)會將用戶的信息,轉(zhuǎn)化為該用戶的標簽。在圖查詢的時候,根據(jù)這些標簽,如 uid、mobile 進行獨立查詢。舉個例子,根據(jù)某個 uid 進行一跳查詢,查詢出它關(guān)聯(lián)的 5 個手機號。再根據(jù)這 5 個手機號進行獨立的 2 跳查詢,可能會出來 25 個 uid,查詢會存在數(shù)據(jù)膨脹的情況。因此,系統(tǒng)會做一個查詢限制。去查看這 5 個手機號關(guān)聯(lián)的 uid 是不是超過了系統(tǒng)設(shè)定的熱點值。如果說通過 mobile 查詢出來關(guān)聯(lián)的手機號、uid 過多的話,系統(tǒng)就會判斷其為熱點數(shù)據(jù),不進行邊結(jié)果返回。(二階/三階回溯,圖點邊:百億級)。

四、痛點及優(yōu)化

在上述應(yīng)用場景中,對于風(fēng)控關(guān)系人圖和反欺詐圖,由于圖規(guī)模比較大(百億點邊),查詢較多,且對時延要求較高,遇到了一些典型問題,接下來簡單介紹一下。

4.1 查詢性能問題

為了滿足實時場景2跳查詢p95 15ms需求,我們針對圖schema和連接池以及查詢端做了一些優(yōu)化:

4.1.1 犧牲寫性能換取讀性能

圖片

首先,我們來看看這樣的一個需求: 查詢id關(guān)聯(lián)的手機號 ,需要滿足對于這個手機號關(guān)聯(lián)邊不超過3個。這里解釋下為什么要限制關(guān)聯(lián)邊數(shù)量, 因為我們正常個體關(guān)聯(lián)邊數(shù)量是有限的,會有一個對于大多數(shù)人的p95這樣的閾值邊數(shù)量,超過這個閾值就是臟數(shù)據(jù)。為了這個閾值校驗, 就需要對每次查詢的結(jié)果再多查詢一跳。

如圖(a)所示,我們需要進行2次查詢,第一跳查詢是為了查詢用戶id關(guān)聯(lián)的手機號, 第二跳查詢是為了保證我們的結(jié)果值是合法的(閾值內(nèi)),這樣每跳查詢最終需要進行2跳查詢來滿足。如圖給出了圖查詢的gsql 2步偽碼,這種情況下無法滿足我們的高時效性。如何優(yōu)化呢?看下圖(b) :

圖片

我們可以將熱點查詢固定在點屬性上,這樣一跳查詢時就可以知道該點有多少關(guān)聯(lián)邊, 避免進行圖 a 中(2)語句驗證。還是以圖 (a)為例,從一個用戶 ID 開始查詢,查詢他的手機號關(guān)聯(lián),此時因為手機號關(guān)聯(lián)的邊已經(jīng)變成了點屬性(修改了 schema),圖(a) 2 條查詢語句實現(xiàn)的功能就可以變成一條查詢 go from $id over $edgeName where $手機號.用戶id邊數(shù)據(jù) <5 | limit 5。

這種設(shè)計的好處就是,在讀的時候可以加速驗證過程, 節(jié)約了一跳查詢。帶來的成本是:每寫一條邊,同時需要更新2個點屬性來記錄點的關(guān)聯(lián)邊情況,而且需要保證冪等(保證重復(fù)提交不會疊加屬性+1),當插入一條邊的時,先去圖里面查詢邊是否存在,不存在才會進行寫邊以及點屬性 +1 的操作。也就是我們犧牲了寫性能,來換取讀性能,并通過定期check保證數(shù)據(jù)一致。

4.1.2 池化連接降低時延?

第二個優(yōu)化手段是通過池化連接降低時延。Nebula 官方連接池每次進行查詢均需要進行建立初始化連接-執(zhí)行查詢?nèi)蝿?wù)-關(guān)閉連接。而在高頻(QPS 會達到幾千)的查詢場景中,頻繁的創(chuàng)建、關(guān)閉連接非常影響系統(tǒng)的性能和穩(wěn)定性。且建立連接過程耗時平均需要6ms, 比實際查詢時長1.5ms左右高出幾倍,這是不可接受的。因此我們對官方客戶端進行了二次封裝,實現(xiàn)連接的復(fù)用和共享。最后將查詢p95從 20ms 降低到了 4ms。通過合理控制并發(fā),我們最終將 2跳查詢性能控制在p95 15ms 。

這里貼下代碼供參考:

public class SessionPool {
/**
* 創(chuàng)建連接池
*
* @param maxCountSession 默認創(chuàng)建連接數(shù)
* @param minCountSession 最大創(chuàng)建連接數(shù)
* @param hostAndPort 機器端口列表
* @param userName 用戶名
* @param passWord 密碼
* @throws UnknownHostException
* @throws NotValidConnectionException
* @throws IOErrorException
* @throws AuthFailedException
*/
public SessionPool(int maxCountSession, int minCountSession, String hostAndPort, String userName, String passWord) throws UnknownHostException, NotValidConnectionException, IOErrorException, AuthFailedException {
this.minCountSession = minCountSession;
this.maxCountSession = maxCountSession;
this.userName = userName;
this.passWord = passWord;
this.queue = new LinkedBlockingQueue<>(minCountSession);
this.pool = this.initGraphClient(hostAndPort, maxCountSession, minCountSession);
initSession();
}
public Session borrow() {
Session se = queue.poll();
if (se != null) {
return se;
}
try {
return this.pool.getSession(userName, passWord, true);
} catch (Exception e) {
log.error("execute borrow session fail, detail: ", e);
throw new RuntimeException(e);
}
}
public void release(Session se) {
if (se != null) {
boolean success = queue.offer(se);
if (!success) {
se.release();
}
}
}
public void close() {
this.pool.close();
}
private void initSession() throws NotValidConnectionException, IOErrorException, AuthFailedException {
for (int i = 0; i < minCountSession; i++) {
queue.offer(this.pool.getSession(userName, passWord, true));
}
}
private NebulaPool initGraphClient(String hostAndPort, int maxConnSize, int minCount) throws UnknownHostException {
List<HostAddress> hostAndPorts = getGraphHostPort(hostAndPort);
NebulaPool pool = new NebulaPool();
NebulaPoolConfig nebulaPoolConfig = new NebulaPoolConfig();
nebulaPoolConfig = nebulaPoolConfig.setMaxConnSize(maxConnSize);
nebulaPoolConfig = nebulaPoolConfig.setMinConnSize(minCount);
nebulaPoolConfig = nebulaPoolConfig.setIdleTime(1000 * 600);
pool.init(hostAndPorts, nebulaPoolConfig);
return pool;
}
private List<HostAddress> getGraphHostPort(String hostAndPort) {
String[] split = hostAndPort.split(",");
return Arrays.stream(split).map(item -> {
String[] splitList = item.split(":");
return new HostAddress(splitList[0], Integer.parseInt(splitList[1]));
}).collect(Collectors.toList());
}
private Queue<Session> queue;
private String userName;
private String passWord;
private int minCountSession;
private int maxCountSession;
private NebulaPool pool;
}

4.1.3 查詢端優(yōu)化?

對于查詢端,像3.3中的例圖,每一次圖查詢由多個起始點開始,可拆解為幾十次點邊查詢,需要讓每一層的查詢盡可能地并發(fā)進行,降低最終時延。我們可以先對 1 跳查詢并發(fā)(約十幾次查詢),再對結(jié)果進行分類合并,進行第二輪的迭代并發(fā)查詢(十幾到幾十次查詢),通過合理地控制并發(fā),可將一次組合圖查詢的 P95 控制在 15 ms 以內(nèi)。

4.2 邊熱點問題

在圖查詢過程中,存在部分用戶id 關(guān)聯(lián)過多信息,如黃牛用戶關(guān)聯(lián)過多信息,這部分異常用戶會在每一次查詢時被過濾掉,不會繼續(xù)參與下一次查詢,避免結(jié)果膨脹。而判斷是否為異常用戶,則依賴于數(shù)據(jù)本身設(shè)定的閾值,異常數(shù)據(jù)不會流入下一階段對模型計算造成干擾。

4.3 一致性問題

Nebula Graph 本身是沒有事務(wù)的,對于上文寫邊以及點屬性 +1 的操作,如何保證這些操作的一致性,上文提到過,我們會定期對全量HIVE表數(shù)據(jù)和圖數(shù)據(jù)庫進行check,以 HIVE 數(shù)據(jù)為準對線上圖進行修正,來實現(xiàn)最終一致性。目前來說,圖數(shù)據(jù)庫和 HIVE 表不一致的情況還是比較少的。

五、總結(jié)與展望

基于nebula的圖業(yè)務(wù)應(yīng)用,完成了對數(shù)據(jù)血緣、對關(guān)系人網(wǎng)絡(luò)、反欺詐等場景的支持,并將持續(xù)應(yīng)用在金融更多場景下,助力金融業(yè)務(wù)。我們將持續(xù)跟進社區(qū),結(jié)合自身應(yīng)用場景推進圖平臺建設(shè) ;同時也期待社區(qū)版能提供熱升級、資源隔離、更豐富易用的算法包、更強大的studio 等功能。

責任編輯:未麗燕 來源: 攜程技術(shù)
相關(guān)推薦

2022-05-19 17:50:31

bookie集群延遲消息存儲服務(wù)

2024-04-26 09:38:36

2023-06-06 11:49:24

2022-07-15 12:58:02

鴻蒙攜程華為

2022-08-19 10:54:37

數(shù)據(jù)庫技術(shù)

2023-07-07 12:19:43

攜程技術(shù)

2016-12-07 10:19:45

網(wǎng)易蜂巢

2018-04-12 17:23:41

金融Linux紅旗軟件

2016-09-04 15:14:09

攜程實時數(shù)據(jù)數(shù)據(jù)平臺

2022-06-27 09:36:29

攜程度假GraphQL多端開發(fā)

2024-09-26 10:41:31

2023-04-04 07:32:35

TorchRec模型訓(xùn)練

2022-05-13 09:27:55

Widget機票業(yè)務(wù)App

2023-06-28 14:01:13

攜程實踐

2021-04-22 13:38:21

前端開發(fā)技術(shù)

2022-05-27 09:25:12

攜程酒店本地緩存查詢服務(wù)

2023-06-30 17:59:27

Ray離線推理

2023-07-07 12:26:39

攜程開發(fā)

2022-08-20 07:46:03

Dynamo攜程數(shù)據(jù)庫

2017-06-27 15:35:02

機器學(xué)習(xí)Spark微博應(yīng)用
點贊
收藏

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

国产精品av久久久久久麻豆网| 91九色综合| 成人av第一页| 国产极品jizzhd欧美| 男女全黄做爰文章| 66精品视频在线观看| 色综合久久66| 男人草女人视频| 亚洲色图欧美视频| 欧美a级一区二区| 欧美激情手机在线视频 | 少妇一级淫片日本| 中出一区二区| 亚洲图片在线综合| 亚洲女则毛耸耸bbw| 91综合国产| 精品国产999| 国产高清精品软男同| 日韩欧美在线观看一区二区| 久久国产精品无码网站| 午夜精品视频网站| 国产少妇在线观看| 国产欧美日韩精品一区二区免费| 欧美美女一区二区| 无码人妻h动漫| av成人福利| 亚洲三级在线播放| 亚洲国产激情一区二区三区| 四季av日韩精品一区| 国内精品伊人久久久久av影院| 欧美在线一区二区视频| 久久久久久久久久91| 久久在线免费| 在线播放亚洲激情| 亚洲熟妇一区二区三区| 9l视频自拍蝌蚪9l视频成人| 9191久久久久久久久久久| 日本美女高潮视频| 欧美黑人一区| 日韩欧美综合在线视频| 久在线观看视频| 免费不卡av| 亚洲国产一区视频| 国内自拍中文字幕| 在线观看三级视频| 亚洲九九爱视频| 久久久国产精华液999999| 国产爆初菊在线观看免费视频网站 | 国产精品久久久久婷婷| 色一情一区二区三区四区| 视频一区二区在线播放| 2021久久国产精品不只是精品| 国产自产在线视频一区| 天天操天天干天天| 不卡大黄网站免费看| 国产欧美日韩视频一区二区三区| 国产高清视频免费| 国产一区91精品张津瑜| 91视频免费在线| 国产丝袜视频在线观看| 国产精品资源网站| 99精品99久久久久久宅男| 成人免费一级视频| 波多野结衣一区二区三区| 狠狠色综合色区| 天堂网www中文在线| 久久亚洲一区二区三区明星换脸| 蜜桃999成人看片在线观看| 亚州精品国产精品乱码不99按摩| 99re这里都是精品| 日本一区二区精品| 日本在线观看| 一区2区3区在线看| 精品这里只有精品| 三上悠亚亚洲一区| 欧美美女喷水视频| 少妇伦子伦精品无吗| 欧洲vs亚洲vs国产| 一区二区三区国产在线观看| www.97视频| 黄色欧美成人| 国产成人精品在线视频| 亚洲一区二区色| 粉嫩av一区二区三区粉嫩| 久久综合九色综合久99| 在线观看的av| 一区二区视频免费在线观看| 成人毛片视频网站| 欧美系列精品| 亚洲精品99999| 国产视频123区| 好看不卡的中文字幕| 欧美一级淫片aaaaaaa视频| 国产精华7777777| 国产成人亚洲精品狼色在线| 欧美在线视频一区二区三区| 黄色精品免费看| 天天色 色综合| 九九九九九国产| 婷婷成人在线| 色综合色综合久久综合频道88| 国产情侣自拍av| 国产伦精品一区二区三区免费 | 国产99久久精品一区二区| 国产一区二区三区四区视频 | 日韩国产在线一| 99热在线国产| 性开放的欧美大片| 岛国av午夜精品| 91免费视频污| 欧美日韩老妇| 午夜免费在线观看精品视频| 一级片在线观看视频| 久久久一区二区| 精品国产av无码一区二区三区| 国产私拍福利精品视频二区| 亚洲国产精品久久久| 日韩成人短视频| 蜜乳av一区二区| 欧美日韩国产高清视频| heyzo在线欧美播放| 91精品国产欧美一区二区成人 | 国产成人一区二区| 天堂8在线视频| 一区二区三区国产精品| 五月花丁香婷婷| 日韩一区欧美| 国产精品白嫩美女在线观看| 午夜影院免费视频| 亚洲大尺度视频在线观看| 国产精品熟女一区二区不卡| 日韩av自拍| 国产精品久久久久久久av大片| 视频一区 中文字幕| 一个色在线综合| 中文字幕剧情在线观看| 91亚洲国产| 国产精品亚洲网站| av资源网在线观看| 在线观看av一区| 性猛交ⅹxxx富婆video| 久久www成人_看片免费不卡| 狠狠色噜噜狠狠色综合久| av福利在线导航| 精品国产百合女同互慰| 国产午夜精品无码一区二区| 国产成人免费视频| 国产片侵犯亲女视频播放| 麻豆精品一区| 欧美国产日韩精品| 老牛影视av牛牛影视av| 午夜日韩在线电影| 少妇毛片一区二区三区| 国产精品尤物| 奇米888一区二区三区| 亚洲精品在线影院| 最近中文字幕日韩精品| 国产影视一区二区| 一区二区三区免费| 欧美肉大捧一进一出免费视频| 精品99视频| 精品中文字幕一区| 巨茎人妖videos另类| 在线观看欧美www| 国产乱码一区二区| 亚洲综合在线第一页| 国产精品成人99一区无码| 亚洲制服少妇| 丝袜美腿玉足3d专区一区| 久久精品xxxxx| 久久亚洲国产精品| 人妻一区二区三区四区| 午夜视频在线观看一区二区| 国产aⅴ激情无码久久久无码| 日本在线播放一区二区三区| 吴梦梦av在线| 国产区精品视频在线观看豆花| 欧美黑人xxxⅹ高潮交| 三级在线播放| 欧美麻豆精品久久久久久| 久久久久噜噜噜亚洲熟女综合| 成人av在线网站| 黄色一级二级三级| 亚洲男女av一区二区| 国语精品免费视频| 福利一区视频| 久久久人成影片一区二区三区观看 | 经典三级在线一区| 日韩中文字幕在线免费| 精品国精品国产自在久国产应用 | 国产精品久久久久久久成人午夜| 亚洲精品乱码久久久久久黑人 | 青青在线视频一区二区三区| 在线视频二区| 亚洲国产精品小视频| 最近中文字幕在线观看| 亚洲综合图片区| 91视频免费在观看| 国产69精品久久777的优势| 91色国产在线| 伊人久久成人| 裸体大乳女做爰69| 久久99国内| 国产美女99p| 日韩美女在线| 日本精品视频在线| 白白色在线观看| 日韩中文字幕在线视频| 青春有你2免费观看完整版在线播放高清| 欧美日韩一卡二卡| 69视频免费在线观看| 一区二区三区波多野结衣在线观看 | 欧美精品国产精品日韩精品| 调教视频免费在线观看| 亚洲欧美中文日韩在线v日本| xxxwww在线观看| 欧美日韩一区二区三区高清| 国产精品va无码一区二区三区| 亚洲乱码国产乱码精品精的特点| 国产jjizz一区二区三区视频| 成人综合婷婷国产精品久久| 日韩在线一区视频| 青娱乐精品视频| 波多野结衣家庭教师在线播放| 欧美精品啪啪| 中文字幕第50页| 日韩高清欧美| 日韩一本精品| 国产videos久久| 久久精品一二三区| 日韩丝袜视频| 精品国产一区二区三区日日嗨| 日韩精品亚洲专区在线观看| 91久久精品国产| 超碰国产精品一区二页| 国产精品直播网红| 97精品国产99久久久久久免费| 国产成人精品免高潮在线观看| 在线人成日本视频| 人妖精品videosex性欧美| 精精国产xxxx视频在线播放| 久久久久久久久久婷婷| 图片区小说区亚洲| 九九久久国产精品| av理论在线观看| 欧美激情视频播放| 黑人极品ⅴideos精品欧美棵| 欧美激情视频免费观看| 国产精品一区hongkong| 欧美极品少妇xxxxⅹ免费视频| 欧美野外wwwxxx| 久久久久女教师免费一区| 七七成人影院| 91av视频在线| 欧美性xxx| 国产精品永久免费在线| 国产精品白丝久久av网站| 91精品国产99久久久久久红楼 | 欧美精品一区二区久久久| 日韩一区二区三区在线观看视频| 亚洲精品久久久久久久久久久久久 | 粉嫩嫩av羞羞动漫久久久| 亚洲啪av永久无码精品放毛片| 波多野结衣亚洲一区| 加勒比一区二区| 国产精品不卡视频| 久久久久久av无码免费网站| 亚洲午夜一二三区视频| 青青草免费观看视频| 日本高清成人免费播放| 亚洲天堂网在线视频| 日韩亚洲欧美一区二区三区| 成人午夜精品福利免费| 亚洲欧洲黄色网| 黄色免费网站在线| 91国内精品久久| 在线成人视屏| 99在线视频免费观看| 欧美男同视频网| 中文字幕黄色大片| 99国产精品久久久久久久| 91视频免费版污| 国产精品91xxx| 国产免费看av| 亚洲视频狠狠干| 亚洲黄色三级视频| 欧美军同video69gay| 天堂av在线免费| 日韩中文娱乐网| 天堂资源在线| 亚洲最大福利视频网站| 免费精品国产| 黄色录像特级片| 视频在线观看国产精品| 一级网站在线观看| 久久先锋资源网| 久久久国产精华液| 欧美色窝79yyyycom| 殴美一级特黄aaaaaa| 在线精品国产欧美| 神马午夜在线视频| 91精品国产综合久久久久久丝袜| 精品日韩毛片| 9久久9毛片又大又硬又粗| 另类欧美日韩国产在线| 久久久久亚洲无码| 一区在线中文字幕| 尤物视频免费观看| 亚洲精品久久久久久下一站| 黄色在线免费| 国产精品久久久久免费a∨大胸| 大伊香蕉精品在线品播放| 夜夜爽99久久国产综合精品女不卡| 亚洲精品偷拍| 无码人妻丰满熟妇区毛片蜜桃精品 | 亚洲欧美日韩不卡一区二区三区| 亚洲区一区二| 爱情岛论坛亚洲自拍| 中文字幕不卡在线播放| 黄色在线免费观看| 亚洲的天堂在线中文字幕| а√天堂在线官网| 国产精品一区二区电影| 偷窥自拍亚洲色图精选| 亚洲熟妇无码一区二区三区| 国产米奇在线777精品观看| 欧美成人短视频| 91福利在线观看| 国产一二三区在线视频| 欧美亚洲日本黄色| 狼人天天伊人久久| r级无码视频在线观看| 国产电影精品久久禁18| 国产67194| 91精品国产高清一区二区三区| 91在线网址| 国产精品自拍小视频| 日韩精品一区二区久久| 美女黄色片视频| 国产欧美精品国产国产专区 | 五月婷婷一区二区| 337p亚洲精品色噜噜噜| 黄色网页在线免费看| 91精品视频在线| 亚洲欧美文学| 久草免费资源站| 亚洲国产精品久久久久秋霞影院 | 国产福利一区视频| 久久欧美一区二区| 欧美a视频在线观看| 亚洲色图17p| 日韩毛片免费看| 91国在线高清视频| 国产999精品久久久久久绿帽| 麻豆91精品91久久久| 亚洲精品mp4| 一区一区三区| 亚洲免费精品视频| 狠狠色狠狠色综合| 免费一级a毛片夜夜看| 欧美哺乳videos| 2022成人影院| 在线观看成人av| 岛国精品在线播放| 狠狠躁夜夜躁人人爽天天高潮| 精品一区二区电影| 国产极品嫩模在线观看91精品| 亚洲最新免费视频| 国产成人精品三级| 毛片基地在线观看| 国产亚洲欧美视频| 国产精品视频一区二区三区综合| h无码动漫在线观看| 久久久久久久久久久久久久久99| 老熟妇一区二区三区啪啪| 久久精品国产96久久久香蕉| 澳门成人av| 日本熟妇人妻中出| 一区二区三区中文免费| 四虎精品在永久在线观看| 国产精品视频永久免费播放| 综合国产在线| 少妇大叫太粗太大爽一区二区| 欧美丰满一区二区免费视频| freexxx性亚洲精品| 少妇免费毛片久久久久久久久 | 国产精品一区二区三区在线观| 西西裸体人体做爰大胆久久久| 蜜桃av免费在线观看| 精品成人一区二区| 国产电影一区二区三区爱妃记| 777久久精品一区二区三区无码| 91美女视频网站| 99在线小视频| 国产精品普通话| 亚洲国产免费看| 二区三区四区视频| 日韩精品亚洲精品| 亚洲网一区二区三区| 91欧美视频在线|