背景介紹
KMS 是一家日本的游戲公司,主要經(jīng)營游戲業(yè)務(wù)、數(shù)字漫畫業(yè)務(wù)、廣告業(yè)務(wù)、云解決方案業(yè)務(wù)等,出品了多款在日本暢銷的漫畫風(fēng)游戲,同時(shí)有網(wǎng)絡(luò)漫畫專業(yè)廠牌,以內(nèi)容創(chuàng)作為目標(biāo),擁有原創(chuàng) IP 創(chuàng)作、游戲開發(fā)等多元化發(fā)展的業(yè)務(wù)。
KMS 曾經(jīng)是微軟 Azure 的標(biāo)桿客戶,曾經(jīng)在 Azure 的 Customer story 里有詳細(xì)的介紹,主要是使用了 Azure 的 App Service。
2021年,KMS 開始遷移到騰訊云,并把第一款產(chǎn)品部署在了騰訊云上。從 Azure 遷移到騰訊云上后,整體成本降低50%。下面我們就來講講他們在騰訊云上的微服務(wù)實(shí)踐。
挑戰(zhàn)與痛點(diǎn)
KMS 的架構(gòu)主要有以下特點(diǎn):
1.? KMS 的架構(gòu)設(shè)計(jì)的特點(diǎn)是圍繞不同的游戲有不同的終端。
2.? 但同時(shí)又有統(tǒng)一的后臺(tái)管理平臺(tái)、統(tǒng)一的底座等。
3.? 客戶在游戲場景的不同的客戶端主要包括安卓,iOS,Web 等。此外,客戶后端又分為戰(zhàn)斗系統(tǒng)、管理系統(tǒng)、用戶系統(tǒng)等。
4.? 游戲業(yè)務(wù)通常都有波峰波谷,在業(yè)務(wù)高峰期的時(shí)候需要快速擴(kuò)容來支持大量的游戲玩家;在業(yè)務(wù)低峰期的時(shí)候,需要縮容來節(jié)約成本。
那么基于此類場景的架構(gòu)設(shè)計(jì),面臨最大的問題就是在游戲的不同時(shí)間段的彈性擴(kuò)縮容問題。不同的業(yè)務(wù)模塊需要彈性的頻率和范圍都是不一樣的。不同的微服務(wù)劃分會(huì)帶來不一樣的彈性伸縮頻率和范圍。這直接影響到了最終資源的用量,也就直接反應(yīng)到了成本上。
架構(gòu)設(shè)計(jì)
接下來就分別把 KMS 在騰訊云上的架構(gòu)設(shè)計(jì)實(shí)踐的幾個(gè)部分分開來介紹一下。
整體設(shè)計(jì)
游戲業(yè)務(wù)通常都有各種客戶端,比如安卓、iOS、網(wǎng)頁等,為了應(yīng)對不同的場景,架構(gòu)設(shè)計(jì)上也應(yīng)該有一定的區(qū)別。
首先,必須有 CDN 來提供靜態(tài)文件的分發(fā),包括游戲資源、安裝包、圖片等。這些文件底層都是存儲(chǔ)在 COS 上的。
然后對于不同的客戶端,會(huì)有不同的后端實(shí)例來承載它的流量。比如戰(zhàn)斗系統(tǒng),iOS 客戶端在同一個(gè)戰(zhàn)斗里的用戶,會(huì)在同一套戰(zhàn)斗系統(tǒng)的實(shí)例里。
那對于管控端來說,壓力沒那么大,可以所有的客戶端都用同一套管控端的實(shí)例,因?yàn)樗回?fù)責(zé)一些通用的用戶設(shè)置的管理等。所以通常訪問的 QPS 不會(huì)太高。
下圖就是 KMS 大致的整體架構(gòu)圖。
彈性伸縮
在游戲高峰期,對于訪問壓力大的服務(wù),怎么去解決這樣的流量波峰波谷呢?
KMS 是選擇使用騰訊云的彈性微服務(wù)來解決。
彈性微服務(wù)(Tencent Cloud Elastic Microservice)是面向微服務(wù)應(yīng)用的 Serverless PaaS 平臺(tái),實(shí)現(xiàn)資源 Serverless 化與微服務(wù)架構(gòu)的完美結(jié)合,為用戶提供一整套開箱即用的微服務(wù)解決方案。
由于它已經(jīng) Serverless 化了,因此用戶不需要再關(guān)心底層資源,只需要按照自己的使用量,配置對應(yīng)的彈性伸縮策略,就可以在流量波峰來的時(shí)候,實(shí)現(xiàn)秒級的擴(kuò)容。
彈性伸縮的策略也非常豐富,支持定時(shí)伸縮與指標(biāo)伸縮。
定時(shí)伸縮可以根據(jù)業(yè)務(wù)的時(shí)間特征來設(shè)置,比如游戲的高峰通常是在晚上,而上午通常都是低峰期,那么就可以定時(shí)設(shè)置,上午只保留基本的資源量,保障較小的流量正常進(jìn)行,以節(jié)約資源成本。在晚上高峰期,就可以提前拉起更多的資源,以保障晚上高峰期的資源充足。
指標(biāo)伸縮可以用來應(yīng)對突發(fā)的流量。比如某個(gè)時(shí)間段因?yàn)槟撤N原因突然來了大量的用戶玩游戲,如果資源不足,等發(fā)現(xiàn)問題再擴(kuò)容,可能導(dǎo)致用戶體驗(yàn)差。這時(shí)就可以設(shè)置指標(biāo)擴(kuò)容,比如當(dāng)服務(wù)的 CPU 或內(nèi)存使用率達(dá)到60%用戶就開始擴(kuò)容,同時(shí)可以設(shè)置擴(kuò)容范圍,比如讓實(shí)例數(shù)在1-50之間擴(kuò)容。這樣,就可以根據(jù)指標(biāo)動(dòng)態(tài)的保障用戶的資源充足了。
經(jīng)過 KMS 實(shí)際的測試發(fā)現(xiàn),在單個(gè)實(shí)例的測試場景中,同等規(guī)格的實(shí)例,性能上騰訊云的彈性微服務(wù)比 Azure 的 App Service 高15%,游戲響應(yīng)延遲降低50%。KMS 遷移到騰訊云后,整體成本降低50%以上。
DevOps
游戲業(yè)務(wù)通常都會(huì)有較頻繁的發(fā)布周期,以滿足快速發(fā)展的游戲市場,和滿足不同玩家的游戲體驗(yàn)。
因此快速且安全的發(fā)布也必不可少。于是 KMS 搭建了一套能在彈性微服務(wù)上快速部署的 CICD 流程。如下圖所示。
首先,KMS 編寫了大量的自動(dòng)化測試,包括單元測試和集成測試。因?yàn)?KMS 是使用的 GitHub,所以在代碼提交后,就會(huì)自動(dòng)觸發(fā) GitHub Actions 運(yùn)行測試、構(gòu)建、上傳等操作,實(shí)現(xiàn)自動(dòng)打包構(gòu)建鏡像等,最后 CD 流程會(huì)把構(gòu)建好的鏡像部署到彈性微服務(wù)中去。
這里的部署就需要說到 KMS 的分批發(fā)布實(shí)踐了。
分批發(fā)布
KMS 原來在 Azure 的時(shí)候,做發(fā)布需要自己準(zhǔn)備資源,并自行完成更新,同時(shí)需要自己保障過程中的滾動(dòng)更新。而當(dāng)他們使用了彈性微服務(wù)的發(fā)布之后發(fā)現(xiàn),這個(gè)過程是如此絲滑。
首先,彈性微服務(wù)會(huì)根據(jù)當(dāng)前已有的實(shí)例數(shù),選擇分幾批進(jìn)行升級更新。每批次的發(fā)布都可以自動(dòng)執(zhí)行或者手動(dòng)執(zhí)行。在關(guān)鍵的發(fā)布時(shí),KMS 會(huì)選擇手動(dòng)執(zhí)行,這樣每批次完成后,先手動(dòng)驗(yàn)證一下功能的正確性,再進(jìn)行下一批次的發(fā)布。
如果某個(gè)批次的發(fā)布有任何問題,可以馬上選擇回滾,不會(huì)影響線上業(yè)務(wù)。
以上就是 KMS 在騰訊云上基于彈性微服務(wù)的分批發(fā)布實(shí)踐。
其他設(shè)計(jì)
除了上面介紹到的實(shí)踐之外,KMS 結(jié)合自身的業(yè)務(wù)特性,還做了很多額外的其他工作,來保障游戲服務(wù)的正常運(yùn)行。
比如,為了更好的優(yōu)化資源成本,KMS 會(huì)在夜間把測試環(huán)境的資源一鍵歸零,然后在早上上班的時(shí)候一鍵開啟。同時(shí),此過程已經(jīng)被 KMS 集成到自動(dòng)化流程中,每天自動(dòng)觸發(fā)了。
另外,在 App Service 之前若有實(shí)例存在內(nèi)存問題時(shí),需要重啟。一般都需要1個(gè)小時(shí)左右。
而 KMS 使用了彈性微服務(wù)之后,彈性微服務(wù)會(huì)對實(shí)例進(jìn)行檢測,若有問題會(huì)自動(dòng)進(jìn)行重啟。這里主要是利用了彈性微服務(wù)的健康檢測能力。
此外,KMS 一共有4個(gè)游戲發(fā)行平臺(tái),4套環(huán)境,KMS 利用彈性微服務(wù)的環(huán)境管理,合理的分配了不同的平臺(tái),便于管理與運(yùn)維,極大的提升了運(yùn)維效率。
總結(jié)
KMS 是一家以內(nèi)容創(chuàng)作和原創(chuàng) IP 創(chuàng)作為目標(biāo)的專業(yè)廠牌,曾是微軟 Azure 的標(biāo)桿客戶,如今已經(jīng)在騰訊云穩(wěn)定運(yùn)行超過2年了。
他們在2021年遷移到騰訊云后,通過合理的架構(gòu)設(shè)計(jì)和產(chǎn)品使用,讓他們成本降低了50%。文章來源:http://www.zghlxwxcb.cn/news/detail-717680.html
未來也期望 KMS 和騰訊云能有更多的合作,分享更多的架構(gòu)設(shè)計(jì)經(jīng)驗(yàn)和上云最佳實(shí)踐。文章來源地址http://www.zghlxwxcb.cn/news/detail-717680.html
到了這里,關(guān)于KMS在騰訊云的微服務(wù)實(shí)踐助力其降本50%的文章就介紹完了。如果您還想了解更多內(nèi)容,請?jiān)谟疑辖撬阉鱐OY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!