虛擬節(jié)點(diǎn)輕松應(yīng)對(duì)LOL S11百萬并發(fā)流量——騰競體育的彈性容器實(shí)踐

來源: 騰訊云原生
作者:劉如夢 詹雪嬌
時(shí)間:2021-12-08
15034
自2019年,騰競整個(gè)電競賽事數(shù)據(jù)服務(wù)完全由騰訊云TKE容器服務(wù)承載。騰競賽事數(shù)據(jù)開放平臺(tái)目前主要提供職業(yè)賽事數(shù)據(jù)的授權(quán)與查詢,隨著斗魚、虎牙、企鵝、掌盟、微信直播、微博等平臺(tái)的相繼接入,平臺(tái)整體流量有了爆發(fā)式的增長。

業(yè)務(wù)介紹

自2019年,騰競整個(gè)電競賽事數(shù)據(jù)服務(wù)完全由騰訊云TKE容器服務(wù)承載。騰競賽事數(shù)據(jù)開放平臺(tái)目前主要提供職業(yè)賽事數(shù)據(jù)的授權(quán)與查詢,隨著斗魚、虎牙、企鵝、掌盟、微信直播、微博等平臺(tái)的相繼接入,平臺(tái)整體流量有了爆發(fā)式的增長。

此前2021英雄聯(lián)盟全球總決賽(以下簡稱S11)期間更是創(chuàng)下了平臺(tái)流量新高,達(dá)到了百萬級(jí)QPS、百億級(jí)調(diào)用量。面對(duì)電競賽事此類周期性強(qiáng)、并發(fā)高的業(yè)務(wù)場景,有效快速的自動(dòng)擴(kuò)縮容、提升資源利用率,是滿足業(yè)務(wù)高速發(fā)展、合理控制成本的關(guān)鍵所在。

這里將介紹LOL S11賽事期間,騰競賽事數(shù)據(jù)開放平臺(tái)如何通過虛擬節(jié)點(diǎn)彈性調(diào)度+VPC-CNI架構(gòu),輕松應(yīng)對(duì)爆發(fā)的百萬流量。

業(yè)務(wù)特性

電競賽事具備明顯的業(yè)務(wù)特性,其對(duì)服務(wù)的自動(dòng)伸縮能力有非常高的要求。

·周期性

電競賽事具有明顯的周期性,比賽時(shí)段是流量高峰期,其余時(shí)間流量驟減,流量相差數(shù)百倍,需要通過彈性擴(kuò)縮能力,減少波谷時(shí)的冗余資源,降低成本。

·高并發(fā)

比賽期間,服務(wù)需要承載百萬級(jí)QPS,需要快速的擴(kuò)容時(shí)間、及庫存充足的資源池。

·突增快

比賽開始時(shí),玩家開始大量涌入直播間,需要保證服務(wù)穩(wěn)定性,避免突增流量過大引發(fā)集群雪崩。

架構(gòu)介紹

整體架構(gòu)

集群采用Istio作為服務(wù)網(wǎng)格框架進(jìn)行微服務(wù)治理,流量經(jīng)由多條CLB(解決單條CLB帶寬上限)進(jìn)入Istio Ingress(直連Pod)后進(jìn)行流量分發(fā),依托于Istio的Sidecar模式,能夠?qū)Ω鞣?wù)之間進(jìn)行非常精細(xì)化的流量管理,例如:灰度、限流、熔斷等等。

1638945638(1).png

普通節(jié)點(diǎn)+虛擬節(jié)點(diǎn)

開啟VPC-CNI采用直連Pod模式后,集群不再受NodePort網(wǎng)絡(luò)轉(zhuǎn)發(fā)能力的限制,少量常規(guī)節(jié)點(diǎn)應(yīng)對(duì)業(yè)務(wù)日常低負(fù)載場景,利用虛擬節(jié)點(diǎn)彈性擴(kuò)縮容能力應(yīng)對(duì)賽事期間業(yè)務(wù)超高負(fù)載場景。

1638945683(1).png

DevOps

基于Docker的CI/CD服務(wù),支持多環(huán)境(云端、本地)、多集群編排服務(wù),滿足業(yè)務(wù)的不同部署需求。

1638945729(1).png

彈性擴(kuò)容方案演變

基于上述的業(yè)務(wù)特性,針對(duì)彈性擴(kuò)容的方案,經(jīng)歷了【手動(dòng)擴(kuò)容=>節(jié)點(diǎn)池=>虛擬節(jié)點(diǎn)】的一系列演變歷程,目前的彈性擴(kuò)容方案可以完美滿足業(yè)務(wù)需求。

業(yè)務(wù)初期:手動(dòng)擴(kuò)容

業(yè)務(wù)初期,負(fù)載較低,根據(jù)業(yè)務(wù)特征,手動(dòng)擴(kuò)縮容基本可以滿足需求。

由于手動(dòng)擴(kuò)縮容需要一定的時(shí)間窗口,因此需要放置一定數(shù)量的冗余資源應(yīng)對(duì)突增流量,資源利用率較低,只有6%左右。

業(yè)務(wù)發(fā)展中:節(jié)點(diǎn)池

隨著業(yè)務(wù)發(fā)展,周期性的高低峰流量特征愈發(fā)明顯,面對(duì)高頻的擴(kuò)縮容需求時(shí),手動(dòng)擴(kuò)縮容不僅人力成本較高,而且無法避免人為失誤。

在突增流量速度較慢的場景下,節(jié)點(diǎn)池可以較好滿足業(yè)務(wù)需求,不過需配置服務(wù)器,擴(kuò)容速度較慢,冗余資源仍存在,資源利用率較低。另外,縮容時(shí)對(duì)節(jié)點(diǎn)進(jìn)行封鎖、驅(qū)逐等操作,不利于服務(wù)的穩(wěn)定性。

業(yè)務(wù)高速發(fā)展:虛擬節(jié)點(diǎn),秒級(jí)擴(kuò)容,節(jié)省30%成本

業(yè)務(wù)高速發(fā)展階段,高低峰流量相差懸殊、并發(fā)逐漸增高、突增流量時(shí)間達(dá)到秒級(jí),節(jié)點(diǎn)池的擴(kuò)容速度不足以滿足業(yè)務(wù)需求,還有購置服務(wù)器時(shí)庫存不足的風(fēng)險(xiǎn)。

虛擬節(jié)點(diǎn)是TKE提供的一種彈性調(diào)度能力,提供了近乎無限資源的擴(kuò)容能力,可以直接將Pod調(diào)度至彈性容器服務(wù)EKS維護(hù)的云上資源中,無需擴(kuò)容節(jié)點(diǎn)。相比節(jié)點(diǎn)池,虛擬節(jié)點(diǎn)的擴(kuò)容、縮容流程簡化了購買、初始化、退還服務(wù)器的流程,大大提升了彈性的速度,盡可能降低在擴(kuò)容流程中可能出現(xiàn)的失敗,使得彈性更快、更高效、更節(jié)省成本。

在彈性效率層面,虛擬節(jié)點(diǎn)可在數(shù)十秒內(nèi)啟動(dòng)數(shù)以百計(jì)的Pod,能夠很好的應(yīng)對(duì)S11這類高爆發(fā)業(yè)務(wù)場景。在成本層面,避免了普通節(jié)點(diǎn)由于無法完美分配Pod申請(qǐng)的資源而產(chǎn)生的buffer資源,節(jié)省了資源成本。

在此基礎(chǔ)上,我們結(jié)合業(yè)務(wù)側(cè)數(shù)據(jù),采取自動(dòng)化資源預(yù)熱的方式應(yīng)對(duì)高頻的突增流量場景;運(yùn)營類業(yè)務(wù)場景則需要和運(yùn)營部門緊密結(jié)合做好手動(dòng)擴(kuò)容的準(zhǔn)備。

網(wǎng)絡(luò)轉(zhuǎn)發(fā)方案優(yōu)化

存在的問題

集群提供公網(wǎng)訪問入口時(shí),默認(rèn)情況下外部流量經(jīng)由集群節(jié)點(diǎn)NodePort轉(zhuǎn)發(fā)至集群內(nèi)部,當(dāng)虛擬節(jié)點(diǎn)中部署的Pod數(shù)量較少,集群整體負(fù)載較低時(shí),該模式不會(huì)有網(wǎng)絡(luò)轉(zhuǎn)發(fā)性能瓶頸。不過隨著部署在虛擬節(jié)點(diǎn)中的Pod數(shù)量增大,集群整體負(fù)載升高,就需要添加更多的節(jié)點(diǎn)用于網(wǎng)絡(luò)轉(zhuǎn)發(fā),這與自動(dòng)伸縮、快速擴(kuò)容、降低成本的目標(biāo)背道而馳。

1638945774(1).png

優(yōu)化方案

開啟VPC-CNI后采用直連Pod模式,容器與節(jié)點(diǎn)分布在同一網(wǎng)絡(luò)平面,每個(gè)Pod分配有固定IP,網(wǎng)絡(luò)直接由CLB轉(zhuǎn)入Istio Ingress,不再經(jīng)由NodePort轉(zhuǎn)發(fā),提高了網(wǎng)絡(luò)轉(zhuǎn)發(fā)效率,集群也不在需要網(wǎng)絡(luò)轉(zhuǎn)發(fā)節(jié)點(diǎn),大大提高了集群的擴(kuò)容能力。該模式下,集群擴(kuò)容上限受到集群所分配網(wǎng)段可用IP數(shù)的限制,因此需要提前做好規(guī)劃,避免集群擴(kuò)容受限。

1638945809(1).png

最終效果

通過虛擬節(jié)點(diǎn)和VPC-CNI模式下直連Pod的結(jié)合,目前集群整體承載能力有了很大的提升,在成本控制方面也有了長足的進(jìn)步。

秒級(jí)擴(kuò)縮容

通過虛擬節(jié)點(diǎn)+K8s HPA能力,集群可在數(shù)十秒內(nèi)啟動(dòng)數(shù)以百計(jì)的承載百萬級(jí)流量的Pod,可以輕松應(yīng)對(duì)快速擴(kuò)縮容需求。再結(jié)合業(yè)務(wù)側(cè)數(shù)據(jù),自動(dòng)化進(jìn)行資源預(yù)熱,提升集群抗突增流量能力。縮容時(shí)也不再需要對(duì)節(jié)點(diǎn)進(jìn)行封鎖、驅(qū)逐等操作,提高了服務(wù)的穩(wěn)定性。

百萬承載

VPC-CNI直連Pod解決了NodePort流量轉(zhuǎn)發(fā)瓶頸的問題,加上虛擬節(jié)點(diǎn)近乎無限資源的擴(kuò)容能力大大提高了集群水平擴(kuò)容的上限,像騰競賽事數(shù)據(jù)開放平臺(tái)這樣大量讀的場景能輕松擴(kuò)容至百萬乃至千萬級(jí)QPS。

降低成本

虛擬節(jié)點(diǎn)的高效擴(kuò)縮容,配合K8s的HPA自動(dòng)伸縮機(jī)制,減少了資源的準(zhǔn)備和閑置時(shí)間,避免普通節(jié)點(diǎn)中的碎片化資源問題,有效的提高了資源利用率,最終為業(yè)務(wù)節(jié)省了30%的成本。

參考文檔

容器服務(wù)TKE:

【https://cloud.tencent.com/document/product/457/6759】

虛擬節(jié)點(diǎn)概述:

【https://cloud.tencent.com/document/product/457/53027】

彈性集群:

【https://cloud.tencent.com/document/product/457/39804】

VPC-CNI模式介紹:

【https://cloud.tencent.com/document/product/457/50355】

立即登錄,閱讀全文
版權(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)刪除!
優(yōu)質(zhì)服務(wù)商推薦
更多
掃碼登錄
打開掃一掃, 關(guān)注公眾號(hào)后即可登錄/注冊
加載中
二維碼已失效 請(qǐng)重試
刷新
賬號(hào)登錄/注冊
小程序
快出海小程序
公眾號(hào)
快出海公眾號(hào)
商務(wù)合作
商務(wù)合作
投稿采訪
投稿采訪
出海管家
出海管家