自拍偷在线精品自拍偷,亚洲欧美中文日韩v在线观看不卡

億級用戶體量,千萬級日活用戶,《王者榮耀》高并發(fā)背后的故事!

開發(fā) 架構(gòu)
堪稱中國最火爆的手機游戲“王者榮耀”,擁有億級用戶體量,千萬級日活用戶,如何快速、低成本地保障業(yè)務(wù)突發(fā)?本文從該問題出發(fā),論述了問題對應(yīng)的解決方案,并對其效果做出總結(jié)。

 堪稱中國最火爆的手機游戲“王者榮耀”,擁有億級用戶體量,***日活用戶,如何快速、低成本地保障業(yè)務(wù)突發(fā)?本文從該問題出發(fā),論述了問題對應(yīng)的解決方案,并對其效果做出總結(jié)。

“王者榮耀”是一款國民級手機游戲,用戶體量巨大,而且一直保持著較高的更新頻率。這種業(yè)務(wù)場景下,突發(fā)也變得非常頻繁,然而業(yè)務(wù)體驗是至關(guān)重要的,使用 CDN 必不可少。

騰訊 CDN 發(fā)展背景

使用 CDN 的業(yè)務(wù)中,經(jīng)常有帶寬突發(fā)的場景,比如新聞爆點視頻、大型直播活動、熱門影視劇上線、游戲等應(yīng)用發(fā)布。

得益于家庭帶寬和移動網(wǎng)絡(luò)的快速升級,突發(fā)帶寬越來越大,經(jīng)常達(dá)到 Tb 級,甚至 10Tb。如何快速、低成本地保障業(yè)務(wù)突發(fā),是 CDN 的一大挑戰(zhàn)。

2007 年,騰訊 CDN 接入***個業(yè)務(wù)騰訊網(wǎng)。帶寬從最早的 10Gb,發(fā)展到現(xiàn)在的數(shù) 10Tb。單業(yè)務(wù)的帶寬也越來越大,大部分業(yè)務(wù)常量帶寬在幾百 Gb,部分突發(fā)業(yè)務(wù)達(dá)到了 10Tb。

網(wǎng)絡(luò)的快速升級,移動用戶爆發(fā)式增長,以及視頻類業(yè)務(wù)包括點播和直播的興起,使得業(yè)務(wù)突發(fā)越來越頻繁,突發(fā)帶寬越來越高,對 CDN 的要求也越來越高。

騰訊 CDN 得益于公司業(yè)務(wù)的蓬勃發(fā)展,先后支持了游戲下載、流媒體視頻加速、春節(jié)紅包等公司內(nèi)部業(yè)務(wù);2014 年騰訊 CDN 開始接入第三方客戶,比如快手點播、斗魚直播等。

以上各種業(yè)務(wù)都有突發(fā)場景,騰訊 CDN 在這些年的發(fā)展過程中,關(guān)于如何保障業(yè)務(wù)突發(fā),積累了豐富的經(jīng)驗。接下來從挑戰(zhàn)和問題、解決方案、效果三個方面來解析。

挑戰(zhàn)和問題

下面將從業(yè)務(wù)特點開始,分析目前存在的挑戰(zhàn)和問題。

01業(yè)務(wù)特點和挑戰(zhàn)

CDN 多樣化的場景,注定了突發(fā)業(yè)務(wù)充滿挑戰(zhàn)。突發(fā)業(yè)務(wù)具有三大特點:

  • 體量大。突發(fā)業(yè)務(wù)帶寬大部分都超過 Tb,部分甚至達(dá)到了 10T。
  • 場景多樣化。點播中的熱劇和新聞爆點;直播中的 LOL/KPL/DOTA2 等游戲直播,NBA/世界杯等體育直播,演唱會等綜藝直播;應(yīng)用下載中的王者榮耀等游戲下載;靜態(tài)網(wǎng)頁加速中的紅包活動、電商促銷等。
  • 無規(guī)律。部分突發(fā)活動無法預(yù)知,活動快要開始或已經(jīng)開始了才知道,比如新聞爆點。

體量大,需要準(zhǔn)備更多的資源;場景多樣化,需要滿足不同的資源需求;無規(guī)律性則對我們的擴容效率提出了很高的要求。

02目前存在的問題

僅僅為了滿足業(yè)務(wù)突發(fā)需求而儲備大量的資源,成本太高,會造成資源極大的浪費。所以一般會通過復(fù)用資源來應(yīng)對業(yè)務(wù)突發(fā)。

直接復(fù)用資源,存在兩個問題:

  • 只能復(fù)用部分資源。CDN 業(yè)務(wù),一般按業(yè)務(wù)類型來區(qū)分平臺和資源使用,主要原因是不同業(yè)務(wù)類型對資源需求不同,比如點播類需要更多的存儲;有較多 https 請求的靜態(tài)頁面類,則需要更多 CPU 資源。

這種限制使得資源無法充分利用,加大了資源準(zhǔn)備的難度。比如視頻突發(fā)主要使用視頻 Buffer,而下載類和網(wǎng)頁類 Buffer 無法直接使用,這限制了 Buffer 的大小。即使復(fù)用同類型資源,因為涉及多個業(yè)務(wù)資源的協(xié)調(diào),準(zhǔn)備時間一般會超過兩天,無法應(yīng)對臨時突發(fā)情況。

  • 無法降低成本。針對部分突發(fā)業(yè)務(wù),比如游戲應(yīng)用下載,帶寬高峰期在上午和中午,如果只使用本平臺資源,會導(dǎo)致結(jié)算帶寬明顯上漲,從而增加成本。無法利用同其他業(yè)務(wù)錯峰的特點來降低結(jié)算帶寬。

解決方案

通過虛擬化復(fù)用現(xiàn)有資源,搭建全業(yè)務(wù)通用的突發(fā)池,所有平臺共享 Buffer。突發(fā)池中的設(shè)備為 Docker 虛擬機,虛擬機有不同的規(guī)格,只要業(yè)務(wù)有需求,都可以按需使用。

突發(fā)池中的帶寬儲備達(dá)到了 10Tb,基本能滿足所有業(yè)務(wù)的突發(fā)需求 。任何業(yè)務(wù)有突發(fā)需求,配合自動化上架接口,可在 10 分鐘完成 10Tb 突發(fā)池的擴容。

01突發(fā)池系統(tǒng)架構(gòu)

圖1:突發(fā)池系統(tǒng)架構(gòu)

突發(fā)池:在各平臺物理機的上層,由 Docker 虛擬機組成的資源池,對 CPU/內(nèi)存/磁盤等使用進(jìn)行了限制,防止對物理機造成影響。原有業(yè)務(wù)依然部署在物理機上,不用調(diào)整。

自動化部署和監(jiān)控系統(tǒng): 根據(jù)業(yè)務(wù)實際需求,自動預(yù)測需求并擴容 。所有的突發(fā)需求,都能在 10 分鐘內(nèi)擴容完成。針對點播/下載業(yè)務(wù),自動分發(fā)熱點文件,降低回源帶寬。

調(diào)度系統(tǒng):針對突發(fā)業(yè)務(wù)的突發(fā)性和體量大兩個特點,使得相比域名調(diào)度系統(tǒng),直通車更占優(yōu)勢。直通車調(diào)度更靈活,生效時間快,能達(dá)到分鐘級。

虛擬機和物理機部署了上報 Agent,業(yè)務(wù)信息和服務(wù)器負(fù)載每分鐘都會上報到監(jiān)控系統(tǒng)。監(jiān)控系統(tǒng)會根據(jù)歷史帶寬預(yù)測一個值,并與當(dāng)前帶寬比較,如果當(dāng)前帶寬超過預(yù)測值的 50%,則認(rèn)為有突發(fā)。

根據(jù)帶寬上漲的比例,系統(tǒng)會自動從突發(fā)池中擴容相應(yīng)數(shù)據(jù)的設(shè)備。針對提前準(zhǔn)備的突發(fā)活動,運維可以指定帶寬需求量,之后系統(tǒng)便會自動計算設(shè)備需求并擴容。

分鐘粒度上報的服務(wù)器負(fù)載信息則為監(jiān)控系統(tǒng)做調(diào)度決策提供了依據(jù)。系統(tǒng)會依據(jù)機房剩余帶寬、服務(wù)器帶寬、CPU、IO 等綜合信息決定虛擬機是否需要從直通車中啟用或者禁用。

用戶訪問時先請求直通車調(diào)度系統(tǒng),直通車會根據(jù)調(diào)度策略返回一個 302 地址,此302 地址為實際 CDN 資源地址。用戶跳轉(zhuǎn)到 302 地址,并獲取實際內(nèi)容。

02技術(shù)優(yōu)化

使用虛擬化技術(shù)復(fù)用資源的重要前提是不影響現(xiàn)有業(yè)務(wù)。這就要求對資源有充分的隔離,比如 CPU/磁盤,以及對帶寬的使用。

下面是實現(xiàn)過程中存在的幾個問題及解決方案:

精準(zhǔn)控制單機負(fù)載

負(fù)載過高會影響業(yè)務(wù)質(zhì)量,需要對單機負(fù)載進(jìn)行精準(zhǔn)的控制。

解決方案:

  • 配額系統(tǒng):直通車中有配額系統(tǒng),對每個虛擬機可使用的資源做了限制,包括 CPU/IO 和帶寬。監(jiān)控系統(tǒng)中上報的信息,結(jié)合配額系統(tǒng),可以確保服務(wù)器負(fù)載被限定在指定的范圍內(nèi),粒度為分鐘級。
  • 部分請求返回 302:對 CPU/帶寬/IO 等做了限制后,應(yīng)用程序能根據(jù)母機當(dāng)前負(fù)載,實時判斷是否處理一個請求。

如果負(fù)載在限制范圍內(nèi),直接處理;如果負(fù)載超出限制,則返回 302,使用戶跳轉(zhuǎn)到直通車的調(diào)度地址,這樣能在盡量不影響業(yè)務(wù)質(zhì)量的情況對負(fù)載做精準(zhǔn)控制。程序?qū)用鎸ω?fù)載的實時控制,是配額系統(tǒng)的有效補充。

  • 網(wǎng)卡流量控制:在極端情況下,業(yè)務(wù)帶寬超過設(shè)定閾值,這時虛擬網(wǎng)卡會主動丟包,避免對母機造成影響。

限制磁盤大小

Docker 在 ext3 / ext4 文件系統(tǒng)中無法對文件/目錄級別進(jìn)行磁盤大小限制。

解決方案:由于騰訊 CDN 業(yè)務(wù)基本都是使用 ext3 / ext4 文件系統(tǒng),這種情況下 Docker 只對根據(jù)用戶或用戶組對磁盤進(jìn)行限制,但現(xiàn)網(wǎng)業(yè)務(wù)都是直接在 root 環(huán)境下使用。

這里我們使用 loop device 來解決磁盤大小限制問題。虛擬機中突發(fā)業(yè)務(wù)使用掛載在 loop device 上的目錄,這樣就可以間接限制磁盤大小,防止使用太多磁盤影響其他業(yè)務(wù)。

CPU 綁定

默認(rèn)是綁定所有 CPU,部分單 CPU 負(fù)載高會影響母機業(yè)務(wù)。

解決方案:通過腳本每分鐘采集一次系統(tǒng)所有單 CPU 負(fù)載,為避免頻繁調(diào)整和受毛刺數(shù)據(jù)影響,選取 15 分鐘的均值。

***選取負(fù)載較低的部分核,并通過配置文件 cpuset.cpus 來動態(tài)綁定,將虛擬機對母機業(yè)務(wù)影響降低到最小,并且能充分利用資源。

應(yīng)用效果

突發(fā)池上線后,支持了王者榮耀下載、NBA 直播、KPL/LPL 游戲直播等多次大型突發(fā)活動,節(jié)約成本 2000 萬。通過共享 Buffer,搭建突發(fā)池能顯著提高突發(fā)能力和降低成本。

總結(jié)

騰訊 CDN 通過 Docker 技術(shù)復(fù)用資源,搭建 Tb 級別突發(fā)池,能支持直播、點播、靜態(tài)等各種業(yè)務(wù)突發(fā),能自動檢測到業(yè)務(wù)突發(fā)需求并在 10 分鐘內(nèi)完成資源擴容,具有發(fā)布快,成本低等特點。

資源復(fù)用能提高資源利用率,為業(yè)務(wù)提供極大的突發(fā)池,但要注意復(fù)用業(yè)務(wù)之間不能相互影響,這需要對服務(wù)器進(jìn)行實時的監(jiān)控和及時的調(diào)度。

另外還有一些待改進(jìn)的地方,比如內(nèi)核參數(shù)基于容器隔離,方便不同業(yè)務(wù)調(diào)優(yōu);部分業(yè)務(wù)客戶端不支持 302 跳轉(zhuǎn),調(diào)度系統(tǒng)需要支持域名調(diào)度方式。

責(zé)任編輯:武曉燕 來源: 騰訊架構(gòu)師微信公眾號
相關(guān)推薦

2017-11-27 11:02:46

高并發(fā)突發(fā)池系統(tǒng)架構(gòu)王者榮耀

2017-10-30 08:20:16

王者榮耀騰訊云游戲

2019-12-09 09:52:38

設(shè)計軟件數(shù)據(jù)庫

2022-09-20 14:37:43

ms級抽獎MySQL

2015-01-14 14:07:12

聽云Server

2022-02-28 10:11:22

查詢數(shù)據(jù)SQL

2016-12-12 14:24:25

蘋果Aqua界面

2020-08-25 16:55:05

云原生AWS金科文化

2018-05-13 22:23:32

2024-05-27 08:32:45

2012-08-09 09:52:41

移動APP推廣沙龍

2013-02-20 10:05:21

吳剛捕魚達(dá)人

2020-11-02 07:59:40

高并發(fā)系統(tǒng)業(yè)務(wù)

2014-02-20 15:00:48

MetroWindows用戶

2012-02-14 00:01:22

2023-08-31 07:30:09

AIGC代碼監(jiān)測

2020-11-13 15:20:27

游戲引擎技術(shù)

2009-07-17 10:34:47

2025-01-14 16:14:10

2017-11-08 09:32:05

點贊
收藏

51CTO技術(shù)棧公眾號