天天色一色-天天色影院-天天色资料-天天色综-免看一级一片一在线看-免看黄

「芒果TV」易桂:在微服務下基于GraphQL構建通用一層

亞太內容分發大會是亞太CDN產業聯盟舉辦的CDN領域千人科技會議,是全球內容流量技術和運維領域最重要、規模最大的活動之一。大會目標是推動內容分發平臺CDN節點部署,技術創新和流量成本降低。目標聽眾是流量內容平臺的CTO、運維總監和運維經理,通過向大會聽眾和讀者普及CDN行業技術創新,來推動企業內容平臺的技術運維,適應創新的流量技術和價格體系。

6月9日,“新十年 無畏前行”2021亞太內容分發大會暨CDN峰會在北京盛大開幕,亞太CDN產業聯盟聯合來自中國移動、阿里云、騰訊云、網宿科技、安邁云、中興通訊等中國CDN產業生態圈頂層企業國內內容分發網絡生態的頂尖技術專家、知名企業領袖、數字營銷專家,攜高尖端技術、優秀實踐案例、未來趨勢洞悉等高質量硬核內容悉數亮相,共同打造具備里程碑意義的內容分發網絡盛會,面向新十年,無畏前行,擴張CDN產業覆蓋,推動CDN與RTC互動直播、PCDN邊緣計算、內容出海、對象存儲、運營商5G等領域融合、創新與升級,賦予CDN全新價值!

「芒果TV」易桂:在微服務下基于GraphQL構建通用一層-DVBCN

在6月9日下午舉辦的【邊緣加速論壇論壇】上,芒果TV后端研發工程師易桂帶來了以《在微服務下基于GraphQL構建通用一層》為題的主題演講。本次大會上,芒果TV榮膺亞太內容分發大會CDN運營領袖獎。

「芒果TV」易桂:在微服務下基于GraphQL構建通用一層-DVBCN

演講開始,易桂感慨道:“時隔5年后來到曾經奮斗過的北京,日新月異的技術發展,讓我有著許多的感慨。最令人興奮的是酒店里已經配有智能機器人可以乘坐電梯為客人提供專業服務了,這是技術人不斷努力的結果。CDN同樣如此,技術的不斷創新、升級、超越、突破,終使其在互聯網上書寫了濃墨重彩的一筆。”

易桂介紹,芒果TV是以視聽互動為核心,融網絡特色與電視特色于一體,實現“多屏合一”獨播、跨屏、自制的新媒體視聽綜合傳播服務平臺,同時也是湖南廣電旗下唯一互聯網視頻平臺,提供湖南衛視電視欄目高清視頻點播服務,并同步推送熱門電視劇、電影、綜藝和音樂視頻等內容,以及部分電視臺網絡同步直播。作為芒果TV負責點、直播一層后端服務的技術人員,面對最核心業務,是如何做技術的創新升級的呢?

對此,易桂分為四點為大家進行了具體介紹。

首先是對芒果TV的播放一層業務和技術架構的發展,易桂介紹了播放一層的前世今生。播放一層負責客戶端點、直播功能的后端業務邏輯,是直接面向終端的,所以叫我們一層。芒果TV從最開始的PcWeb端,逐步發展為擁有M站、手機、Pad等客戶端,由于我們早期是按照終端來做產品的,這也間接決定了播放一層之前的架構如此。各個終端發起http請求到自己對應的播放一層,各端播放一層再請求下游http服務接口獲取數據,進行業務邏輯處理。各端播放一層都包含播放的全部業務,且各端播放業務大體相似,抽象的說有取串、播放頁信息、諸多列表和很多配置接口。

「芒果TV」易桂:在微服務下基于GraphQL構建通用一層-DVBCN

此架構的優點有包括以下幾點:一是開發簡潔,功能都在各個終端的播放一層內部,便于軟件設計和開發規劃;二是容易測試,核心業務沒有復雜的服務調用關系,都是內部調用,方便測試;三是容易運維,各個終端獨立部署,互相隔離。不存在分布式集群的復雜部署環境,降低了部署難度。

而隨著業務的發展,工作模式發生了變化。由按終端來做產品變為統一做產品和業務,只是終端的承載方式不同。播放一層老的技術架構漸漸暴露出一些問題。“首先由于播放一層包含有復雜的業務邏輯,在終端、播放一層和服務層職責劃分不清楚的情況下,小需求的修改,需要牽動終端、播放一層和服務層三方。其次,全端的相同需求,相同業務邏輯需要在各個終端的播放一層實現一遍,產生大量的重復代碼。

因此面對這些問題急需改變,BFF架構開始實施,甚至向著越來越先進的CBA技術發展。這就是我們的第二部分內容——BFF架構。”易桂說。

那么,要解決播放一層的問題,芒果TV希望BFF架構做到以下幾點。首先是明確定位,明確終端、播放一層和服務層的職責,最主要是搞清楚中間層:播放一層的定位。其次是終端適配,需要一種方便、標準的方式實現多端差異化需求適配。最后是服務化,播放一層合并的過程中抽象出通用業務可以下沉為服務。“這樣下來,新的架構很容易就出來了。”易桂說。

播放一層我們定位為介于終端和服務層之間的實現終端差異化的系統。將播放一層的通用業務獨立為微服務,下沉到服務層。微服務按功能劃分為起播、取串、播放頁信息、列表等各種服務化系統。而將各端播放一層合并為通用一層,合并后如何優雅實現多端和多版本的差異化適配成為重中之重。易桂也表示,這一點也是此次演講的重點。

「芒果TV」易桂:在微服務下基于GraphQL構建通用一層-DVBCN

上述新的架構,其實就是BFF架構(Backend for Frontends),為前端而存在的后端中間層。傳統的前后端分離應用中,前端直接調用后端服務,后端服務進行業務邏輯處理。那么引入了 BFF 之后,前端將直接和 BFF 通信,BFF 再和服務層進行 API 通信,所以本質上來說,BFF 更像是一種“中間層”服務。對于BFF需要做到實現多端和多版本差異化適配,有以下幾種適配需求。

「芒果TV」易桂:在微服務下基于GraphQL構建通用一層-DVBCN

一是聚合,對于客戶端(特別是移動端)來說,HTTP 請求是很昂貴的,所以為了減少請求的次數,前端一般會傾向于把有關聯的數據API合并為一個。

二是裁剪,不同屏幕的大小等差異,導致相同接口客戶端需要的響應結果內容大小不同。

三是適配,不同客戶端對后端響應結果名稱要求不同。

那么,具體的聚合、裁剪、適配如何實現呢?

易桂表示,經過調研之后,選中了GraphQL,一種為API而生的高性能查詢語言。GraphQL 作為一種 API 查詢語言,專門用于處理已有服務接口的響應結果,已被Facebook、Netflix、GitHub使用。易桂舉例介紹道:“一個獲取視頻信息的接口,GraphQL分為服務端描述數據部分,我們在播放一層定義了Video類型數據,有vid,videoName和serialno字段。同時GraphQL會把描述的數據與后端微服務接口做關聯,指定哪個服務的哪個接口返回Video類型數據。客戶端按需求請求播放一層定義的Video類型數據,例如獲取vid為10000的視頻,且只需要videoName字段。此時播放一層給客戶端的響應內容就只有視頻名稱信息。”

GraphQL并不是一種編程語言,而是一種 API 查詢規格。它的結構為三層結構,其中,最上層QuerySchema是客戶端按需請求的接口數據內容,可對服務端描述數據的DataSchema做裁剪和適配等。中間DataSchema是用于服務端描述數據的。最底層的DataFetcher是靜態數據、DB、第三方接口等的包裝。

隨后易桂介紹:“以上就是對GraphQL的初步了解,那么GraphQL是如何做到聚合的?是通過多個服務接口數據聚合、裁剪掉冗余信息、自定義響應內容,以及GraphQL的高性能,即并發獲取數據和N+1問題的解決方案DataLoader等。”

「芒果TV」易桂:在微服務下基于GraphQL構建通用一層-DVBCN

而對于客戶端(特別是移動端)來說,HTTP 請求是很昂貴的,所以為了減少請求的次數,前端一般會傾向于把有關聯的數據API合并為一個。比如Video類型的數據中,客戶端期望返回該視頻的基礎信息同時,還返回播放次數信息。服務端描述數據Video中增加playCount字段,標識視頻的播放次數。同時給playCount綁定到播放次數服務的接口。客戶端請求Video數據時,也增加playCount字段,那么服務端響應的Video數據就同時聚合了視頻基礎信息和播放次數信息。

那如何實現裁剪呢? 如果有客戶端獲取視頻信息時,不需要serialno集數字段,那么客戶端請求時,去掉serialno集數字段即可,服務端響應的Video類型數據則沒有serialno字段。如果有客戶端需要接口響應的視頻名稱不是videoName,而是vname, 那么客戶端請求給videoName取別名為vname,服務端響應的Video類型數據中視頻名稱字段則為vname。

GraphQL引擎不僅靈活,還可以通過指定查詢策略為AsyncExecutionStrategy,實現多個DataFetcher并發執行,提高性能。比如當QuerySchema獲取視頻信息的同時,還要獲取播放次數和明星列表。GraphQL引擎在獲取到視頻信息后,會同時發起播放次數和明星列表的請求。“雖然GraphQL靈活,但也有天生的缺陷。比如獲取視頻列表的接口,每個視頻都需要返回其的明星列表。因此我們可以通過FaceBook的DataLoader來解決N+1問題。DataLoader支持通過Cache去除重復請求,同時支持去重、合并后,批量請求。”易桂說。

最終,GraphQL提供了如此豐富的特性,讓播放一層非常容易就實現了業務的差異化。易桂介紹:“在頁面展示的時候,視頻播放頁面展示列表的時候是播放技術和收藏,如左圖所示。存在著不同的使用場景,所以對于相同的數據卻有著不同的關注點,我們輕松就能實現這些功能。GraphQL讓播放一層應用不再復雜。”

「芒果TV」易桂:在微服務下基于GraphQL構建通用一層-DVBCN

在微服務下基于 GraphQL 構建的通用一層是什么樣子的呢?這便涉及到第四部分內容——配置即接口,你值得擁有。“我們實現了配置即可提供新接口給客戶端使用的目標。”易桂說。

播放一層基于Graphql-java開發,整體分為三個部分。其中,QuerySchema部分是接入層,管理QuerySchema配置。支持客戶端傳入QuerySchema,也可以根據客戶端傳入的code或請求path和params通過規則映射到QuerySchema。而DataSchema部分是各個服務返回數據的圖形化組織,用于服務端描述數據。

最后,DataFetcher部分是下游服務的抽象層,可配置各個服務的域名、接口地址、請求參數(包括參數驗證)、響應結果等,配套有熔斷、容錯和降級等功能。易桂介紹:“播放一層這三個部分,由于主體都是配置文件。故可以做到只需要修改配置,即可在已有微服務的基礎上,開發出新的接口。”

「芒果TV」易桂:在微服務下基于GraphQL構建通用一層-DVBCN

演講最后易桂提出,當通用一層算法固定,只有配置變化時,能與我們的邊緣加速擦出怎樣的火花呢?

最后,易桂表示,期待后續與行業伙伴有深入的交流,并能得到先進技術的意見。

相關文章
芒果超媒前三季度凈利為14.44億元,實現營收102.77億元
芒果超媒前三季度凈利為14.44億元,實現…
湖南廣電局局長賀輝:年底前將全面完成整合任務,推進電視機機頂盒一體化
湖南廣電局局長賀輝:年底前將全面完成…
龔政文:湖南衛視與芒果TV雙平臺聯采聯購降低衛視投入,《歌手2024》帶來8.1%電視新用戶
龔政文:湖南衛視與芒果TV雙平臺聯采聯…
芒果超媒:芒果TV會員業務收入占互聯網視頻業務收入比重超50%
芒果超媒:芒果TV會員業務收入占互聯網…
長短視頻平臺又一案例!芒果TV與快手宣布達成全面深度合作
長短視頻平臺又一案例!芒果TV與快手宣…
芒果超媒:上半年會員業務收入24.86億元,運營商業務收入7.5億元
芒果超媒:上半年會員業務收入24.86億元…
我還沒有學會寫個人說明!
主站蜘蛛池模板: 成人a在线观看 | 一级色网站| 日本精品一在线观看视频 | 欧美日韩视频免费播放 | 性猛交毛片 | 国产成人99精品免费观看 | 视频在线一区 | youjizzxxx69日本| 免费一级毛片视频 | 成人国产精品毛片 | 一级特级欧美a毛片免费 | 色综合久久久久久888 | 久久精品国产欧美日韩亚洲 | 麻豆传媒一区 | 亚洲国产系列久久精品99人人 | 亚洲中文字幕特级毛片 | 深夜福利视频在线看免费 | 国产成人综合91香蕉 | 国产一级片儿 | 日本三级成人午夜视频网 | 欧美的高清视频在线观看 | 欧美日韩亚洲精品一区 | 欧美一区二区三区男人的天堂 | 国产精品观看在线亚洲人成网 | 欧美成人三级伦在线观看 | 日韩综合久久 | 高清不卡一区二区三区 | 国产欧美日韩在线不卡第一页 | 毛片搜索| 草草影院ccyy| 日韩一级欧美一级毛片在 | 久久久久国产精品免费看 | 91网站在线免费观看 | aa级毛片毛片免费观看久 | 国产欧美日韩一区二区三区在线 | 免费人成黄页网站在线观看 | 欧美精品久久久久久久久大尺度 | 成人免费在线播放 | 好吊妞998视频免费观看在线 | 久久视频在线 | 欧美午夜视频一区二区三区 |