騰訊會(huì)議如何做到8天擴(kuò)容100萬核?

來源:知乎
作者:騰訊開發(fā)者
時(shí)間:2020-07-21
2733
本文來自騰訊云的技術(shù)人員,為你解析8天時(shí)間內(nèi)完成100萬核資源的擴(kuò)容背后的技術(shù),希望對(duì)大家有所借鑒。

疫情期間,騰訊會(huì)議作為一款非常便捷的遠(yuǎn)程協(xié)作工具,成為國內(nèi)眾多企業(yè)日常會(huì)議溝通交流的主要平臺(tái)。殊不知,這款產(chǎn)品從2019年12月26日才正式推出。如何在這么短的時(shí)間內(nèi),有效撐起國內(nèi)數(shù)以億計(jì)的用戶訪問量,保證系統(tǒng)的穩(wěn)定運(yùn)行?本文來自騰訊云的技術(shù)人員,為你解析8天時(shí)間內(nèi)完成100萬核資源的擴(kuò)容背后的技術(shù),希望對(duì)大家有所借鑒。

如果需要交付100萬核的計(jì)算資源,需要做什么?準(zhǔn)備資源,然后按用戶需求進(jìn)行交付。如果在前面加一個(gè)定語“快速”呢?可以加班加點(diǎn)完成。但是如果要實(shí)現(xiàn)8天內(nèi)完成100萬核的資源交付,換算下來,每天需要交付12.5萬核,這就有點(diǎn)苛刻。在云計(jì)算的歷史上,從未出現(xiàn)過類似的案例。

那么,騰訊會(huì)議是如何做到的呢?

解決思路

首先,分析如此短的時(shí)間內(nèi),交付這些資源需要做哪些事情,會(huì)遇到哪些問題。

實(shí)際上,借助于當(dāng)前成熟的虛擬化技術(shù),可以基于已經(jīng)制作好的鏡像系統(tǒng)文件,快速地部署一套用于提供服務(wù)的生產(chǎn)環(huán)境,所以,只需要準(zhǔn)備好足夠的計(jì)算資源就能夠?qū)崿F(xiàn)服務(wù)的無限擴(kuò)容,而這個(gè)過程大概需要以下四步。

1.準(zhǔn)備資源,投放物理機(jī):作為云計(jì)算服務(wù)提供商,首先資源是第一位的,所以第一步要準(zhǔn)備用于提供服務(wù)的物理機(jī)。這100萬核心的資源,相當(dāng)于約12000臺(tái)物理機(jī)。以防資源不足的問題,需要快速將這些物理機(jī)全部上架,同時(shí),保證每臺(tái)物理機(jī)經(jīng)過驗(yàn)證,并且部署了正確版本的后臺(tái)組件。

2.資源注冊(cè)與分配:有了物理機(jī)資源,下一步就需要把初始化好的物理機(jī)資源投放到現(xiàn)網(wǎng)環(huán)境中,確保每一臺(tái)物理機(jī)資源都在CVM后臺(tái)服務(wù)中注冊(cè)。騰訊云操作系統(tǒng)VStation需要維護(hù)數(shù)十萬級(jí)的物理機(jī)資源,這無疑對(duì)資源調(diào)度能力提出了極大的挑戰(zhàn)。這一步需要快速將所有計(jì)算資源找到對(duì)應(yīng)的物理機(jī)承載。

3.資源創(chuàng)建與交付:當(dāng)后臺(tái)調(diào)度系統(tǒng)選擇好承載計(jì)算能力的物理機(jī)之后,下一步是到物理機(jī)上創(chuàng)建虛擬機(jī)資源。這一步看似簡單但需要做的事情卻不少,如生成用戶控制數(shù)據(jù),與存儲(chǔ)、網(wǎng)絡(luò)系統(tǒng)交互,生成對(duì)應(yīng)的虛擬機(jī)配置,啟動(dòng)虛擬機(jī)。

4.虛擬機(jī)初始化:虛擬機(jī)成功創(chuàng)建之后,就已經(jīng)可以交付使用了。不過可能還需要進(jìn)行配置,如拉取配置、加入服務(wù)集群、啟動(dòng)服務(wù)等。

完整歷程解密

圖1是騰訊云操作系統(tǒng)VStation架構(gòu)圖,騰訊云操作系統(tǒng)VStation,承擔(dān)資源調(diào)度、請(qǐng)求排隊(duì)的任務(wù),已經(jīng)對(duì)大批量、高并發(fā)的創(chuàng)建請(qǐng)求進(jìn)行了充分優(yōu)化。具體來說:

·API部分接入用戶請(qǐng)求,管理用戶角色、CVM機(jī)型、用戶配額等;

·云操作系統(tǒng)VStation,承擔(dān)資源調(diào)度、請(qǐng)求排隊(duì),目前虛擬機(jī)每分鐘吞吐可達(dá)到5000臺(tái);

·Host組件上安裝用于生產(chǎn)和配置CVM實(shí)例的各種輔助組件。

v2-39be87bb5339fcefa014b9e9a614ddaa_720w.jpg

圖1:VStation云操作系統(tǒng)

下面從資源準(zhǔn)備、注冊(cè)與分配、創(chuàng)建與交付、虛擬機(jī)初始化四大部分詳細(xì)介紹下其中的具體過程。

1.準(zhǔn)備資源,投放物理機(jī)

騰訊云基于定制化騰訊TLinux、自研的虛擬化hypervisor系統(tǒng),可以實(shí)現(xiàn)批量自動(dòng)部署、自動(dòng)投放,并且在投放到現(xiàn)網(wǎng)之前進(jìn)行自動(dòng)驗(yàn)證,保證軟硬件不存在隱患。騰訊云Host組件管控系統(tǒng),方便管理騰訊云hypervisor上的各種代理組件,易于發(fā)布,方便運(yùn)維。

v2-bf7fa6290ea8fbd6efe4d761abd53814_720w.jpg

圖2:Host初始化過程

·安裝系統(tǒng):運(yùn)維平臺(tái)從資產(chǎn)管理平臺(tái)CMDB拉取對(duì)應(yīng)Host相關(guān)機(jī)型信息,尋找與該機(jī)型對(duì)應(yīng)的TLinux操作系統(tǒng)控制BMC配置從pxe啟動(dòng),從pxe服務(wù)器拉取系統(tǒng)鏡像安裝系統(tǒng)。

·系統(tǒng)初始化:安裝完系統(tǒng)后需要配置各種系統(tǒng)參數(shù),調(diào)優(yōu)。

·部署Host使用的組件:每種不同機(jī)型的CVM使用的Host會(huì)使用不同的后臺(tái)Agent,以及相關(guān)配置。通過Host組件管控系統(tǒng)Host使用的插件進(jìn)行統(tǒng)一管理,下發(fā)。

·導(dǎo)入集群:已經(jīng)初始化好的Host,需要導(dǎo)入到VStation集群才能售賣和生產(chǎn)CVM。

v2-2b7b4e80bf1fc786dcf1f8e6db3334c8_720w.jpg

圖3:Host組件管控系統(tǒng)

Host組件管控系統(tǒng)用于下發(fā)Host組件、灰度版本、控制、支持并發(fā)下載、灰度發(fā)布,同時(shí)上報(bào)Host上各個(gè)組件的信息、組件健康管理、自動(dòng)拉起組件、異常告警等。

2.資源注冊(cè)與分配

作為整個(gè)系統(tǒng)的核心,騰訊云操作系統(tǒng)VStation需要管理10萬級(jí)的物理機(jī)資源,近千萬級(jí)的核數(shù),所以需要實(shí)現(xiàn)快速和穩(wěn)定的調(diào)度系統(tǒng)。VStation服務(wù)類似Google Borg/Omega使用的分布式調(diào)度架構(gòu),對(duì)計(jì)算資源進(jìn)行調(diào)度。

v2-ea735ce6bf3bf5ee780fd9aa20da52d2_720w.jpg

圖4:VStation調(diào)度系統(tǒng)

其中,水平擴(kuò)展調(diào)度器支持橫向擴(kuò)容,每個(gè)調(diào)度器擁有幾乎全部的集群信息,方便掌握全局資源;采取增量同步、定時(shí)更新、局部緩存的方式,盡可能多地掌握全局視圖,并且維持集群狀態(tài)信息的準(zhǔn)確性。

調(diào)度決策方面,將可能過濾掉更多物理機(jī)的基礎(chǔ)條件放在調(diào)度器的靠前位置,過濾掉無法滿足基本條件的物理機(jī)列表,減少調(diào)度過程中物理機(jī)集合在不同調(diào)度器之間的傳遞;同時(shí),根據(jù)多個(gè)維度,如物理機(jī)資源使用率、剩余資源等,對(duì)滿足裝箱條件的物理機(jī)進(jìn)行排序,盡可能優(yōu)先使用優(yōu)質(zhì)Host資源,合理調(diào)配。此外,避免多個(gè)調(diào)度器在并發(fā)時(shí)選中相近的物理機(jī),對(duì)經(jīng)過排序后的物理機(jī)進(jìn)行隨機(jī)調(diào)整,減少大并發(fā)時(shí)造成的沖突。

3.資源創(chuàng)建與交付

解決資源調(diào)度問題后,需要在選中的物理機(jī)上創(chuàng)建虛擬機(jī)資源,其中有一些耗時(shí)的硬性階段無法解決,VStation對(duì)此結(jié)合資源創(chuàng)建過程的的特點(diǎn),做出了令人滿意的優(yōu)化,把單臺(tái)虛擬機(jī)創(chuàng)建時(shí)間基本控制在3-5秒。

前面提到,資源創(chuàng)建需要與諸如用戶控制數(shù)據(jù)、網(wǎng)絡(luò)服務(wù)、存儲(chǔ)服務(wù)、鏡像服務(wù)、密鑰、安全組服務(wù)等進(jìn)行交互,完成用戶與所創(chuàng)建的虛擬機(jī)資源之間的映射。VStation平臺(tái)設(shè)計(jì)之初就考慮到高并發(fā),批量創(chuàng)建的場(chǎng)景,對(duì)周邊系統(tǒng)的交互實(shí)現(xiàn)了并行化通信。同時(shí),為支持高并發(fā),提高服務(wù)的吞吐量,每種與其他服務(wù)交互的工作進(jìn)程通過高可用消息隊(duì)列通信,都是無狀態(tài)和可擴(kuò)容的。真正實(shí)現(xiàn)了高可用、高并發(fā)、自動(dòng)容災(zāi)。圖5是VStation內(nèi)部系統(tǒng)的核心架構(gòu)。

v2-8ee2e470af54d855ef87ae10079ee09e_720w.jpg

圖5:VStation后臺(tái)架構(gòu)

VStation通過高可用的消息隊(duì)列,控制數(shù)據(jù)與周邊系統(tǒng)交互的工作進(jìn)程間通信,同時(shí)對(duì)創(chuàng)建過程中的關(guān)鍵任務(wù)按照依賴關(guān)系實(shí)現(xiàn)并行化,最大限度的壓縮創(chuàng)建總耗時(shí)。針對(duì)高并發(fā)請(qǐng)求,為減少對(duì)系統(tǒng)自身的影響,系統(tǒng)具備以下特性:

1 控制信息載荷自動(dòng)壓縮

控制消息攜帶了CVM實(shí)例的各種控制信息:計(jì)算、存儲(chǔ)、網(wǎng)絡(luò)以及各種元數(shù)據(jù)信息。隨著系統(tǒng)功能增加,控制層面數(shù)據(jù)也有所增長,控制信息載荷增大。使用壓縮算法在投遞消息前進(jìn)行壓縮并在接受消息后解壓縮,能夠大大降低消息占用消息總線,提高消息吞吐率。目前VStation使用開源LZ4-Extremely fast compression壓縮和解壓縮算法,壓縮速率可達(dá)到780 MB/s,解壓縮速率在4970 MB/s,壓縮率在2倍左右。

2 負(fù)載平衡

分布式系統(tǒng)中會(huì)使用多個(gè)實(shí)例以增加系統(tǒng)請(qǐng)求響應(yīng)吞吐率,控制模塊負(fù)載平衡可以保證請(qǐng)求均勻地被各個(gè)worker處理。負(fù)載平衡需要后臺(tái)處理請(qǐng)求的worker均勻分配到不同處理實(shí)例上,降低等待隊(duì)伍長度,并發(fā)執(zhí)行任務(wù)。同時(shí)需要將虛擬機(jī)實(shí)例盡量均勻地分配在不同Host。

將并發(fā)請(qǐng)求盡可能均勻地分在不同物理機(jī),有利于加快辦法創(chuàng)建速度。生產(chǎn)虛擬機(jī)較為耗時(shí)的任務(wù)有創(chuàng)建虛擬機(jī)磁盤、下載虛擬機(jī)鏡像、申請(qǐng)網(wǎng)卡、配置網(wǎng)絡(luò)等。如果多臺(tái)虛擬機(jī)串行地在同一臺(tái)物理機(jī)上創(chuàng)建,必然是系統(tǒng)瓶頸,創(chuàng)建耗時(shí)延長。VStation Scheduler在裝箱時(shí),每個(gè)Scheduler實(shí)例有近乎全局的資源視圖,對(duì)同一批次的創(chuàng)建任務(wù),可以在虛擬機(jī)并發(fā)裝箱時(shí)保證虛擬機(jī)盡量不落在同一臺(tái)物理機(jī)。

3 流控系統(tǒng)

當(dāng)請(qǐng)求數(shù)超過系統(tǒng)承載能力時(shí),如果不加控制,會(huì)對(duì)周邊系統(tǒng)造成危害,導(dǎo)致系統(tǒng)過載,內(nèi)部組件異常(如DB慢查詢、不響應(yīng)、消息隊(duì)列丟消息),破壞性較大,嚴(yán)重時(shí)會(huì)造成服務(wù)不響應(yīng),甚至用戶數(shù)據(jù)不一致。VStation增加排隊(duì)機(jī)制,降級(jí)服務(wù),而不是返回系統(tǒng)內(nèi)部錯(cuò)誤,以提升用戶體驗(yàn)。流控系統(tǒng)由以下幾個(gè)方面組成:

·關(guān)鍵請(qǐng)求頻次控制:在API請(qǐng)求頻次上對(duì)用戶做限制,防止惡意用戶頻發(fā)請(qǐng)求系統(tǒng),如惡意購買,刷單等。

·用戶配額限制:限制用戶隨意申請(qǐng)資源,尤其是按量資源,限制配額。

·后臺(tái)請(qǐng)求排隊(duì)與流速控制:任何系統(tǒng)都有能承載的處理容量,當(dāng)VStation正在處理的請(qǐng)求超過一定閾值時(shí),對(duì)新加入的請(qǐng)求不做拒絕處理,而是放入等待隊(duì)列中待正在處理的任務(wù)完成后繼續(xù)執(zhí)行。

v2-07e55c89e55a80e66654f246a2996ad7_720w.jpg

圖6:VStation流控系統(tǒng)

4 任務(wù)編排優(yōu)化

一個(gè)完整的創(chuàng)建任務(wù)涉及到的各種子任務(wù)較多,單純串行執(zhí)行雖然邏輯清楚且維護(hù)簡單,但不利于充分發(fā)揮系統(tǒng)能力,高并發(fā)創(chuàng)建場(chǎng)景中耗時(shí)較長。通過分析虛擬機(jī)實(shí)例創(chuàng)建過程中的各種依賴關(guān)系,將不耦合的任務(wù)并行執(zhí)行,把簡單的單項(xiàng)圖轉(zhuǎn)換成有向無環(huán)圖(DAG),進(jìn)一步提升任務(wù)的并行度。

v2-bf6c5f1bbd796aa057b0f84ec952a547_720w.jpg

圖7:創(chuàng)建流程任務(wù)優(yōu)化

調(diào)整后,單臺(tái)CVM實(shí)例創(chuàng)建任務(wù)可以控制在5秒以內(nèi)。

4.虛擬機(jī)初始化

提到云主機(jī)的初始化,CVM支持使用云原生的cloud-init服務(wù),支持云計(jì)算主機(jī)鏡像初始化協(xié)議,用戶通過傳入自定義的腳本程序,實(shí)現(xiàn)云主機(jī)創(chuàng)建后自動(dòng)執(zhí)行預(yù)定義配置。同時(shí),騰訊云提供實(shí)例metadata服務(wù)。用戶在自定義腳本程序中可以訪問實(shí)例metadata服務(wù)獲取與實(shí)例有關(guān)的信息,如IP地址、實(shí)例名稱等,來實(shí)現(xiàn)每個(gè)實(shí)例的特殊化配置。

v2-d81a7e59c6ee0c72bb309cd2febfc3e6_720w (1).jpg

圖8:CVM元數(shù)據(jù)

CVM實(shí)例相關(guān)元數(shù)據(jù)信息包括鏡像、用戶數(shù)據(jù)、vendor數(shù)據(jù)、元數(shù)據(jù)幾部分組成。其中鏡像信息和用戶數(shù)據(jù)信息可以讓用戶自行配置,vendor數(shù)據(jù)和實(shí)例元數(shù)據(jù)(如IP信息、地域信息等)可以通過內(nèi)網(wǎng)訪問騰訊云元數(shù)據(jù)服務(wù)獲取,從而實(shí)現(xiàn)快速自動(dòng)化配置CVM實(shí)例。

總結(jié)

8天內(nèi)完成為騰訊會(huì)議擴(kuò)容100萬核的任務(wù),在此一役,騰訊云CVM后臺(tái)服務(wù)有效地支持了高并發(fā)請(qǐng)求,通過優(yōu)化調(diào)度算法、優(yōu)化內(nèi)部架構(gòu)、降低創(chuàng)建耗時(shí),完美經(jīng)受住了此次考驗(yàn)。未來,將更有信心迎接其它更艱巨的挑戰(zhàn)。

原文鏈接:點(diǎn)擊前往 >
版權(quán)說明:本文內(nèi)容來自于知乎,本站不擁有所有權(quán),不承擔(dān)相關(guān)法律責(zé)任。文章內(nèi)容系作者個(gè)人觀點(diǎn),不代表快出海對(duì)觀點(diǎn)贊同或支持。如有侵權(quán),請(qǐng)聯(lián)系管理員(zzx@kchuhai.com)刪除!
個(gè)人VIP
小程序
快出海小程序
公眾號(hào)
快出海公眾號(hào)
商務(wù)合作
商務(wù)合作
投稿采訪
投稿采訪
出海管家
出海管家