<kbd id="afajh"><form id="afajh"></form></kbd>
<strong id="afajh"><dl id="afajh"></dl></strong>
    <del id="afajh"><form id="afajh"></form></del>
        1. <th id="afajh"><progress id="afajh"></progress></th>
          <b id="afajh"><abbr id="afajh"></abbr></b>
          <th id="afajh"><progress id="afajh"></progress></th>

          愛(ài)奇藝 App 中臺(tái)技術(shù)實(shí)踐

          共 5423字,需瀏覽 11分鐘

           ·

          2021-11-16 22:33


          關(guān)注我們,設(shè)為星標(biāo),每天7:30不見(jiàn)不散,架構(gòu)路上與您共享?

          回復(fù)"架構(gòu)師"獲取資源


          大家好,我是架構(gòu)君,一個(gè)會(huì)寫(xiě)代碼吟詩(shī)的架構(gòu)師。


          作者 | 謝國(guó)
          整理 | 張笑菊
          自阿里巴巴提出“大中臺(tái),小前臺(tái)”戰(zhàn)略后,移動(dòng)中臺(tái)在移動(dòng)互聯(lián)網(wǎng)領(lǐng)域獲得了快速發(fā)展,本文將為大家分享的是愛(ài)奇藝打造移動(dòng)中臺(tái)的過(guò)程。據(jù)了解,愛(ài)奇藝移動(dòng)中臺(tái)的建設(shè)過(guò)程可分為組件解耦、組件定制化和平臺(tái)化,未來(lái)會(huì)利用平臺(tái)發(fā)現(xiàn)、沉淀和復(fù)用的能力,對(duì)外提供 SaaS 服務(wù)。

          本文整理自愛(ài)奇藝研究員謝國(guó)在 ArchSummit 全球架構(gòu)師峰會(huì)上的演講。

          1 阿里大中臺(tái)小前臺(tái)戰(zhàn)略簡(jiǎn)介

          提到中臺(tái)的話,不得不提阿里了。2015 年,阿里的 CEO 張勇發(fā)了封內(nèi)部信說(shuō),要全面啟動(dòng)阿里的中臺(tái)戰(zhàn)略,構(gòu)建符合時(shí)代的“大中臺(tái)、小前臺(tái)”的組織機(jī)構(gòu)和業(yè)務(wù)機(jī)制。

          從左邊的單項(xiàng)目、單平臺(tái)變成右邊的聯(lián)合中臺(tái)模式。提出這個(gè)戰(zhàn)略的背景,主要是因?yàn)楫?dāng)時(shí)經(jīng)過(guò)一個(gè)跑馬圈地的時(shí)代,留下了一個(gè)標(biāo)志物,就是“煙囪式開(kāi)發(fā)”:淘寶技術(shù)團(tuán)隊(duì)當(dāng)時(shí)支撐的是淘寶和天貓,然后 1688 技術(shù)團(tuán)隊(duì)支撐 1688,這種開(kāi)發(fā)模式有 3 個(gè)弊端:

          1. 重復(fù)功能建設(shè)

          2. 煙囪相互之間沒(méi)有任何溝通和交流

          3. 不利于業(yè)務(wù)的沉淀和持續(xù)發(fā)展

          所以阿里就成立了共享事業(yè)部,將通用的業(yè)務(wù)抽象出來(lái),沉淀在中臺(tái),包括用戶中心、商品中心、交易中心等。

          看一下中臺(tái)的定義,其實(shí)中臺(tái)來(lái)源于前臺(tái),它更多的是為前臺(tái)的創(chuàng)新,還有快速迭代服務(wù)。所以說(shuō)中臺(tái)是位于前臺(tái)和后臺(tái)之間的一層。相對(duì)于前臺(tái)來(lái)講,它比前臺(tái)要更穩(wěn)定;相對(duì)于后臺(tái)來(lái)講,它比后臺(tái)要更加靈活。中臺(tái)的意義在于企業(yè)級(jí)能力復(fù)用平臺(tái):

          • “企業(yè)級(jí)”定義了中臺(tái)的邊界跟范圍

          • “能力”定義了中臺(tái)的主要承載對(duì)象

          • “復(fù)用”的話,定義了中臺(tái)的核心價(jià)值

          • “平臺(tái)“是我們中臺(tái)的主要表現(xiàn)形式

          2 愛(ài)奇藝 App 中臺(tái)

          除了愛(ài)奇 App,可能很少人熟悉愛(ài)奇藝其他的 App。愛(ài)奇藝的 CEO 龔宇提出了一個(gè)蘋果樹(shù)的概念,在愛(ài)奇藝的內(nèi)容上面,希望通過(guò)愛(ài)奇藝內(nèi)容孵化出一些其他的產(chǎn)品。比如像愛(ài)奇藝的二次元小說(shuō)、漫畫(huà)、知識(shí)付費(fèi)等。

          建立中臺(tái)的必要性

          既然有了這么多的產(chǎn)品,那么就有了建立愛(ài)奇藝 App 中臺(tái)的必要性。從三方面考慮,專業(yè)深度、人力資源、用戶體驗(yàn)。

          這個(gè)是愛(ài)奇藝中臺(tái)演進(jìn)歷程。在 2018 年以前,當(dāng)時(shí)愛(ài)奇藝的四大 App 基本上就是一套代碼,同一個(gè)工程。后來(lái)每一個(gè) App 都成立了一個(gè)單獨(dú)的團(tuán)隊(duì),我們把代碼還有開(kāi)發(fā)資源完全的隔離開(kāi),并且在這個(gè)過(guò)程中,將通用的組件給拆分出來(lái)。這個(gè)時(shí)候開(kāi)始做大量的解耦工作。然后在 2019 年,一邊做解耦,一邊在搭建愛(ài)奇藝 App 中臺(tái)。

          在未來(lái),除了要服務(wù)好公司內(nèi)部的各種業(yè)務(wù),還有對(duì)外提供 SaaS 服務(wù),特別是愛(ài)奇藝的一些合資的子公司,也要為他們做好支撐。

          談到解耦,就不得不提一個(gè)迭代效率的問(wèn)題。一個(gè)團(tuán)隊(duì)規(guī)模基本上決定了一個(gè)迭代效率的瓶頸。

          1. 對(duì)于一個(gè) 10 人以下的小型團(tuán)隊(duì)來(lái)講,這時(shí)候更多講究的是團(tuán)隊(duì)成員的獨(dú)當(dāng)一面,基本上就奉行“拿來(lái)主義”。

          2. 然后到了一個(gè)中型團(tuán)隊(duì),一個(gè)人英雄主義承擔(dān)不了這么大規(guī)模的東西。所以這時(shí)候就強(qiáng)調(diào)一種組件化解耦模塊化,讓大家專注在自己能做的事情上面。這個(gè)時(shí)候強(qiáng)調(diào)的是邊界弱耦合的組件化。

          3. 接下來(lái)到了一個(gè)大型團(tuán)隊(duì),這時(shí)候除了組件化之外,還強(qiáng)調(diào)業(yè)務(wù)之間的并行迭代能力。但是隨著工程規(guī)模的成長(zhǎng),組件化拆分的改造成本會(huì)呈指數(shù)性增長(zhǎng)。

          愛(ài)奇藝在 2018 年開(kāi)始就投入了大量的人力和物力去做各種解耦的事情。所以特別提個(gè)經(jīng)驗(yàn)教訓(xùn),小團(tuán)隊(duì)的時(shí)候,能夠解耦的盡早解耦。

          愛(ài)奇藝 APP 中臺(tái)效果,跟中臺(tái)合作最緊密的極速版和國(guó)際版就有這樣的反饋,“從人力資本上是巨大節(jié)約,參考基線 100 開(kāi)發(fā) + 規(guī)模,極速版和國(guó)際版同等功能只有 20 開(kāi)發(fā)規(guī)模;同時(shí)中臺(tái)也能將技術(shù)做深做細(xì);開(kāi)發(fā)經(jīng)驗(yàn)和流程也能共享”。

          這個(gè)是中臺(tái)的架構(gòu)圖,底層是中臺(tái)門戶。因?yàn)樗^的中臺(tái)化就是企業(yè)級(jí)能力復(fù)用平臺(tái),所以中臺(tái)化就是通過(guò)平臺(tái)化去發(fā)現(xiàn)、沉淀跟復(fù)用企業(yè)級(jí)能力。所以最重要的首先是打造一個(gè)中臺(tái)門戶,提供統(tǒng)一接入、統(tǒng)一門戶、統(tǒng)一賬號(hào)、權(quán)限和文檔的事情。上面是移動(dòng)開(kāi)發(fā)基礎(chǔ)框架,提供從開(kāi)發(fā)、測(cè)試到運(yùn)營(yíng)的一站式解決方案,包括一些框架組件、業(yè)務(wù)組件、基礎(chǔ)組件,還有后臺(tái)的一些組件服務(wù);還有高可用高性能的平臺(tái),發(fā)布運(yùn)營(yíng)平臺(tái),研發(fā)支撐平臺(tái)等。最上層就是支撐各個(gè)業(yè)務(wù) App。

          首先就是最底層的中臺(tái)門戶 QMAS,它的全稱叫 QIYI Mobile Application Studio。當(dāng)時(shí)做這個(gè)平臺(tái)之前,收集了各種反饋,特別是新 App 的反饋。對(duì)于新 App 來(lái)講,首先反應(yīng)就是開(kāi)發(fā)一個(gè)新的 App,冷啟動(dòng)的時(shí)間特別長(zhǎng),公司到底有哪些后臺(tái)服務(wù)?有哪些 SDK?文檔在什么地方?通通都不知道,遇到了很多問(wèn)題。

          1. 曾經(jīng)有團(tuán)隊(duì)反饋,他們一個(gè) App 從立項(xiàng)到正式上線花了大概三個(gè)月時(shí)間,大量的時(shí)間花在尋找各種文檔上,以及找各崗位幫忙對(duì)接的事情上。

          2. 愛(ài)奇藝 App 里面 APM 日活數(shù)據(jù),竟然連公司的前臺(tái)都有權(quán)限看。

          3. 每次搭建一個(gè)新系統(tǒng),都要搭建一套自己的權(quán)限管理管控,甚至每一個(gè)系統(tǒng)之間定義的產(chǎn)品線都是不一樣的。繁冗的事情很多,根本沒(méi)時(shí)間做數(shù)據(jù)沉淀。

          針對(duì)上面提到的情況,開(kāi)發(fā)了我們自己的中臺(tái)叫 QMAS。平臺(tái)整合有三方面優(yōu)勢(shì),第一:一站式服務(wù)接入,提供一些工單權(quán)限申請(qǐng)。第二:統(tǒng)一的決策管控,各平臺(tái)不會(huì)存在角色之間互相不一致的情況。第三:一站式瀏覽體驗(yàn),盡量抹平各個(gè)平臺(tái)存量差異,然后直接在 QMAS 上進(jìn)行增量平臺(tái)開(kāi)發(fā)。

          舉一個(gè)例子,以前一個(gè)推送平臺(tái)的申請(qǐng),大概要兩周左右。創(chuàng)建一個(gè)申請(qǐng),然后給各個(gè)公司的商務(wù)做審批,再發(fā)給愛(ài)奇藝的推送,愛(ài)奇藝的消息系統(tǒng)再確認(rèn)。這些都需要郵件來(lái)往,非常麻煩。現(xiàn)在直接在 QMAS 上一鍵申請(qǐng)就好了,接入效率大幅提升,且信息得到沉淀,還能復(fù)用 QMAS 的權(quán)限申請(qǐng)。

          平臺(tái)運(yùn)營(yíng)

          關(guān)于發(fā)布運(yùn)營(yíng),這里著重介紹兩個(gè)平臺(tái),一個(gè)是互動(dòng)平臺(tái),一個(gè)是用戶行為平臺(tái)。以互動(dòng)劇《他的微笑》為例。這里面提到一個(gè)分支劇情,你可以進(jìn)行選擇,像游戲一樣。愛(ài)奇藝已經(jīng)有好幾部這種互動(dòng)劇了。跟傳統(tǒng)的一條故事線相比,我們提供一些分支劇情。甚至有些綜藝頻道,能夠進(jìn)行一些視角切換,比如說(shuō)不同的導(dǎo)師的視角來(lái)看舞臺(tái)。還可以提供一些豎屏的小視頻互動(dòng)。

          IVOS 應(yīng)用場(chǎng)景,第 1 個(gè)平臺(tái)主要是給運(yùn)營(yíng)平臺(tái)做一些配置策略和場(chǎng)景。還提供一些非劇情類的互動(dòng)、氣泡廣告,這些都能做互動(dòng)。第 2 個(gè)是互動(dòng)制作平臺(tái)。

          另外搭建了一個(gè)叫做用戶行為分析的平臺(tái),可以看到每一個(gè)場(chǎng)景,每個(gè)頁(yè)面的流量是從哪里過(guò)來(lái)的,這個(gè)主要是給產(chǎn)品同學(xué)用,能看到用戶行為路徑大數(shù)據(jù)的可視化分析,能夠知道用戶的轉(zhuǎn)換留存的原因,輔助實(shí)現(xiàn)業(yè)務(wù)的快速增長(zhǎng)。

          研發(fā)支撐

          看一下研發(fā)支撐部分。這是最近剛成立的 10 人的虛擬小團(tuán)隊(duì),在打造愛(ài)奇藝 CI/CD 研發(fā)中臺(tái),主要囊括項(xiàng)目管理平臺(tái),打包平臺(tái)上線,還有版本管理以及渠道管理和運(yùn)維管理運(yùn)維平臺(tái)。這是面向整個(gè)公司做的,另外也會(huì)監(jiān)控整個(gè)流水線,還有各個(gè)后臺(tái)的平臺(tái)穩(wěn)定性,服務(wù)器日志等。

          SDK 對(duì)于移動(dòng)中臺(tái)來(lái)說(shuō)是非常重要的,所以在 QMAS 搭建了一個(gè) SDK 管理平臺(tái),就是為提供方和接入方搭建了一個(gè)橋梁:

          • 對(duì)提供方來(lái)講,可以非常方便的去創(chuàng)建發(fā)布,以及做一些成員管理。甚至測(cè)試可以針對(duì) SDK 做一些預(yù)發(fā)布的測(cè)試。

          • 對(duì)接入方來(lái)講,可以非常方便的看到移動(dòng)中臺(tái)到底有哪些 SDK,哪個(gè) SDK 具體什么作用。并且可以通過(guò)內(nèi)部 IM 系統(tǒng),直接找到對(duì)應(yīng)的功能。

          其次是搭建了一個(gè)移動(dòng) App 腳手架,將常用的一些功能、業(yè)務(wù)組件、基礎(chǔ)組建、后臺(tái)服務(wù)都陳列在腳手架上。腳手架有三大好處:提升開(kāi)發(fā)效率,避免踩過(guò)的一些典型坑,以及為 App 建立一個(gè)一致的基礎(chǔ)設(shè)施,方便做跨 App 的功能性升級(jí)。在新 App 已實(shí)驗(yàn)過(guò),大幅提升了開(kāi)發(fā)效率。

          腳手架使用姿勢(shì)也比較簡(jiǎn)單,首先是把代碼拉下來(lái),在 QMAS 上把各種后臺(tái)申請(qǐng)下來(lái)之后,保存在基層配置里,之后基本上就能跑起一個(gè)可運(yùn)行的 App 了,然后在上面再進(jìn)行自己的業(yè)務(wù)開(kāi)發(fā)。我們測(cè)出來(lái)一個(gè)新 App 的創(chuàng)建,大概從兩個(gè)月左右縮短到兩周,因?yàn)橐郧暗暮芏喾比叩牟僮鞫疾恍枰恕?/p>

          接下來(lái)講一下框架組件,大家知道移動(dòng)應(yīng)用的一個(gè)技術(shù)躍遷,從傳統(tǒng)的 Web 開(kāi)發(fā),到開(kāi)發(fā)獨(dú)立 App,可以看到各種各樣跨平臺(tái)框架都出來(lái)了,所以大家希望一套代碼實(shí)現(xiàn)在多個(gè)平臺(tái)上,這時(shí)候就是所謂的分久必合的時(shí)代。特別是 5G、IoT 時(shí)代的到來(lái),這個(gè)時(shí)候甚至可能要提供跨終端開(kāi)發(fā),這就叫分分合合時(shí)代。

          當(dāng)然我們現(xiàn)在處于跨平臺(tái)時(shí)代,所以愛(ài)奇藝中臺(tái)也沉淀了非常多的動(dòng)態(tài)化框架,其他 App 想用都是比較方便的。H5、小程序、小游戲,還有最近的 Facebook RN,還有自己開(kāi)發(fā)的一些插件化熱修復(fù)框架,以及 Flutter。

          這里重點(diǎn)介紹一下 Qigsaw 框架。Google 開(kāi)源 Google APP bundles 之后,我們看到一絲曙光,就是可以復(fù)用 APP Bundles。Google 將他的一些組件插件放在 Google Play Store 上面,然后底層的 runtime 負(fù)責(zé)合并和加載。

          而我們要做的事情,就將它的 runtime 替換成 Fake 的一套,保證 runtime 接口是完全一樣的,用愛(ài)奇藝的 CDN 替換 Google Player。原理就是基于 Google 一些原生的 App Bundles 工具鏈,山寨 Play Core Library,直接復(fù)用到原生的一些開(kāi)發(fā)工具類和文檔,開(kāi)發(fā)體驗(yàn)非常好,穩(wěn)定性非常高,我們只有一處 Hook,從 4.0 開(kāi)始就支持了。另外就是國(guó)內(nèi)國(guó)際雙軌制可以做無(wú)縫切換,對(duì)于國(guó)內(nèi)的開(kāi)發(fā)來(lái)講,它只用 Qigsaw 開(kāi)發(fā)框架就好了,而對(duì)于國(guó)外的用戶來(lái)講,直接用 App 的開(kāi)發(fā)環(huán)境就好了。

          目前已經(jīng)在非常多的 App 落地了,崩潰率在愛(ài)奇藝上幾乎為 0,啟動(dòng)成功率在 99.5% 左右。

          高可用高性能

          講完了框架組件的話,接下來(lái)看一下高可用高性能。提到高可用高性能、高穩(wěn)定性,首先想到的可能就是 APM。APM 現(xiàn)在提供了這么多功能,從崩潰異常和用戶交互,網(wǎng)絡(luò)熱修復(fù),用戶調(diào)試,以及幀率、ANR 等。APM 對(duì)后臺(tái)提供實(shí)時(shí)性、大數(shù)據(jù)、全覆蓋,還有很多維度的支撐。

          通過(guò)對(duì)一些設(shè)備進(jìn)行數(shù)據(jù)采集,經(jīng)過(guò) CDN 和 QLB 的 Balance,然后再到 Nginx,最后收集到 HBase 和 ES 里面。經(jīng)過(guò)符號(hào)解析,到前端展示。一旦報(bào)警,通過(guò)內(nèi)部 IM 或者郵件進(jìn)行通知。

          除了 APM,我們成立了一個(gè)虛擬團(tuán)隊(duì),在打造一個(gè)全鏈路的監(jiān)控平臺(tái),主要作用就是通過(guò)統(tǒng)一的投遞規(guī)范,然后收集整個(gè)端到端的日志、鏈路數(shù)據(jù),實(shí)現(xiàn)鏈路可視化。可以非常方便的看到鏈路瓶頸,進(jìn)而做一些可優(yōu)化的事情。另外可以做監(jiān)控報(bào)警,實(shí)現(xiàn)故障快速定位。目標(biāo)是線上定位問(wèn)題的效率能夠縮短至 20 分鐘。

          除了全鏈路監(jiān)控,我們打造了一個(gè)移動(dòng)日志平臺(tái),實(shí)時(shí)記錄一些重要的日志,當(dāng)觸發(fā)一些異常場(chǎng)景,會(huì)自動(dòng)把它上傳。

          最后再講一下無(wú)線網(wǎng)絡(luò)基礎(chǔ)組件,包括網(wǎng)關(guān)和 HTTPDNS。從有線網(wǎng)絡(luò)進(jìn)入到無(wú)線網(wǎng)絡(luò)之后,因?yàn)橛行┚W(wǎng)絡(luò)相對(duì)于無(wú)線網(wǎng)絡(luò),他的拓樸結(jié)構(gòu)變得復(fù)雜了很多,多了無(wú)線基站,核心網(wǎng)絡(luò)等。所以這個(gè)時(shí)候會(huì)出現(xiàn)很多問(wèn)題,比如用戶說(shuō)網(wǎng)絡(luò)太卡了,頁(yè)面打不開(kāi),然后又有各種植入廣告。然后 DNS 信息的話,各種運(yùn)營(yíng)商的 DNS 又不靠譜,他們 TTL 甚至一個(gè)月之后才生效。還有用戶可能被調(diào)度錯(cuò)誤,武漢用戶可能被調(diào)度到北京的機(jī)房去。

          針對(duì)這些問(wèn)題,我們提供了一些 HTTPDNS 的網(wǎng)關(guān)方案。當(dāng)然還有一些小的像客戶端的一些復(fù)合連接等。然后 DNS 主要是起到一個(gè)防劫持,另外一個(gè)是做容災(zāi)的作用。特別是后臺(tái)出了問(wèn)題,我們可以及時(shí)的做一些更新調(diào)度,由于離用戶側(cè)比較近,所以調(diào)度會(huì)比較及時(shí)。

          還有就是提供了一個(gè)網(wǎng)關(guān)方案,是一個(gè)自定義的 Protobuf 協(xié)議,好處有 4 點(diǎn):

          • 沒(méi)有 SSL 消耗,像 iOS 必須使用 HTTPS,有網(wǎng)關(guān)自定協(xié)議的話,可以繞開(kāi)限制;

          • 劫持成本比較高,因?yàn)槭亲远x的協(xié)議;

          • 提供一個(gè)比較穩(wěn)定的長(zhǎng)連接系統(tǒng);

          • 節(jié)省建連時(shí)間,因?yàn)槭且粋€(gè)穩(wěn)定的長(zhǎng)連,所以 TCP 的三次握手基本上不需要,可以作為一個(gè)域名的收斂方案。

          大家所有的網(wǎng)絡(luò)連接,從原來(lái)的連接各種各樣的業(yè)務(wù)后臺(tái),到現(xiàn)在直接連一個(gè)通用網(wǎng)關(guān)代理,幫你做域名轉(zhuǎn)發(fā)的事情。



          到此文章就結(jié)束了。如果今天的文章對(duì)你在進(jìn)階架構(gòu)師的路上有新的啟發(fā)和進(jìn)步,歡迎轉(zhuǎn)發(fā)給更多人。歡迎加入架構(gòu)師社區(qū)技術(shù)交流群,眾多大咖帶你進(jìn)階架構(gòu)師,在后臺(tái)回復(fù)“加群”即可入群。



          這些年小編給你分享過(guò)的干貨


          1.優(yōu)質(zhì)SpringBoot物流管理項(xiàng)目(附源碼)

          2.優(yōu)質(zhì)ERP系統(tǒng)帶進(jìn)銷存財(cái)務(wù)生產(chǎn)功能(附源碼)

          3.優(yōu)質(zhì)SpringBoot帶工作流管理項(xiàng)目(附源碼)

          4.最好用的OA系統(tǒng),拿來(lái)即用(附源碼)

          5.SBoot+Vue外賣系統(tǒng)前后端都有(附源碼

          6.SBoot+Vue可視化大屏拖拽項(xiàng)目(附源碼)



          轉(zhuǎn)發(fā)在看就是最大的支持??

          瀏覽 130
          點(diǎn)贊
          評(píng)論
          收藏
          分享

          手機(jī)掃一掃分享

          分享
          舉報(bào)
          評(píng)論
          圖片
          表情
          推薦
          點(diǎn)贊
          評(píng)論
          收藏
          分享

          手機(jī)掃一掃分享

          分享
          舉報(bào)
          <kbd id="afajh"><form id="afajh"></form></kbd>
          <strong id="afajh"><dl id="afajh"></dl></strong>
            <del id="afajh"><form id="afajh"></form></del>
                1. <th id="afajh"><progress id="afajh"></progress></th>
                  <b id="afajh"><abbr id="afajh"></abbr></b>
                  <th id="afajh"><progress id="afajh"></progress></th>
                  成人精品操BB视频 | 久久无码成人电影 | 国产亚洲精品成人a v久久网站 | www…黄色在线免费观看 x8x8拨牐拨牐精品视频 | 天天av免费 |