腾讯会议如何做到8天扩容100万核?
關注騰訊開發者,一起用技術改變世界
本文為騰訊會議背后技術系列第一篇
疫情期間,騰訊會議作為一款非常便捷的遠程協作工具,成為國內眾多企業日常會議溝通交流的主要平臺。殊不知,這款產品從 2019 年 12 月 26 日才正式推出。如何在這么短的時間內,有效撐起國內數以億計的用戶訪問量,保證系統的穩定運行?本文來自騰訊云的技術人員,為你解析 8 天時間內完成 100 萬核資源的擴容背后的技術,希望對大家有所借鑒。
如果需要交付 100 萬核的計算資源,需要做什么?準備資源,然后按用戶需求進行交付。如果在前面加一個定語“快速”呢?可以加班加點完成。但是如果要實現 8 天內完成 100 萬核的資源交付,換算下來,每天需要交付 12.5 萬核,這就有點苛刻。在云計算的歷史上,從未出現過類似的案例。
那么,騰訊會議是如何做到的呢?
解決思路
首先,分析如此短的時間內,交付這些資源需要做哪些事情,會遇到哪些問題。
實際上,借助于當前成熟的虛擬化技術,可以基于已經制作好的鏡像系統文件,快速地部署一套用于提供服務的生產環境,所以,只需要準備好足夠的計算資源就能夠實現服務的無限擴容,而這個過程大概需要以下四步。
1. 準備資源,投放物理機:作為云計算服務提供商,首先資源是第一位的,所以第一步要準備用于提供服務的物理機。這 100 萬核心的資源,相當于約 12000 臺物理機。以防資源不足的問題,需要快速將這些物理機全部上架,同時,保證每臺物理機經過驗證,并且部署了正確版本的后臺組件。
2. 資源注冊與分配:有了物理機資源,下一步就需要把初始化好的物理機資源投放到現網環境中,確保每一臺物理機資源都在 CVM 后臺服務中注冊。騰訊云操作系統 VStation 需要維護數十萬級的物理機資源,這無疑對資源調度能力提出了極大的挑戰。這一步需要快速將所有計算資源找到對應的物理機承載。
3. 資源創建與交付:當后臺調度系統選擇好承載計算能力的物理機之后,下一步是到物理機上創建虛擬機資源。這一步看似簡單但需要做的事情卻不少,如生成用戶控制數據,與存儲、網絡系統交互,生成對應的虛擬機配置,啟動虛擬機。
4. 虛擬機初始化:虛擬機成功創建之后,就已經可以交付使用了。不過可能還需要進行配置,如拉取配置、加入服務集群、啟動服務等。
完整歷程解密
圖 1 是騰訊云操作系統 VStation 架構圖,騰訊云操作系統 VStation,承擔資源調度、請求排隊的任務,已經對大批量、高并發的創建請求進行了充分優化。具體來說:
-
API 部分接入用戶請求,管理用戶角色、CVM 機型、用戶配額等;
-
云操作系統 VStation,承擔資源調度、請求排隊,目前虛擬機每分鐘吞吐可達到 5000 臺;
-
Host 組件上安裝用于生產和配置 CVM 實例的各種輔助組件。
圖1:VStation 云操作系統
下面從資源準備、注冊與分配、創建與交付、虛擬機初始化四大部分詳細介紹下其中的具體過程。
1. 準備資源,投放物理機
騰訊云基于定制化騰訊 TLinux、自研的虛擬化 hypervisor 系統,可以實現批量自動部署、自動投放,并且在投放到現網之前進行自動驗證,保證軟硬件不存在隱患。騰訊云 Host 組件管控系統,方便管理騰訊云 hypervisor 上的各種代理組件,易于發布,方便運維。
圖2:Host 初始化過程
-
安裝系統:運維平臺從資產管理平臺 CMDB 拉取對應 Host 相關機型信息,尋找與該機型對應的 TLinux 操作系統控制 BMC 配置從 pxe 啟動,從 pxe 服務器拉取系統鏡像安裝系統。
-
系統初始化:安裝完系統后需要配置各種系統參數,調優。
-
部署 Host 使用的組件:每種不同機型的 CVM 使用的 Host 會使用不同的后臺 Agent,以及相關配置。通過 Host 組件管控系統 Host 使用的插件進行統一管理,下發。
-
導入集群:已經初始化好的 Host,需要導入到 VStation 集群才能售賣和生產 CVM。
圖3:Host 組件管控系統
Host 組件管控系統用于下發 Host 組件、灰度版本、控制、支持并發下載、灰度發布,同時上報 Host 上各個組件的信息、組件健康管理、自動拉起組件、異常告警等。
2. 資源注冊與分配
作為整個系統的核心,騰訊云操作系統 VStation 需要管理 10 萬級的物理機資源,近千萬級的核數,所以需要實現快速和穩定的調度系統。VStation 服務類似 Google Borg/Omega 使用的分布式調度架構,對計算資源進行調度。
圖4:VStation 調度系統
其中,水平擴展調度器支持橫向擴容,每個調度器擁有幾乎全部的集群信息,方便掌握全局資源;采取增量同步、定時更新、局部緩存的方式,盡可能多地掌握全局視圖,并且維持集群狀態信息的準確性。
調度決策方面,將可能過濾掉更多物理機的基礎條件放在調度器的靠前位置,過濾掉無法滿足基本條件的物理機列表,減少調度過程中物理機集合在不同調度器之間的傳遞;同時,根據多個維度,如物理機資源使用率、剩余資源等,對滿足裝箱條件的物理機進行排序,盡可能優先使用優質 Host 資源,合理調配。此外,避免多個調度器在并發時選中相近的物理機,對經過排序后的物理機進行隨機調整,減少大并發時造成的沖突。
3. 資源創建與交付
解決資源調度問題后,需要在選中的物理機上創建虛擬機資源,其中有一些耗時的硬性階段無法解決,VStation 對此結合資源創建過程的的特點,做出了令人滿意的優化,把單臺虛擬機創建時間基本控制在3-5 秒。
前面提到,資源創建需要與諸如用戶控制數據、網絡服務、存儲服務、鏡像服務、密鑰、安全組服務等進行交互,完成用戶與所創建的虛擬機資源之間的映射。VStation 平臺設計之初就考慮到高并發,批量創建的場景,對周邊系統的交互實現了并行化通信。同時,為支持高并發,提高服務的吞吐量,每種與其他服務交互的工作進程通過高可用消息隊列通信,都是無狀態和可擴容的。真正實現了高可用、高并發、自動容災。圖 5 是 VStation 內部系統的核心架構。
圖5:VStation 后臺架構
VStation 通過高可用的消息隊列,控制數據與周邊系統交互的工作進程間通信,同時對創建過程中的關鍵任務按照依賴關系實現并行化,最大限度的壓縮創建總耗時。針對高并發請求,為減少對系統自身的影響,系統具備以下特性:
1
控制信息載荷自動壓縮
控制消息攜帶了 CVM 實例的各種控制信息:計算、存儲、網絡以及各種元數據信息。隨著系統功能增加,控制層面數據也有所增長,控制信息載荷增大。使用壓縮算法在投遞消息前進行壓縮并在接受消息后解壓縮,能夠大大降低消息占用消息總線,提高消息吞吐率。目前 VStation 使用開源 LZ4 - Extremely fast compression 壓縮和解壓縮算法,壓縮速率可達到 780 MB/s,解壓縮速率在 4970 MB/s,壓縮率在 2 倍左右。
2
負載平衡
分布式系統中會使用多個實例以增加系統請求響應吞吐率,控制模塊負載平衡可以保證請求均勻地被各個 worker 處理。負載平衡需要后臺處理請求的 worker 均勻分配到不同處理實例上,降低等待隊伍長度,并發執行任務。同時需要將虛擬機實例盡量均勻地分配在不同 Host。
將并發請求盡可能均勻地分在不同物理機,有利于加快辦法創建速度。生產虛擬機較為耗時的任務有創建虛擬機磁盤、下載虛擬機鏡像、申請網卡、配置網絡等。如果多臺虛擬機串行地在同一臺物理機上創建,必然是系統瓶頸,創建耗時延長。VStation Scheduler 在裝箱時,每個 Scheduler 實例有近乎全局的資源視圖,對同一批次的創建任務,可以在虛擬機并發裝箱時保證虛擬機盡量不落在同一臺物理機。
3
流控系統
當請求數超過系統承載能力時,如果不加控制,會對周邊系統造成危害,導致系統過載,內部組件異常(如 DB 慢查詢、不響應、消息隊列丟消息),破壞性較大,嚴重時會造成服務不響應,甚至用戶數據不一致。VStation 增加排隊機制,降級服務,而不是返回系統內部錯誤,以提升用戶體驗。流控系統由以下幾個方面組成:
-
關鍵請求頻次控制:在 API 請求頻次上對用戶做限制,防止惡意用戶頻發請求系統,如惡意購買,刷單等。
-
用戶配額限制:限制用戶隨意申請資源,尤其是按量資源,限制配額。
-
后臺請求排隊與流速控制:任何系統都有能承載的處理容量,當 VStation 正在處理的請求超過一定閾值時,對新加入的請求不做拒絕處理,而是放入等待隊列中待正在處理的任務完成后繼續執行。
圖6:VStation 流控系統
4
任務編排優化
一個完整的創建任務涉及到的各種子任務較多,單純串行執行雖然邏輯清楚且維護簡單,但不利于充分發揮系統能力,高并發創建場景中耗時較長。通過分析虛擬機實例創建過程中的各種依賴關系,將不耦合的任務并行執行,把簡單的單項圖轉換成有向無環圖(DAG),進一步提升任務的并行度。
圖7:創建流程任務優化
調整后,單臺 CVM 實例創建任務可以控制在 5 秒以內。
4. 虛擬機初始化
提到云主機的初始化,CVM 支持使用云原生的 cloud-init 服務,支持云計算主機鏡像初始化協議,用戶通過傳入自定義的腳本程序,實現云主機創建后自動執行預定義配置。同時,騰訊云提供實例 metadata 服務。用戶在自定義腳本程序中可以訪問實例 metadata 服務獲取與實例有關的信息,如 IP 地址、實例名稱等,來實現每個實例的特殊化配置。
圖8:CVM 元數據
CVM 實例相關元數據信息包括鏡像、用戶數據、vendor 數據、元數據幾部分組成。其中鏡像信息和用戶數據信息可以讓用戶自行配置,vendor 數據和實例元數據(如 IP 信息、地域信息等)可以通過內網訪問騰訊云元數據服務獲取,從而實現快速自動化配置 CVM 實例。
總結
8 天內完成為騰訊會議擴容 100 萬核的任務,在此一役,騰訊云 CVM 后臺服務有效地支持了高并發請求,通過優化調度算法、優化內部架構、降低創建耗時,完美經受住了此次考驗。未來,將更有信心迎接其它更艱巨的挑戰。
總結
以上是生活随笔為你收集整理的腾讯会议如何做到8天扩容100万核?的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 潘石屹拟彻底清仓:卖完办公楼,公司也不想
- 下一篇: 余承东:华为自研的麒麟A1芯片已经应用在