0
  • 聊天消息
  • 系統(tǒng)消息
  • 評(píng)論與回復(fù)
登錄后你可以
  • 下載海量資料
  • 學(xué)習(xí)在線課程
  • 觀看技術(shù)視頻
  • 寫文章/發(fā)帖/加入社區(qū)
會(huì)員中心
創(chuàng)作中心

完善資料讓更多小伙伴認(rèn)識(shí)你,還能領(lǐng)取20積分哦,立即完善>

3天內(nèi)不再提示

華為在云視頻Cloud Native實(shí)踐過程中的經(jīng)驗(yàn)

LiveVideoStack ? 來源:LiveVideoStack ? 作者:段亮 ? 2021-01-13 14:18 ? 次閱讀

隨著云基礎(chǔ)設(shè)施服務(wù)以及邊緣計(jì)算技術(shù)的發(fā)展,Cloud Native,即云原生,架構(gòu)理念和研發(fā)也越來越普及。從傳統(tǒng)軟件架構(gòu),到云原生軟件架構(gòu)的轉(zhuǎn)變,還需要經(jīng)歷一段時(shí)間才能逐漸走向成熟。今天的分享,我們邀請(qǐng)到了華為云直播的段亮老師,從經(jīng)驗(yàn)和教訓(xùn)的角度,詳細(xì)介紹華為云視頻在Cloud Native的轉(zhuǎn)型實(shí)踐中遇到的問題、挑戰(zhàn)以及解決之道。

大家好,很高興能有機(jī)會(huì)和大家去分享華為在云視頻Cloud Native(云原生)實(shí)踐過程中的一些經(jīng)驗(yàn)。

我的分享主要分為三個(gè)部分:前兩個(gè)部分和大家一起回顧關(guān)于Cloud Native本身具有哪些的特征以及架構(gòu);第三部分是我重點(diǎn)想和大家分享的,即我們的云視頻業(yè)務(wù)在探索和實(shí)踐Cloud Native的過程當(dāng)中具體是怎么做的,以及遇到了哪些問題,希望本次分享能夠?qū)ο胍蛘哒谑褂迷圃男』锇閹韼椭?1 Cloud Native的前世今生 1.1 業(yè)界對(duì)Cloud Native的描述

0a962f12-521b-11eb-8b86-12bb97331649.png

我們先來回顧一下,在2010年,Paul(Paul Fremantle)提出了云原生的概念,起初只提出了關(guān)于彈性、分布式、多租戶等基本特征;隨著實(shí)踐和發(fā)展,Adrian(Adrian Cockcroft,2013)和Matt(Matt Stine,2015)相繼對(duì)關(guān)鍵特征進(jìn)行完善,逐漸提出了反脆弱性、DevOps、持續(xù)交付等更新的認(rèn)識(shí)。這就是Cloud Native最初的發(fā)展。

0ad3bbde-521b-11eb-8b86-12bb97331649.png

從團(tuán)隊(duì)來看,CNCF提出了Cloud Native的特征和目標(biāo),Gartner也同樣做出了重要的規(guī)范。 1.2對(duì)云原生的定義和要求

0b16f624-521b-11eb-8b86-12bb97331649.png

華為公司早在2016、17年,就開始通過內(nèi)部發(fā)文的方式,統(tǒng)一云原生定義并規(guī)范語(yǔ)言,便于各部分和業(yè)務(wù)之間對(duì)齊語(yǔ)言,包括(微)服務(wù)化、彈性伸縮、分布式等,同時(shí)對(duì)這些關(guān)鍵特征的定義和范圍,也都做了非常詳細(xì)的規(guī)范。 1.3Cloud Native定義及關(guān)鍵特征

0b4dd554-521b-11eb-8b86-12bb97331649.png

整個(gè)云原生,我們認(rèn)為應(yīng)該分成三大部分?;诳低?,組織決定其所成就的業(yè)務(wù)。對(duì)實(shí)踐云原生而言,組織的變化最能使我們感同身受,尤其是對(duì)每一個(gè)人的能力要求發(fā)生了非常明顯的變化。例如,對(duì)研發(fā)人員不再像以前傳統(tǒng)模式下的要求,即實(shí)現(xiàn)需求就可以;現(xiàn)在,從前端需求討論,到需求分析,再到開發(fā)、參與測(cè)試、參與灰度的過程,最后到上線以及在線上運(yùn)行的情況,包括監(jiān)控、告警等,都需要端到端的關(guān)注。所以,對(duì)研發(fā)團(tuán)隊(duì)人員技能的要求提高了。 今天,我重點(diǎn)和大家分享的是關(guān)于云原生的架構(gòu)和工程方面。各個(gè)公司根據(jù)不同的業(yè)務(wù),都會(huì)涉及到這兩個(gè)方面,所以更有參考價(jià)值。架構(gòu)方面的核心是微服務(wù)架構(gòu),其后還有彈性伸縮和分布式等特征;工程能力有DevOps、持續(xù)交付、灰度上線等。最終的目標(biāo)是讓云應(yīng)用能夠快速高效地部署和規(guī)模化,以及實(shí)現(xiàn)整個(gè)服務(wù)的高可用性。這是云原生的整體概略,下面我將圍繞架構(gòu)和工程兩個(gè)方面和大家展開分享。 2 Cloud Native的基本特征和架構(gòu) 2.1微服務(wù)架構(gòu)的定義及優(yōu)勢(shì)

0b75ade0-521b-11eb-8b86-12bb97331649.png

云原生的架構(gòu),最核心的部分是微服務(wù)架構(gòu)。微服務(wù)的首要特征是高內(nèi)聚、功能單一,最好的狀態(tài)是一個(gè)微服務(wù)只做一件事情,并且各微服務(wù)之間通過進(jìn)程隔離、獨(dú)立代碼庫(kù)等,使得每個(gè)微服務(wù)都可以單獨(dú)測(cè)試、部署和升級(jí)。這樣,單個(gè)微服務(wù)規(guī)模較小,可以做到靈活使用且易于管理。實(shí)現(xiàn)微服務(wù)化后,整個(gè)云原生的交付和小團(tuán)隊(duì)溝通都能快速進(jìn)行,因?yàn)槲⒎?wù)之間使用API(應(yīng)用程序編程接口通信,沒有了開發(fā)語(yǔ)言的限制,小團(tuán)隊(duì)溝通會(huì)更簡(jiǎn)單、順暢。任何一個(gè)功能點(diǎn)或微服務(wù)出現(xiàn)問題,其故障影響范圍只存在于本服務(wù)器內(nèi)部,這樣可以提升微服務(wù)整體的高可用性,且每個(gè)微服務(wù)都能單獨(dú)演化。 2.2傳統(tǒng)軟件架構(gòu)與微服務(wù)架構(gòu)對(duì)比

0cacfdd0-521b-11eb-8b86-12bb97331649.png

既然微服務(wù)如此重要,我們就來進(jìn)一步對(duì)比微服務(wù)架構(gòu)和傳統(tǒng)架構(gòu)。傳統(tǒng)單體架構(gòu)的軟件是按模塊劃分的,一個(gè)復(fù)雜的系統(tǒng)可能會(huì)劃分幾十個(gè)甚至更多的模塊,每個(gè)模塊完成一定的功能,模塊之間可能是內(nèi)部代碼級(jí)的接口調(diào)用或本地API調(diào)用。可以看出,在架構(gòu)簡(jiǎn)單或系統(tǒng)功能單一的情況下,單體軟件在初始階段效率可能更高,因?yàn)檎麄€(gè)系統(tǒng)使用一套代碼,在部署和靜態(tài)檢查時(shí)更容易管理,且內(nèi)存是共享的,可以調(diào)用,時(shí)延更低,這是它的好處。如果云原生下的所有功能點(diǎn)全部通過微服務(wù)化的API調(diào)用,調(diào)用之間就會(huì)造成時(shí)延。 那么微服務(wù)架構(gòu)有什么好處呢?進(jìn)程隔離,代碼之間徹底解耦,即各微服務(wù)可以單獨(dú)演化和發(fā)展。對(duì)比傳統(tǒng)的單體架構(gòu),其在設(shè)計(jì)上肯定想要解耦使模塊功能獨(dú)立,但在架構(gòu)演進(jìn)的過程中,開發(fā)人員難免把控不力,導(dǎo)致耦合越來越不清晰,同時(shí)每個(gè)模塊的變動(dòng)都會(huì)涉及到其他模塊的升級(jí)變更,甚至影響到技術(shù)棧發(fā)展。一個(gè)模塊的重構(gòu)會(huì)對(duì)另一個(gè)模塊產(chǎn)生影響,導(dǎo)致整個(gè)系統(tǒng)的演進(jìn)變得異常困難。但是,在服務(wù)化架構(gòu)下,以上問題都能迎刃而解。每個(gè)服務(wù)之間通過API協(xié)作完成,更加靈活高效。隨著系統(tǒng)規(guī)模的擴(kuò)大,效率也不會(huì)降低,可用性和開發(fā)效率等方面也能得到保證。 2.3充分利用云基礎(chǔ)設(shè)施及平臺(tái)服務(wù)

0ce22424-521b-11eb-8b86-12bb97331649.png

在充分使用云基礎(chǔ)設(shè)施及平臺(tái)服務(wù)方面,我們的架構(gòu)師和設(shè)計(jì)人員的思路也發(fā)生了較大變化。云原生軟件構(gòu)建在整個(gè)云的基礎(chǔ)上,云包括計(jì)算資源、網(wǎng)絡(luò)資源、存儲(chǔ)資源、消息隊(duì)列等,優(yōu)先使用云服務(wù)上已有的資源,而這些資源通過編排的方式調(diào)用,便于實(shí)現(xiàn)整個(gè)系統(tǒng)的可用性。也就是說,每個(gè)服務(wù)、每個(gè)應(yīng)用,僅需關(guān)注自己需要實(shí)現(xiàn)的部分,而不是實(shí)現(xiàn)每一個(gè)功能。在單體架構(gòu)下,較常規(guī)的情況是:需要某一特性,就找到一個(gè)開源的代碼、軟件或模塊拿來使用,這種方式是不可取的。在云原生下,通過調(diào)用其他服務(wù)來實(shí)現(xiàn)會(huì)更聚焦和高效。 2.4彈性伸縮

0d3521c4-521b-11eb-8b86-12bb97331649.png

彈性伸縮也是云原生的精髓,主要需要解決兩個(gè)問題:一是“伸”,二是“縮”。對(duì)于視頻業(yè)務(wù)而言,其規(guī)模往往是不可控制的。若主播在直播時(shí)產(chǎn)生一個(gè)爆點(diǎn),大量用戶涌入,導(dǎo)致業(yè)務(wù)量陡增。這時(shí),我們的服務(wù)需要能夠自動(dòng)拓展資源,如果等到業(yè)務(wù)人員接收到高負(fù)荷提醒后,再主動(dòng)升級(jí)變更擴(kuò)展資源,可能會(huì)來不及。以上是彈性伸縮中“伸”的部分,而“縮”的必要性主要基于成本。我們知道,視頻每天都會(huì)有一個(gè)高峰期,比如,教育類的視頻服務(wù)會(huì)在早上上課的時(shí)間達(dá)到高峰期,而游戲類的直播視頻在晚上8點(diǎn)到10點(diǎn)是高峰期。高峰期相對(duì)于低峰期,其業(yè)務(wù)規(guī)模相差十倍甚至百倍以上,若資源不會(huì)自動(dòng)開放,在空閑期間就會(huì)造成資源浪費(fèi)?!翱s”就可把資源釋放出來,提供給其他服務(wù)使用。 2.5 分布式

0d6023ec-521b-11eb-8b86-12bb97331649.png

分布式是云原生的一個(gè)核心理念,主要用于提高可用性。分布式分為三個(gè)部分:其一,應(yīng)用分布式,分布在多AZ(可用區(qū))和多Region(區(qū)域)上。如果出現(xiàn)一個(gè)故障,不至于影響到其他方面。例如,一個(gè)城市的電力系統(tǒng)故障,或者某條光纖被挖斷了,也不至于影響到整體服務(wù)的可用性。其二,數(shù)據(jù)分布式。各城市之間,重要的數(shù)據(jù)需要做到跨Region和跨AZ的同步部署和存儲(chǔ)。其三,跨可用區(qū)的部署以及整體的調(diào)度。用我們今天的分享舉例,整個(gè)媒體處理分布在各個(gè)不同的Region上,假設(shè)某個(gè)城市的光纖出了問題,也不會(huì)影響整個(gè)直播的過程和質(zhì)量。這就是分布式帶來的好處。 2.6高可用

0db091f6-521b-11eb-8b86-12bb97331649.png

在云原生下,可用性和傳統(tǒng)模式有著本質(zhì)的區(qū)別,在設(shè)計(jì)思路上就全然不同,云原生是基于不可靠、可拋棄的資源設(shè)計(jì)反脆弱性的系統(tǒng)。舉例說明:在沙漠上建一座牢固的大樓,應(yīng)該怎么建?我們不能因?yàn)樯车夭环€(wěn)固,在其上建造出的樓也不穩(wěn)定。云原生的系統(tǒng)設(shè)計(jì),并沒有假設(shè)系統(tǒng)下的資源是穩(wěn)定的,實(shí)際上所有資源都可能出故障。那么,系統(tǒng)的反脆弱性具體應(yīng)該怎么設(shè)計(jì)?這才是我們?cè)圃O(shè)計(jì)的精髓之一。 2.7認(rèn)可失敗的設(shè)計(jì)

0de95b3a-521b-11eb-8b86-12bb97331649.png

在傳統(tǒng)方式上,我們總是在安全、可用等方面下大功夫,希望把系統(tǒng)中的bug和故障全部清除掉,不留任何隱患,這種思路是沒有錯(cuò)的。但是,隨著云上系統(tǒng)規(guī)模越來越大,云服務(wù)越來越多,想要清除所有的bug幾乎是不可能完成的任務(wù)。在設(shè)計(jì)上,我們應(yīng)該承認(rèn)失效是時(shí)常發(fā)生的。同時(shí),需要考慮的是,如何在系統(tǒng)或者某個(gè)功能失效的前提下,業(yè)務(wù)還能正常運(yùn)行。如,在某一微服務(wù)出現(xiàn)故障之后,如何快速發(fā)現(xiàn)并自我隔離,從而消除其對(duì)整個(gè)系統(tǒng)的影響;甚至,在整個(gè)可用區(qū)和核心服務(wù)出現(xiàn)故障時(shí),怎樣對(duì)服務(wù)進(jìn)行降級(jí),而不是任由整個(gè)服務(wù)癱瘓。比如,系統(tǒng)中有10個(gè)業(yè)務(wù),現(xiàn)在出現(xiàn)一個(gè)故障,導(dǎo)致3個(gè)業(yè)務(wù)不可用,那么另外7個(gè)業(yè)務(wù)是否能繼續(xù)服務(wù)?這是在云原生下設(shè)計(jì)系統(tǒng)的一個(gè)核心理念。 2.8自動(dòng)化運(yùn)維——基于數(shù)據(jù)分析的全方位故障監(jiān)控

0e2de8b8-521b-11eb-8b86-12bb97331649.png

目前,云原生下的微服務(wù)數(shù)量較多,大部分情況下,如果系統(tǒng)規(guī)模中等,微服務(wù)數(shù)量是幾十上百甚至更多,若采用人工運(yùn)維的方式幾乎是不可能的。每個(gè)微服務(wù)的運(yùn)行狀態(tài)都是非常復(fù)雜的,且各微服務(wù)之間也會(huì)產(chǎn)生各種復(fù)雜的關(guān)系。若僅從最上層的客戶黃金指標(biāo)來判斷系統(tǒng)的運(yùn)行狀況,那最終出現(xiàn)問題時(shí),事態(tài)可能已經(jīng)很嚴(yán)重了。所以從開發(fā)、部署、升級(jí)、問題定位等各方面來看,自動(dòng)化運(yùn)維都是云原生下非常重要的一環(huán)。 2.9灰度發(fā)布

0e5d4ad6-521b-11eb-8b86-12bb97331649.png

灰度發(fā)布也是整個(gè)云原生核心的一部分。我們的系統(tǒng)一直處于開發(fā)當(dāng)中,如果沒有灰度發(fā)布,如何變更一直在開發(fā)中的系統(tǒng)?打個(gè)比方,一架飛機(jī)在高空飛行,不能等飛機(jī)落地之后再更換發(fā)動(dòng)機(jī)。同理,如果我是一名客戶,想讓系統(tǒng)停下再去變更,也是不可能執(zhí)行的。那么,如何在變更的同時(shí)保證所有的業(yè)務(wù)可用,并且保證系統(tǒng)能夠穩(wěn)步向前發(fā)展,這其中有著非常大的挑戰(zhàn)。灰度發(fā)布是目前應(yīng)用較廣泛的方式,其他還有滾動(dòng)發(fā)布、藍(lán)綠發(fā)布等方式,其中藍(lán)綠發(fā)布會(huì)造成資源浪費(fèi)。灰度發(fā)布是目前常用的一種方式,通過灰度升級(jí),逐漸擴(kuò)大灰度范圍,從而保證整個(gè)服務(wù)的可用性,中途若出現(xiàn)問題則快速回滾。 3 華為云視頻Cloud Native實(shí)踐 下面和大家分享我們的云視頻業(yè)務(wù)在實(shí)踐云原生的過程中的一些經(jīng)驗(yàn)和教訓(xùn)。 3.1Cloud Native架構(gòu)能力

0e881c8e-521b-11eb-8b86-12bb97331649.png

華為云不但統(tǒng)一了云原生的定義和語(yǔ)言,同時(shí)還對(duì)多個(gè)云原生項(xiàng)目進(jìn)行了總結(jié),包括內(nèi)部的架構(gòu)設(shè)計(jì)指南,即云原生的架構(gòu)具體應(yīng)該如何設(shè)計(jì),其中還包括一些優(yōu)秀案例。對(duì)于不同的場(chǎng)景和模式,我們構(gòu)建了架構(gòu)模式庫(kù),在設(shè)計(jì)過程中,可以直接參考模式庫(kù),方便高效、高質(zhì)地完成架構(gòu)設(shè)計(jì)。對(duì)整個(gè)云原生,我們也進(jìn)行了全面、規(guī)范的體系建設(shè),各服務(wù)間的Console、風(fēng)格,包括如何鑒權(quán)、AKI網(wǎng)關(guān)如何對(duì)接、接口風(fēng)格等,都有統(tǒng)一的規(guī)范。最后一點(diǎn)很關(guān)鍵,針對(duì)各業(yè)務(wù)的云原生研發(fā)成熟度,在工具中設(shè)立云原生架構(gòu)評(píng)價(jià)標(biāo)準(zhǔn),提供數(shù)值打分。這樣,包括云視頻在內(nèi)的每一個(gè)業(yè)務(wù),都可以衡量其當(dāng)前狀態(tài)與理想狀態(tài)之間的差距,并且知曉待改進(jìn)的方面在哪里。

云原生是一系列云上經(jīng)驗(yàn)的總結(jié),在實(shí)施過程中,沒有把所有經(jīng)驗(yàn)全都實(shí)踐一遍的必要,只需引用業(yè)務(wù)所需的實(shí)踐即可。重要的是經(jīng)驗(yàn)的價(jià)值。 3.2架構(gòu)-微服務(wù)架構(gòu) 我們對(duì)微服務(wù)架構(gòu)也做了總結(jié),從服務(wù)發(fā)現(xiàn)、服務(wù)注冊(cè)、到服務(wù)劃分和部署等,各模式都有統(tǒng)一的要求。包括可用性、自動(dòng)化運(yùn)維等等,在這里就不詳細(xì)展開了。 我們對(duì)比一下左右兩張圖。左圖是業(yè)務(wù)剛剛構(gòu)建之初的微服務(wù)架構(gòu),當(dāng)時(shí)對(duì)云原生的了解并未深入,業(yè)務(wù)邏輯相對(duì)比較簡(jiǎn)單。大概一年之后,我們發(fā)現(xiàn)以前的業(yè)務(wù)架構(gòu)出現(xiàn)了問題。第一,開發(fā)效率越來越低,由于一個(gè)服務(wù)的開發(fā)經(jīng)常會(huì)涉及到其他服務(wù),并且需要頻繁變更,導(dǎo)致一個(gè)需求需要很長(zhǎng)時(shí)間的開發(fā)才能上線,客戶響應(yīng)時(shí)間明顯變低;第二,測(cè)試越來越困難,架構(gòu)出現(xiàn)腐化,代碼出現(xiàn)壞味道。基于多種方式判斷,我們認(rèn)為需要重構(gòu)架構(gòu)。

現(xiàn)在看向右圖,將之前的VodManager微服務(wù)拆分為4、5個(gè)服務(wù),每一個(gè)服務(wù)的功能邏輯都是相對(duì)獨(dú)立的,一個(gè)需求的開發(fā)只會(huì)落到一、兩個(gè)服務(wù)里,測(cè)試變得簡(jiǎn)單,開發(fā)也更加高效。我認(rèn)為,微服務(wù)劃分是動(dòng)態(tài)的,沒有一個(gè)理想的架構(gòu)和劃分方法,只有一些指導(dǎo)的原則,這些原則就是我們之前所講到的,這里就不贅述了。需要根據(jù)任務(wù)場(chǎng)景、以及系統(tǒng)業(yè)務(wù)復(fù)雜度、用戶數(shù)量和具體要求等方面統(tǒng)一看待,有問題就進(jìn)行重構(gòu),沒有問題就盡可能簡(jiǎn)單化。這是我們?cè)谖⒎?wù)架構(gòu)重構(gòu)方面的一些實(shí)踐。 再?gòu)?qiáng)調(diào)一點(diǎn),這里的微服務(wù)架構(gòu)并不能一次性變更到位,而是一個(gè)逐漸演進(jìn)的過程??赡鼙局懿鸱殖鲆粋€(gè)微服務(wù),下周又拆分出一個(gè)微服務(wù);并不能提前限定時(shí)間進(jìn)行拆分,然后一次性上線。我認(rèn)為原因主要是基于質(zhì)量上的考慮,如果突然重構(gòu)全部架構(gòu),可能會(huì)涉及幾十甚至更多代碼同時(shí)上線,質(zhì)量是很難保證的。每次變更一個(gè)微服務(wù),就會(huì)有一個(gè)灰度過程,從而保護(hù)客戶服務(wù)的可用性。目前,整個(gè)云視頻業(yè)務(wù),我們的服務(wù)個(gè)數(shù)大概有2百個(gè),人均一個(gè)或一個(gè)多一點(diǎn)的規(guī)模,都有對(duì)外API接口,接口數(shù)量約2千個(gè)。并不是說越多越好,以上內(nèi)容僅給大家做一個(gè)參考。 3.3RTC用戶接入微服務(wù)容器化實(shí)踐

0f15482a-521b-11eb-8b86-12bb97331649.png

我們認(rèn)為在云服務(wù)上必須要做容器化,因?yàn)楦魑⒎?wù)之間是相互獨(dú)立的,而且應(yīng)該設(shè)計(jì)為無(wú)狀態(tài),隨時(shí)可以被銷毀。上圖是我們實(shí)時(shí)性視頻的一個(gè)微服務(wù),目前已經(jīng)商用了,其中一個(gè)案例可以和大家分享一下。所有微服務(wù)全部容器化,因?yàn)槿魏我粋€(gè)實(shí)例都可以被銷毀,如果出現(xiàn)變更或是業(yè)務(wù)量上升,隨意拉起一個(gè)微服務(wù),其他微服務(wù)仍能正常工作。在這里重述一點(diǎn),進(jìn)行對(duì)外服務(wù)的微服務(wù),我們建議首先通過域名調(diào)度,不要通過IP,因?yàn)榭赡軙?huì)有多Region的情況。大家都明白,如果一個(gè)Region出了問題,域名還能解析到另一個(gè)Region上去。對(duì)于對(duì)外呈現(xiàn)解析的IP,首先它應(yīng)該是一個(gè)EIP,且需要有主備,不能是單一的IP。因?yàn)镋IP可以對(duì)應(yīng)后面多個(gè)IP地址,可以保證任何一個(gè)IP或者主機(jī)出了問題,都不會(huì)都整體服務(wù)產(chǎn)生影響。這是對(duì)對(duì)外服務(wù)微服務(wù)的一個(gè)考慮。 另外,所有微服務(wù)之間都不能直接調(diào)用,都應(yīng)該通過服務(wù)網(wǎng)格的方式調(diào)用。目前華為云上比較成熟的是CSE,該方式經(jīng)過了大規(guī)模的考驗(yàn)。比較新的方式有Istio,這兩年逐漸開始使用,服務(wù)線數(shù)量增加較快。我們的整個(gè)云視頻板塊Docker(容器)的數(shù)量最高峰的時(shí)候達(dá)到了好幾千個(gè)。 3.4使用容器化的收益

0f61c934-521b-11eb-8b86-12bb97331649.png

這里通過我們自己遇到的一些情況,特別講解一下容器化的好處。最開始我們并沒有采用容器化的方式,后來發(fā)現(xiàn)通過容器化,資源利用率明顯下降,因?yàn)閺椥陨炜s做的比較容易;另一點(diǎn)是快速啟停,我們現(xiàn)在用容器基本可以達(dá)到秒級(jí)重啟,如果需要就可以秒級(jí)彈出、秒級(jí)部署,而且各個(gè)服務(wù)之間的遷移、依賴關(guān)系、解耦、服務(wù)打包等各方面操作都很迅速。我們現(xiàn)在代碼的升級(jí)、變更、流水線等等都是和容器化綁定的。以上是我們關(guān)于容器化的實(shí)踐。 3.5實(shí)時(shí)轉(zhuǎn)碼服務(wù)的彈性伸縮實(shí)踐

0f94a6c4-521b-11eb-8b86-12bb97331649.png

剛剛也提到,彈性伸縮在云原生里是很重要的一部分,因?yàn)樗袑?shí)影響到可用性和成本。視頻中的彈性伸縮主要考慮什么問題呢?首先,"彈",我認(rèn)為是沒有問題的,上面的配置圖隱去了數(shù)據(jù)。使用起來很簡(jiǎn)單,根據(jù)事件驅(qū)動(dòng),如內(nèi)存、網(wǎng)絡(luò)、業(yè)務(wù)量等,當(dāng)達(dá)到某一特定值時(shí),相應(yīng)地彈出多少個(gè)實(shí)例,彈出速度非??欤究蛇_(dá)到秒級(jí)彈出。所以,“彈”的方面是沒有問題的。但是,對(duì)于視頻業(yè)務(wù)而言,“縮”也非常重要。那么,“縮”具體會(huì)遇到什么問題呢?視頻包括直播、會(huì)議、RTC等業(yè)務(wù),對(duì)實(shí)時(shí)性的要求非常高。比如,在某一個(gè)實(shí)例上,有1000個(gè)用戶同時(shí)在觀看,其中有800個(gè)已經(jīng)下線,只有200個(gè)占用了一個(gè)實(shí)例,此時(shí)應(yīng)該怎么辦呢?我們的做法有兩種,一種方式是,在新業(yè)務(wù)的調(diào)度上,基于部分指定的容器優(yōu)先預(yù)調(diào)這些業(yè)務(wù),尤其在業(yè)務(wù)規(guī)模的下降期,根據(jù)業(yè)務(wù)的情況,可能要留出半小時(shí)到一小時(shí)不等的時(shí)間進(jìn)行收縮。對(duì)于實(shí)在很小的業(yè)務(wù),怎樣把直播遷移到另一個(gè)容器當(dāng)中去,而且對(duì)用戶的觀看體驗(yàn)沒有任何影響。這才是彈性伸縮實(shí)踐中,云視頻業(yè)務(wù)做到“縮”的時(shí)候很重要的一點(diǎn)。 左下角的圖展示的是24小時(shí)內(nèi)高峰期和低峰期的資源利用率。本來,高峰期和低峰期的峰值有10倍甚至百倍之差,但CPU資源的利用率還算平穩(wěn),并未出現(xiàn)大起大落。這就是彈性伸縮所需要做到的一個(gè)能力。 3.6云視頻統(tǒng)一OPS平臺(tái)

0fc24156-521b-11eb-8b86-12bb97331649.png

云服務(wù)上沒有OPS,相當(dāng)于人沒有眼睛。操作每一塊業(yè)務(wù),可視化每一項(xiàng)服務(wù),出了問題之后快速定位,OPS都是核心能力。業(yè)務(wù)監(jiān)控、配置、調(diào)用鏈、日志規(guī)模分析等都能在OPS里很好地體現(xiàn)。這一部分與業(yè)務(wù)相關(guān)性較強(qiáng),所以只展示了云視頻能力,包括故障的定位定界、運(yùn)營(yíng)、管理、配置等都是必須的。 3.7云視頻監(jiān)控運(yùn)維系統(tǒng)架構(gòu)

0fe336fe-521b-11eb-8b86-12bb97331649.png

OPS平臺(tái)依賴大量的數(shù)據(jù),尤其是日志的數(shù)據(jù),因?yàn)閱栴}的定位定界、故障,告警等,全部分析都依賴于這些數(shù)據(jù)。在云服務(wù)下,整個(gè)運(yùn)維的架構(gòu)非常重要。對(duì)于云視頻板塊,我向大家展示一下我們的過程,供各位借鑒。 針對(duì)數(shù)據(jù)采集上報(bào),需要考慮本地冗余,不能直接上報(bào),在失敗之后就丟掉。而且考慮成本,并不會(huì)預(yù)留很大的數(shù)據(jù)通道供使用,所以本地需要有緩存能力,以及上報(bào)失敗后重復(fù)上報(bào)的能力。對(duì)于數(shù)據(jù)接入,我們采用Kafka對(duì)數(shù)據(jù)進(jìn)行二次匯聚,因?yàn)樵紨?shù)據(jù)過大,對(duì)其分析、存儲(chǔ)、查詢等規(guī)模上都無(wú)法滿足。目前,每天的日志量可達(dá)數(shù)百T,而且不能長(zhǎng)久存儲(chǔ)。我認(rèn)為,運(yùn)維架構(gòu)可以不斷演進(jìn)。我們的運(yùn)維架構(gòu)起初設(shè)計(jì)出來時(shí),比現(xiàn)在的要簡(jiǎn)單很多,而上圖的架構(gòu)是我們研究至今的情況。大家在構(gòu)建日志系統(tǒng)或運(yùn)維系統(tǒng)時(shí),需要著重考慮以下兩點(diǎn):1、日志上報(bào)實(shí)時(shí)性。日志如同神經(jīng)表現(xiàn),快速獲得日志,就能快速了解系統(tǒng)中存在的問題并解決。實(shí)時(shí)性是一個(gè)挑戰(zhàn),當(dāng)然這也和成本掛鉤。2、日志實(shí)時(shí)數(shù)據(jù)。包括數(shù)據(jù)的匯聚、分析、展示。 3.8工程能力-服務(wù)自治

102e3e6a-521b-11eb-8b86-12bb97331649.png

前面提到在微服務(wù)架構(gòu)下,會(huì)存在很多個(gè)擁有單獨(dú)代碼庫(kù)的微服務(wù),其相對(duì)單體軟件而言更加獨(dú)立,但隨之而來的問題是——管理。每一個(gè)微服務(wù)都需要人工部署,而且頻度很高,幾乎不可能實(shí)現(xiàn)。所以工程能力的工具化、自動(dòng)化,且能夠?qū)崿F(xiàn)服務(wù)自治是云原生中非常重要的一部分,需要在最初時(shí)就開始構(gòu)建。從開發(fā)人員寫完代碼到上線,需要經(jīng)歷哪些步驟?從第一幅圖中可以看到,包括開發(fā)代碼、靜態(tài)檢查、合規(guī)掃描、Alpha測(cè)試、Gamma測(cè)試、自動(dòng)部署、灰度發(fā)布、在線測(cè)試等。雖然,開發(fā)一個(gè)功能可能只需要30-50行代碼,但一套流程全靠人工幾乎是不可能完成的。但是,在工具化之后,只需在本地開放代碼并測(cè)試后一鍵提交,整個(gè)過程只在部署環(huán)節(jié)需要人工確認(rèn),其他步驟可以全部通過工具化自動(dòng)完成,從而實(shí)現(xiàn)一人運(yùn)維多個(gè)微服務(wù)。目前,我們的團(tuán)隊(duì)每月大約有500多次變更,一年達(dá)數(shù)千次變更。按照業(yè)務(wù)發(fā)展,并且視頻領(lǐng)域更加活躍,包括RTC等業(yè)務(wù)場(chǎng)景,明年的變更次數(shù)一定會(huì)更多,所以服務(wù)自治非常重要。 3.9功能能力-灰度發(fā)布

108637b4-521b-11eb-8b86-12bb97331649.png

灰度發(fā)布也是云服務(wù)核心的一部分,服務(wù)上線、開發(fā)過程質(zhì)量的基本保障,目前主要使用灰度發(fā)布。灰度方式可基于流量、內(nèi)容、域名、特性等,與開發(fā)特性相關(guān),在腳本里便捷地更改后就實(shí)現(xiàn)快速發(fā)布。每種發(fā)布都有驗(yàn)證,驗(yàn)證可以是自動(dòng)的撥測(cè)用例、人工撥測(cè),還能與客戶共同測(cè)試。 3.10架構(gòu)-分布式&高可用

11119a3e-521b-11eb-8b86-12bb97331649.png

前面所講內(nèi)容,除了提升效率和降低成本之外,最核心的一點(diǎn)是云服務(wù)的可用性。云服務(wù)可用性是對(duì)客戶的服務(wù)承諾,出了問題,不僅是賠款,更嚴(yán)重的是影響品牌信譽(yù)。那么如何做到可用性?總結(jié)如下:基于認(rèn)可失敗的理念設(shè)計(jì),能夠?qū)κ〉臉I(yè)務(wù)進(jìn)行降級(jí);同時(shí)對(duì)于底層資源做到多AZ,這樣一個(gè)城市的機(jī)房出問題時(shí),不會(huì)影響整體服務(wù),多Region相互容災(zāi),最后實(shí)現(xiàn)整體的可用性。但是可用性只能做到盡可能高,不能做到百分之百,整個(gè)過程還需要大家共同探索。上圖展示了一個(gè)比較嚴(yán)重的事件:某個(gè)Region區(qū)底層的所有資源幾乎都不可用了,圖中紅線顯示的是我們的業(yè)務(wù),幾乎沒有受到任何影響。在保證業(yè)務(wù)不受影響的前提下提高服務(wù)可用性,應(yīng)該是我們共同的愿望。

原文標(biāo)題:華為云視頻Cloud Native架構(gòu)設(shè)計(jì)與工程實(shí)踐

文章出處:【微信公眾號(hào):LiveVideoStack】歡迎添加關(guān)注!文章轉(zhuǎn)載請(qǐng)注明出處。

責(zé)任編輯:haq

聲明:本文內(nèi)容及配圖由入駐作者撰寫或者入駐合作網(wǎng)站授權(quán)轉(zhuǎn)載。文章觀點(diǎn)僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場(chǎng)。文章及其配圖僅供工程師學(xué)習(xí)之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問題,請(qǐng)聯(lián)系本站處理。 舉報(bào)投訴
  • 華為
    +關(guān)注

    關(guān)注

    215

    文章

    34258

    瀏覽量

    250981
  • 云服務(wù)
    +關(guān)注

    關(guān)注

    0

    文章

    803

    瀏覽量

    38850
  • 邊緣計(jì)算
    +關(guān)注

    關(guān)注

    22

    文章

    3042

    瀏覽量

    48472

原文標(biāo)題:華為云視頻Cloud Native架構(gòu)設(shè)計(jì)與工程實(shí)踐

文章出處:【微信號(hào):livevideostack,微信公眾號(hào):LiveVideoStack】歡迎添加關(guān)注!文章轉(zhuǎn)載請(qǐng)注明出處。

收藏 人收藏

    評(píng)論

    相關(guān)推薦

    告別繁瑣的平臺(tái)開發(fā)!IoT_CLOUD之 百度

    ?眾所周知,市面上有很多云平臺(tái),并且每家平臺(tái)都有自己的協(xié)議,工程師要移植不同的SDK代碼或基于各家的手冊(cè)文檔對(duì)接不同的協(xié)議,看著都頭大!??! 為解決繁瑣的平臺(tái)開發(fā)困擾, IoT_CLOUD
    的頭像 發(fā)表于 10-31 07:23 ?101次閱讀
    告別繁瑣的<b class='flag-5'>云</b>平臺(tái)開發(fā)!IoT_<b class='flag-5'>CLOUD</b>之 百度<b class='flag-5'>云</b>

    告別繁瑣的平臺(tái)開發(fā)!IoT_CLOUD之百度

    ?眾所周知,市面上有很多云平臺(tái),阿里、騰訊、移OneNET、華為、百度、涂鴉
    的頭像 發(fā)表于 10-21 07:05 ?590次閱讀
    告別繁瑣的<b class='flag-5'>云</b>平臺(tái)開發(fā)!IoT_<b class='flag-5'>CLOUD</b>之百度<b class='flag-5'>云</b>

    Commvault Cloud平臺(tái)提供Cloud Rewind功能

    混合企業(yè)網(wǎng)絡(luò)彈性和數(shù)據(jù)保護(hù)解決方案領(lǐng)先提供商Commvault(納斯達(dá)克代碼:CVLT)宣布Commvault Cloud平臺(tái)上提供Cloud Rewind功能。這項(xiàng)獨(dú)特的產(chǎn)品集成
    的頭像 發(fā)表于 10-15 09:21 ?301次閱讀

    干貨分享:Air780E怎么連接華為?

    ?眾所周知,市面上有很多云平臺(tái),阿里、騰訊、移OneNET、華為、百度、涂鴉
    的頭像 發(fā)表于 10-15 07:30 ?234次閱讀
    干貨分享:Air780E怎么連接<b class='flag-5'>華為</b><b class='flag-5'>云</b>?

    輕松上怎么操作?IoT_CLOUD之中移OneNET

    連接移OneNET物聯(lián)網(wǎng)平臺(tái)。 一、 IoT_CLOUD簡(jiǎn) 1.1 IoT_CLOUD特色簡(jiǎn)介 IoT_CLOUD——是合宙專門為了合并
    的頭像 發(fā)表于 10-08 07:00 ?264次閱讀
    輕松上<b class='flag-5'>云</b>怎么操作?IoT_<b class='flag-5'>CLOUD</b>之中移OneNET

    LM5145pre-bias啟機(jī)過程中的電壓反灌問題

    電子發(fā)燒友網(wǎng)站提供《LM5145pre-bias啟機(jī)過程中的電壓反灌問題.pdf》資料免費(fèi)下載
    發(fā)表于 09-27 10:19 ?0次下載
    LM5145<b class='flag-5'>在</b>pre-bias啟機(jī)<b class='flag-5'>過程中</b>的電壓反灌問題

    RIGOL產(chǎn)品材料應(yīng)力測(cè)試過程中的應(yīng)用

    、強(qiáng)度、剛度、穩(wěn)定性等,可以精確地控制產(chǎn)品質(zhì)量。本篇解決方案將介紹RIGOL產(chǎn)品材料應(yīng)力測(cè)試過程中的應(yīng)用。
    的頭像 發(fā)表于 07-12 17:01 ?266次閱讀
    RIGOL產(chǎn)品<b class='flag-5'>在</b>材料應(yīng)力測(cè)試<b class='flag-5'>過程中</b>的應(yīng)用

    電容充放電過程中電壓的變化規(guī)律

    電容充放電過程中電壓的變化規(guī)律是一個(gè)非常重要的電子學(xué)課題,涉及到電容器的基本工作原理和特性。在這篇文章,我們將詳細(xì)探討電容充放電過程中電壓的變化規(guī)律,包括電容的基本特性、充電過程、放
    的頭像 發(fā)表于 07-11 09:43 ?3883次閱讀

    個(gè)人機(jī)智開發(fā)實(shí)踐經(jīng)驗(yàn)總結(jié)與技術(shù)分享

    個(gè)人的機(jī)智開發(fā)過程中,主要包括以下幾個(gè)步驟1.項(xiàng)目創(chuàng)建與數(shù)據(jù)點(diǎn)設(shè)置2.機(jī)智平臺(tái)上創(chuàng)建項(xiàng)目并定義所需的數(shù)據(jù)點(diǎn),這些數(shù)據(jù)點(diǎn)將用于設(shè)備和云
    的頭像 發(fā)表于 07-05 08:10 ?282次閱讀
    個(gè)人機(jī)智<b class='flag-5'>云</b>開發(fā)<b class='flag-5'>實(shí)踐</b>:<b class='flag-5'>經(jīng)驗(yàn)</b>總結(jié)與技術(shù)分享

    使用PSoC5LP的過程中,遇到PSoC5LPEFT干擾時(shí)復(fù)位的問題怎么解決?

    我使用 PSoC5LP 的過程中(>8 年),我曾多次驗(yàn)證測(cè)試遇到 PSoC5LP EFT 干擾時(shí)復(fù)位的問題。 大多數(shù)情況下
    發(fā)表于 07-05 07:26

    定華雷達(dá)知識(shí)講堂:雷達(dá)物位計(jì)測(cè)量過程中的干擾有哪些?

    DHE雷達(dá)物位計(jì)各行各業(yè)的測(cè)量系統(tǒng)中使用相當(dāng)頻繁,在其使用過程中會(huì)受到很多因素的影響,可能會(huì)影響測(cè)量精度。西安定華電子的技術(shù)人員就雷達(dá)物位計(jì)的干擾問題,結(jié)合多年的生產(chǎn)、檢測(cè)的實(shí)際經(jīng)驗(yàn),向廣大
    的頭像 發(fā)表于 06-26 16:03 ?329次閱讀

    云原生轉(zhuǎn)型從理念到實(shí)踐的探索與挑戰(zhàn)

    :運(yùn)營(yíng)商從理念到實(shí)踐的探索與挑戰(zhàn)”的主題演講,分享了廣東移動(dòng)與華為公司云原生轉(zhuǎn)型過程中合作探索實(shí)踐及關(guān)鍵成果。
    的頭像 發(fā)表于 04-23 11:45 ?409次閱讀

    還是下:章文嵩博士解讀真正的云原生Kafka十倍降本方案!

    AutoMQ 團(tuán)隊(duì)認(rèn)為這其中最主要的差異在于云原生(Cloud Native)和托管(Cloud Hosted)的差異。以托管的姿勢(shì)上
    的頭像 發(fā)表于 12-08 15:52 ?472次閱讀
    上<b class='flag-5'>云</b>還是下<b class='flag-5'>云</b>:章文嵩博士解讀真正的云原生Kafka十倍降本方案!

    Google Cloud 線上課堂 | Google Cloud 遷移最佳實(shí)踐

    以下文章來源于谷歌服務(wù),作者 Google Cloud 立即預(yù)約 長(zhǎng)按識(shí)別/掃描 右方二維碼 預(yù)約觀看直播 各行各業(yè)的組織都積極將業(yè)務(wù)遷移到云端,但同時(shí)發(fā)現(xiàn),無(wú)論單個(gè)本地應(yīng)用,還是跨多個(gè)
    的頭像 發(fā)表于 11-28 17:45 ?458次閱讀

    知聲再度入選Cloud 100 China榜單

    近日,由靖亞資本和崔牛會(huì)聯(lián)合推出的2023 Cloud 100 China榜單在上海發(fā)布,繼2022年榮登榜單后,知聲再度憑借人工智能賽道強(qiáng)勁的發(fā)展勢(shì)頭挺進(jìn)百?gòu)?qiáng)。?? ? Cloud
    的頭像 發(fā)表于 11-14 09:24 ?722次閱讀
    <b class='flag-5'>云</b>知聲再度入選<b class='flag-5'>Cloud</b> 100 China榜單