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

DAGW:數據聚合網關的探索與實踐

網絡 網絡管理
本文對B站訪問最頻繁的視頻詳情頁的實現技術與fanout read持續增長帶來的問題進行深入分析,提出了構建業務關聯索引的方案有效降低90%以上服務負載。同時針對更多的聚合展示場景提出并實現了一套通用數據聚合網關(DAGW)的解決方案。

業務背景

B站是一個以PUGV為主的視頻社區,用戶使用的最主要場景是在視頻詳情頁觀看視頻。隨著業務發展壯大,在這個「主戰場」上會有越來越多的擴展業務,例如:話題、視頻榮譽、筆記、用戶裝扮等等。

圖片圖片

(圖1:所有流量都會匯聚到視頻詳情頁)

從圖一中看到,我們可以將APP上功能的頁面分為兩類:列表頁(ListView Page),如推薦、搜索、動態、分區等等絕大多數頁面都是列表型的,它給用戶提供了豐富的內容篩選和預覽的場景;另一類是詳情頁(DetailView Page),當用戶在任何列表頁點擊感興趣的內容時,都會匯入到詳情頁觀看。

圖片圖片

(圖2:視頻詳情頁聚集了視頻關聯的多種信息與功能入口)

從圖2可以看到,視頻詳情頁聚集了該視頻相關的屬性和功能入口,例如:熱門、全站排行榜、每周必看等稿件榮譽,視頻拍攝模板,視頻合集,視頻配樂以及所屬話題等等信息。這些信息以及入口可以幫助用戶進一步地探索相關的主題內容和功能。

現狀與問題

在技術實現上,B站面向用戶的應用架構主要分為四層:

  • 終端層:直接與用戶交互的客戶端,包括手機APP、H5,PC上Web和客戶端,以及其他屏幕終端,例如:TV,車載,音響以及PS等等。
  • 接入網關:一般為LB(Load Balance)加AGW(API-Gateway), AGW主要會負責請求路由,協議轉換,協議卸載,限流熔斷,安全封禁等。
  • BFF(Backend for Frontend):由于終端的增加,為了保證client-specific的邏輯能夠做到比較好的隔離,通常實踐會按終端拆分應用,例如:web-interface(面向網頁),app-interface(面向APP),tv-interface(面向電視端)等等。除此之外,由于頁面邏輯越來越復雜,流量越來越大,也會將頁面的BFF邏輯分拆單獨的應用做到發布與部署的隔離,例如:app-feed(首頁),app-view(視頻詳情頁)等。
  • 業務Service:負責業務域或能力的接口,通常會按照功能/能力和業務領域拆分。

圖片圖片

(圖3:應用架構分層)

由圖3可以看出,視頻詳情頁的主要邏輯集中在BFF層,隨著DAU增長以及業務的不斷擴展,我們面臨了兩個問題:

問題一:讀擴散(fanout read)的數量隨著業務擴展越來越大,對BFF自身以及下游業務都帶來巨大流量負載和復雜度。如下圖所示,為了展示關聯視頻的功能入口,業務Service需要一方面承載所有視頻詳情請求的流量以及帶來的CPU資源消耗;另一方面還需要通過實現類似bloom filter機制來避免所有未關聯視頻請求帶來的大量回源查詢。

圖片圖片

(圖4:負載隨BFF的讀擴散無差別的放大到所有Service,并帶來Service的實現復雜化)

問題二:或許問題一我們可以通過增加機器和實現復雜度來解決,但是隨著fanout read的擴散數不斷增加,單個視頻詳情請求latency會持續惡化,直到用戶不可接受。(圖4.a【參考1】,fanout數增加會大幅增加整體請求超時的概率。圖4.b 是真實的Bilibili APP視頻詳情BFF的fanout請求拓撲,已經比較龐大(圖已經看不清了),而且fanout個數還在不斷隨著業務增加而持續增加。)

圖片圖片

(圖4.a fanout數與超時率的相關性,摘自《The Tail At Scale》)

圖片圖片

  1. (圖 4.b 視頻詳情頁BFF的fanout實際情況,通過內部Trace系統繪制)

分析與建模

如上文提到的,很多視頻詳情的下游業務Service僅僅覆蓋了部分視頻,即只有部分視頻有關聯數據,所以常常會使用類BloomFilter的機制來過濾未關聯視頻的請求。

我們對視頻詳情BFF請求下游的Response大小進行分桶打點(使用Prometheus Histogram打點)。進過分析發現,有較多的業務Service返回的Response呈現出下圖所示的分布:

圖片圖片

(圖5:BFF請求Service返回包大小分布)

可以看出,BFF訪問的不少業務Service接口Response 90%以上都為“空”,即代表請求的視頻并沒有關聯該業務。但是在實現上,視頻詳情BFF在每次獲取視頻詳情信息都會請求這些業務,根本原因是在BFF層在處理請求時并不知道視頻關聯了哪些業務。

如果我們可以在BFF層提前知道本次請求的視頻關聯了哪些業務,就可以大幅降低BFF的讀擴散數量和業務Service的負載,做到按需訪問。

我們可以給每個視頻建立一個包含其關聯業務的稀疏向量,稱為視頻-業務索引。如下圖所示:

圖片圖片

(圖6:視頻id與所關聯業務的索引模型)

在實際落地實現時,視頻業務索引并不一定以稀疏向量的方式存儲視頻與業務的關聯關系,可以使用一些現成的kv系統。例如我們是用redis的hash key來實現的。另外需要考慮的是,當業務與視頻關聯關系發生變化時,需要有全量(初始階段)和增量的將變更通知到索引服務進的機制。

實現

基于前面的問題分析與建模,我們將視頻詳情BFF的架構優化為如下圖所示:

圖片圖片

(圖7:優化后的架構與處理流程)

在BFF請求處理流程中,①引入了業務關聯索引服務,在BFF請求下游業務Service前通過獲取視頻關聯業務的索引,②提前獲取本次請求應該訪問的哪些業務Service將不相關的業務請求過濾掉。索引是通過redis的hashmap實現,同時也使用了公司內部的KV存儲做持久化和redis故障降級。redis的key設置示例如下:

HMSET index_vid1234 biz1 0 biz2 1 bizM "hot"

視頻關聯業務的索引構建是通過將下游業務的關聯信息全量+增量導入構建。為了方便下游業務的更高效的將異構數據導入索引,我們提供了一套支持在線進行業務變更消息清洗與導入函數編寫的后臺系統。如下圖所示:

圖片圖片

(圖8:業務變更事件處理函數與索引更新推送后臺)

架構擴展

經過我們進一步的調研發現:不僅僅是視頻詳情,Story(短視頻)、直播、動態和我的頁等詳情頁都呈現出類似的聚合場景,而且如圖3這些聚合場景也會同時出現在APP、TV、Web等多個端對應的BFF中。那是否可以通過一套更加標準且通用的方案來統一解決類似視頻詳情的聚合問題?

如前文圖3所示,BFF的主要處理邏輯分為:參數處理,聚合邏輯,返回對象(VO)的組裝。我們可以將視頻、直播、用戶等復雜的聚合邏輯抽象成更為通用聚合服務,提供給所有BFF使用。要做到這點,通用聚合服務需要具備以下能力:

  1. 支持不同終端BFF按需獲取聚合模型。
  2. 支持更加靈活的擴展聚合模型,即在滿足1的基礎上拓展一個新業務的成本盡可能的低。
  3. 支持前面基于業務關聯索引進行降低負載的能力。

關于第1點,業界常見的做法包括以下幾種:

  • GraphQL:通過字段選擇器實現所需信息的篩選。GraphQL雖然功能全面且靈活,但是引入會使得系統實現和問題排查的復雜度急劇升高,不利于長期的維護和迭代。(詳見參考2)
  • Protobuf field mask:Google APIs提出的通過在請求參數中增加google.protobuf.FieldMask類型的字段來指定所需要的返回范圍,旨在減少不需要的返回字段帶來的網絡傳輸海和服務端計算成本。不過,Google APIs已經宣布了read_mask已經處于廢棄狀態。
  • View Enum:為了滿足field mask的按需獲取機制,Google APIs提供了一種更好的替代方案(詳見參考3)。通過定義View Enum,由服務提供方定義常見的按需訪問場景,例如:BASIC返回基本信息并用于列表場景,ALL用于返回詳情用于詳情頁場景。同時也支持更加豐富的枚舉定義,這正好契合了我們的需求。

以下是我們針對視頻詳情頁的View Enum定義:

enum ArchiveView {
    //未指定,不返回數據
    UNSPECIFIED = 0;
    // 以下是最常見場景的視圖定義
    // 返回稿件簡易信息(用于信息查詢)
    SIMPLE = 1;
    // 返回稿件基礎信息(可用于首頁、搜索列表查詢)
    BASIC = 2;
    // 返回稿件基礎信息+分P信息(最簡版詳情,用于分享等場景)
    BASIC_WITH_PAGES = 3;
    // 返回APP端視頻詳情所有信息
    ALL_APP = 4;
    // 返回WEB端視頻詳情所有信息
    ALL_WEB = 5;
    // 返回TV端視頻詳情所有信息
    ALL_TV = 6;
    // 可以持續增加新的場景
}

關于第2點,我們將聚合邏輯抽象成DAG圖,之所以使用DAG模型是因為部分業務Service之間會存在前后依賴,例如:一些視頻的屬性依賴與視頻基礎信息(通過訪問視頻基礎信息Service獲取)中的視頻作者信息。這樣任何新增的業務只需要:1. 指定依賴的其他節點,2. 編寫節點內的邏輯,包括訪問Service服務和業務邏輯處理,3.配置該節點應該在哪些View Enum的使用。

關于第3點,前面已經介紹過實現原理,我們只需要:將索引從視頻-業務索引擴展到直播、用戶-業務的索引即可。

綜上所述,我們將通用數據聚合服務命名為DAGW(Data Aggregate Gateway),DAGW的內部結構以及與BFF層以及Service的交互如下圖所示:

圖片圖片

(圖9:引入通用數據聚合網關層DAGW統一滿足聚合場景需求)

效果

DAGW通用數據聚合網關以及業務關聯索引上線后,支持了視頻、用戶等信息聚合能力,已經有近30個業務Service接入并平均幫助業務Service降低了超過90%的流量和負載。以下是視頻的高能看點業務和用戶的粉絲勛章業務接入效果:

1.  視頻的高能看點業務Service的流量中,來自播放頁(app-view)的流量高峰時期達到100k+ QPS,經過接入DAGW優化后效果非常顯著,下圖監控中可以看出來請求QPS降低了99%。

圖片圖片

2.  粉絲勛章是用戶通過長期觀看主播直播以及參與互動獲取的可佩戴的鐵桿粉絲榮譽,因為獲得門檻較高且只有在特定主播內容下才展示,通過接入DAGW后,可以有效降低85%以上的訪問流量。

圖片

參考

1. The Tail at Scale:https://research.google/pubs/pub40801/

2. GraphQL: From Excitement to Deception:https://betterprogramming.pub/graphql-from-excitement-to-deception-f81f7c95b7cf

3. View Enum:https://google.aip.dev/157

本期作者

圖片

黃山成

嗶哩嗶哩資深開發工程師

夏琳娟

嗶哩嗶哩資深開發工程師

圖片

趙丹丹

嗶哩嗶哩資深開發工程師

責任編輯:武曉燕 來源: 嗶哩嗶哩技術
相關推薦

2018-08-25 14:07:24

數據聚合閑魚前端

2024-12-05 12:01:09

2024-09-10 08:42:37

2024-10-15 08:14:51

2024-05-17 08:16:08

數據建設風控領域數據分析

2023-11-30 09:34:14

數據可視化探索

2022-08-21 21:28:32

數據庫實踐

2022-06-30 10:56:18

字節云數據庫存儲

2021-12-08 10:35:04

開源監控Zabbix

2023-10-27 12:16:23

游戲發行平臺SOP

2023-01-05 07:54:49

vivo故障定位

2017-09-08 17:25:18

Vue探索實踐

2024-10-09 08:33:41

2024-09-25 11:14:33

2017-05-18 11:43:41

Android模塊化軟件

2024-01-02 07:44:27

廣告召回算法多路召回

2023-02-08 18:33:49

SRE探索業務

2023-02-03 18:31:35

訂單流量錄制

2022-06-07 15:33:51

Android優化實踐

2024-04-17 07:21:52

物化視圖查詢加速器數據倉庫
點贊
收藏

51CTO技術棧公眾號

日本少妇激情舌吻| 妓院一钑片免看黄大片| 风流老熟女一区二区三区| 久久久久国产精品| 51午夜精品国产| 国产精品视频一二三四区| 天天综合在线视频| 久久99精品久久久久婷婷| 欧美激情亚洲视频| 亚洲码无人客一区二区三区| 成人51免费| 欧美性猛交xxxx黑人| 一个色的综合| 亚洲av成人精品一区二区三区在线播放| 久久久国产精品一区二区中文| 日韩最新av在线| 9.1成人看片| 久久伊人精品| 欧洲色大大久久| 蜜臀av无码一区二区三区| 日韩三级影院| 9久草视频在线视频精品| 国产欧美一区二区| 国产毛片aaa| 欧美在线日韩| 国产一区二区三区视频| 91丨porny丨对白| 综合久久av| 在线观看免费成人| 黄色av网址在线播放| 99福利在线| 国产精品水嫩水嫩| 美乳视频一区二区| 黑人操亚洲女人| 国产剧情一区二区| 国产视频福利一区| 国产精品无码粉嫩小泬| 亚洲综合精品四区| 97在线观看视频国产| 久久精品视频免费在线观看| 日韩免费在线| 伊人av综合网| 天天躁夜夜躁狠狠是什么心态| 加勒比色老久久爱综合网| 欧美一区二区三区公司| 中文字幕中文在线| 成人av集中营| 欧美性xxxx18| 国产99久久九九精品无码| 麻豆av在线免费观看| 亚洲你懂的在线视频| 在线国产99| 日本中文字幕视频在线| 国产精品视频yy9299一区| 日本在线视频不卡| wwwxxx在线观看| 欧美国产日韩a欧美在线观看| 激情五月综合色婷婷一区二区| 人妻夜夜爽天天爽| 不卡视频一二三| 国内精品一区二区| 性xxxx视频| 2020国产精品| 日本一区二区三区在线视频 | 国产一区二区精品久久| 成人av.网址在线网站| 97国产成人无码精品久久久| 久久超碰97人人做人人爱| 成人av在线天堂| 国产黄a三级三级三级| 国产成人aaa| 国模一区二区三区私拍视频| 女人天堂在线| 国产午夜久久久久| 在线观看国产一区| 欧美理论电影| 午夜精品福利久久久| 国产视频一视频二| av成人亚洲| 欧美一区二区久久| 中文成人无字幕乱码精品区| 国产精品中文字幕亚洲欧美| 中文字幕日韩在线观看| 天天看片中文字幕| 男人的天堂亚洲| 国产一区二区在线免费| 亚洲精品久久久蜜桃动漫 | 玖玖在线精品| 91在线视频九色| 蜜臀av在线观看| 久久综合99re88久久爱| 影音先锋欧美资源| √8天堂资源地址中文在线| 色噜噜狠狠色综合欧洲selulu| 狠狠躁狠狠躁视频专区| 1204国产成人精品视频| 亚洲视频国产视频| 欧美黑吊大战白妞| 久久蜜桃精品| av一区二区三区免费| 青青草视频在线免费观看| 亚洲欧洲性图库| 成熟丰满熟妇高潮xxxxx视频| 狠狠久久综合| 亚洲激情第一页| 伊人在线视频观看| 国产精品亚洲综合色区韩国| 国产综合色香蕉精品| 婷婷色在线视频| 亚洲视频一二区| 久久精品视频91| h视频久久久| 日韩在线视频观看正片免费网站| 一级片免费网址| 国产美女精品人人做人人爽| 日韩av电影免费播放| av电影在线免费| 69堂成人精品免费视频| 免费毛片视频网站| 伊人精品在线| 成人高h视频在线| 黄色在线视频观看网站| 亚洲国产一二三| 久久精品无码一区二区三区毛片| 国产91精品对白在线播放| 久久久久久有精品国产| 亚洲一级片免费看| 国产亚洲一区二区在线观看| 国产精品裸体瑜伽视频| 香港久久久电影| 久久精品国产v日韩v亚洲| 无码人妻一区二区三区线| 不卡欧美aaaaa| 国产美女在线一区| 亚洲免费一区三区| 美女福利视频一区| 国产美女免费视频| 亚洲欧美一区二区在线观看| 国产理论在线播放| 欧美午夜精彩| 国产精品久久激情| www.亚洲.com| 欧美色视频一区| 中文字幕免费高清| 日日欢夜夜爽一区| 日韩精品一区二区三区色偷偷| 天堂8中文在线最新版在线| 亚洲国产99精品国自产| 欧美老熟妇一区二区三区| 精品系列免费在线观看| 中文字幕中文字幕在线中心一区| 国产极品久久久久久久久波多结野| 亚洲精品日韩在线| 国产又粗又猛又黄视频| 久久精品欧美一区二区三区不卡 | 亚洲精品aaa| 久久久国产精品一区| 国产精品热久久| 亚洲日本在线观看| 伊人av在线播放| 黄色日韩在线| 精品视频一区二区| 天天综合网天天| 在线观看成人黄色| 国产绿帽刺激高潮对白| 一区二区三区四区视频精品免费| 午夜诱惑痒痒网| 国内一区二区三区| 久久久久久久久一区| 欧美一区 二区 三区| 色综合伊人色综合网站| 国产精品久久久久久久免费 | 日韩一区二区高清视频| 成人香蕉社区| 日韩免费高清在线观看| 四虎久久免费| 精品国一区二区三区| 日本三级小视频| 国产精品污www在线观看| 91香蕉国产线在线观看| 亚洲毛片视频| 色一情一乱一伦一区二区三欧美| 日韩黄色三级| 97国产suv精品一区二区62| 嫩草研究院在线| 欧美夫妻性生活| 日韩女优在线观看| 国产精品欧美经典| 国产综合内射日韩久| 午夜在线精品| 成人免费a级片| 欧美色蜜桃97| 国产精品成人一区二区三区| 国产va在线视频| 中文字幕免费国产精品| 性中国xxx极品hd| 欧美在线free| 久久精品这里有| 中文在线资源观看网站视频免费不卡| 日本一区二区三区在线免费观看| 国产九九精品| 国产又粗又长又爽视频| 九九在线精品| 国产不卡一区二区在线观看| jizz久久久久久| 97不卡在线视频| av香蕉成人| 在线视频免费一区二区| 人妻无码中文字幕| 欧美一区二区三区视频在线观看| 成人毛片在线播放| 亚洲最色的网站| 国产精品www爽爽爽| 成人av在线一区二区| 爱豆国产剧免费观看大全剧苏畅| 免费日韩一区二区| 六月婷婷在线视频| 最新国产精品| 亚洲欧洲一区二区在线观看| 天美av一区二区三区久久| 亚洲已满18点击进入在线看片| 婷婷午夜社区一区| 88国产精品欧美一区二区三区| 超碰个人在线| 久久精品国产亚洲| chinese偷拍一区二区三区| 日韩精品视频三区| 天堂网在线中文| 精品国免费一区二区三区| 国产女同91疯狂高潮互磨| 欧美日韩一级片网站| 成人免费毛片男人用品| 精品久久久久久久久久| 日本三级2019| 亚洲一区二区三区视频在线播放 | 色影院视频在线| 国产亚洲综合久久| 国产高清一区在线观看| 亚洲片在线资源| 免费在线稳定资源站| 日韩国产精品一区| 亚洲色图狠狠干| 国产视频丨精品|在线观看| 日韩在线视频观看免费| 亚洲精品福利免费在线观看| 国精产品一品二品国精品69xx | 欧美性猛交99久久久久99按摩| 国产极品美女高潮无套嗷嗷叫酒店| 亚洲日本乱码在线观看| 日本一级二级视频| 亚洲欧美视频在线观看| 久草综合在线视频| 亚洲一区二区三区影院| 日韩av片在线播放| 欧美三级免费观看| 黄色av一区二区| 欧美日韩国产a| 99久久亚洲精品日本无码| 欧美一区二区三区免费| 成人免费一级视频| 亚洲国产毛片完整版| 欧美日韩国产综合视频| 亚洲午夜久久久久久久| 91高清在线视频| 欧美精品在线网站| 大桥未久在线播放| 青草热久免费精品视频| 成人啊v在线| 成人免费在线网址| 国产毛片久久久| 欧洲精品久久| 中文字幕人成人乱码| 青春草国产视频| 久久福利影视| 依人在线免费视频| 国产成人av一区二区| 久久人人爽人人爽人人片| 国产精品天美传媒沈樵| 免费在线看黄网址| 欧美视频国产精品| 亚洲天堂国产精品| 日韩久久免费av| 九色在线免费| 久久国产精品久久精品| 岛国av在线网站| 国产精品video| 中文字幕一区二区三区四区久久| 国产综合第一页| 成人久久久久| 无码粉嫩虎白一线天在线观看| 在线综合亚洲| 手机在线国产视频| 久久欧美中文字幕| 成人在线观看小视频| 天天综合网 天天综合色| 这里只有精品免费视频| 日韩精品一区二区三区中文不卡| 免费一级毛片在线观看| 久久亚洲成人精品| 在线免费三级电影网站| 亚洲www在线| 精品视频99| 成年人午夜免费视频| 久久成人综合网| 亚欧洲乱码视频| 亚洲一区二区三区视频在线| 国模私拍一区二区| 国产网站欧美日韩免费精品在线观看 | 777777av| 国产一区二区视频在线| 国产成人无码精品久久二区三| 亚洲精品ww久久久久久p站| 欧美 亚洲 另类 激情 另类| 亚洲国产成人一区| 亚洲精品白浆| 国产综合久久久久久| 精品国产乱码久久久久久果冻传媒| 亚洲熟妇无码av在线播放| 久草中文综合在线| 熟女少妇内射日韩亚洲| 午夜国产不卡在线观看视频| 国产成a人亚洲精v品无码| 视频在线观看99| 99欧美精品| 日本一区二区三区视频免费看| 性娇小13――14欧美| 国产精品久久久久久在线观看| 亚洲人成网站在线| 91亚洲视频在线观看| 中文在线资源观看视频网站免费不卡 | 清纯唯美亚洲综合一区| 亚洲成熟丰满熟妇高潮xxxxx| 不卡的av网站| 日韩精品人妻中文字幕| 精品国产伦理网| 丁香高清在线观看完整电影视频 | 人人妻人人澡人人爽久久av| 欧美成人精品在线| 伊人久久一区| 亚洲成年人专区| 国产一区三区三区| 中文字幕亚洲欧美日韩| 日韩一区二区三免费高清| 国产激情视频在线| 2020国产精品久久精品不卡| 91精品蜜臀一区二区三区在线| 亚洲一区二区三区观看| 国产精品白丝在线| 99国产精品久久久久久久成人| 久久亚洲精品一区二区| 麻豆精品国产| 一本久道高清无码视频| 成人国产亚洲欧美成人综合网 | 2019男人天堂| 欧美日韩国产一级二级| 乱人伦中文视频在线| 51国偷自产一区二区三区的来源| 欧美激情综合| 亚洲欧美日韩偷拍| 一本一本久久a久久精品综合麻豆| 色哟哟在线观看| 国产精品美女在线| 一区二区三区毛片免费| 极品白嫩的小少妇| 日韩欧美中文字幕在线观看| 狠狠色伊人亚洲综合网站l| 国产美女久久精品香蕉69| 在线观看免费一区二区| 大桥未久恸哭の女教师| 欧美小视频在线| 日韩黄色影院| 3d动漫啪啪精品一区二区免费| 在线成人国产| 黄色片网站免费| 欧美挠脚心视频网站| 色噜噜狠狠狠综合欧洲色8| 精品乱子伦一区二区三区| 久热综合在线亚洲精品| 最新一区二区三区| 亚洲丁香婷深爱综合| 成人激情综合| 欧美激情亚洲天堂| 久久久精品影视| 国产精品久久久久久久成人午夜| 欧美激情图片区| 欧美色图国产精品| 日韩高清一二三区| 欧美在线色视频| 女同视频在线观看| 日本一区二区三区视频免费看| 国产呦萝稀缺另类资源| 69国产精品视频免费观看| 久久久国产精品视频| 一本色道久久综合亚洲精品酒店 | 男人天堂视频网| 九九热这里只有精品免费看| 国内精品久久久久久久久电影网 | 久久综合久久综合九色| 国产男男gay体育生白袜| 日韩av电影院|