游族網(wǎng)絡(luò)游戲云服務(wù)器運維及游戲產(chǎn)品架構(gòu)進(jìn)化史
大小:0.5 MB 人氣: 2017-10-11 需要積分:1
標(biāo)簽:OpenStack(18791)游戲云服務(wù)器(1627)
經(jīng)過近七年的高速發(fā)展,公司游戲服務(wù)器從100臺增長到10000+臺,游族整體游戲架構(gòu)也經(jīng)過了三個階段的演變:公司早期廣泛使用的第一代架構(gòu),當(dāng)時主流的產(chǎn)品都是以DB+計算+前端這樣的3個角色開發(fā)設(shè)計并部署,服務(wù)器以物理機(jī)為主,一個游戲區(qū)組需要2~4臺服務(wù)器,不同的機(jī)器承擔(dān)不同的角色。這種架構(gòu)方案效率低,基本上不可能實現(xiàn)一天開100個區(qū)組(100個區(qū)組大概需要400臺服務(wù)器); 隨著業(yè)務(wù)量的增長和虛擬化技術(shù)廣泛使用,游族整體游戲架構(gòu)更新為第二代架構(gòu),全面采用虛擬化技術(shù),把一臺高配的物理機(jī)器虛擬化成多臺符合游戲需求的虛擬機(jī)來使用,并實現(xiàn)了ALL IN ONE的系統(tǒng)架構(gòu)。該架構(gòu)方案運維效率高,適合規(guī)模開展游戲運營,但不具備業(yè)務(wù)高可用特性,一天開100個區(qū)組成為常態(tài); 為了迎合大區(qū)大服、全球同服,游族融合了前兩代架構(gòu)的特點,推出了第三代架構(gòu),按角色分拆并形成服務(wù)集群模式。集群架構(gòu)結(jié)合了物理機(jī)與虛擬化的優(yōu)勢,實現(xiàn)彈性擴(kuò)容,游戲邏輯以服務(wù)進(jìn)程或集群配置項的形式提供服務(wù)。該架構(gòu)方案運維效率更高,可實現(xiàn)秒級開服同時具備業(yè)務(wù)高可用特性。
基于第二代架構(gòu),游族基于OpenStack自己的私有云,最初目標(biāo)是為了提高服務(wù)器利用率、降低成本和實現(xiàn)分鐘級開服。運維團(tuán)隊以O(shè)penStack G版為藍(lán)本進(jìn)行調(diào)優(yōu)并修改;整個網(wǎng)絡(luò)采用的是VLAN模式,保證最大限度與現(xiàn)有網(wǎng)絡(luò)架構(gòu)保持兼容;存儲方面使用本地磁盤作為存儲。
通過底層優(yōu)化后,游族私有云基本上可以滿足業(yè)務(wù)的需求,目前90%游戲業(yè)務(wù)運行在上面,虛機(jī)規(guī)模持續(xù)保持在10000臺以上,游族私有云平臺沒有提供WEB管理界面,日常所有的操作都是通過命令行和腳本的形式進(jìn)行操作,但對于虛擬機(jī)的增刪查改,重新封裝了一層簡潔的API接口實現(xiàn)與游族運維平臺的對接。經(jīng)過評估測驗,在高峰時期,整個私有云資源利用率可達(dá)到83%。
運維方式的轉(zhuǎn)變
與三代架構(gòu)相互對應(yīng)是游族運維的三個階段:
在第一代架構(gòu)上,運維基本是手工運維,技術(shù)含量并不高,純粹是采用人與時間堆積進(jìn)行,運維同學(xué)需要登錄每一臺服務(wù)器,順序執(zhí)行相關(guān)的命令和腳本。獨立的版控服務(wù)器,通過主動推送的形式進(jìn)行版本更新;在第二代架構(gòu)上,通過自動化工具進(jìn)行批量運維,團(tuán)隊推出了使用expect寫的auto批量腳本,所有操作只需登錄一臺集控服務(wù)器執(zhí)行批量并發(fā)操作的腳本,獨立的版控服務(wù)器,通過并行的主動推送;在第三代架構(gòu)上,可以實現(xiàn)系統(tǒng)化運維,多個運維系統(tǒng)相互協(xié)調(diào)配合實現(xiàn),例如:CMDB、業(yè)務(wù)樹、作業(yè)平臺等。游戲區(qū)組搭建的時間基本上可以忽略(可按需求實現(xiàn)按條件觸發(fā)或手動觸發(fā)搭建操作),所有的更新操作在WEB管理平臺就可完成。
游族作業(yè)平臺UJOBS
圖二:UJOBS架構(gòu)及其游戲更新流程
系統(tǒng)化運維過程中使用的作業(yè)平臺(UJOBS)是屬于C/S的架構(gòu),其核心部分由任務(wù)調(diào)度器和agent組成,通過調(diào)用API接口完成多種形式的指令下發(fā)。UJOBS簡單的來說是為服務(wù)器管理提供了執(zhí)行命令的通道,將所有的執(zhí)行命令和腳本在目標(biāo)服務(wù)器橫向執(zhí)行完,把輸出結(jié)果記錄日志里面,同時可通過WEB界面實時查看分析。任務(wù)調(diào)度器是用來全局策略控制,進(jìn)行并發(fā)量控制。任務(wù)列表里面保存任務(wù)的完整信息。指令倉庫保存常用的命令個腳本和上下文關(guān)聯(lián)的命令組合。
在UJOBS平臺上,游戲版本更新流程如下:
版本庫的版本變更自動觸發(fā)構(gòu)建; 從版本庫拉取變更后的版本文件; 通過構(gòu)建操作后,推送目標(biāo)程序到分布式的全局版控服務(wù)器集群; 在作業(yè)平臺下發(fā)更新操作后,UJOBS的agent取得該次更新的版控服務(wù)器地址、變更清單以及版本信息; 從版控服務(wù)器拉取更新文件到本地執(zhí)行預(yù)定的更新腳本。
同時在UJOBS執(zhí)行的過程中可實時查看輸出的日志。當(dāng)游戲版本更新出現(xiàn)異常,有兩種回滾方式:第一種,游戲服務(wù)器上保留歷史版本,異常時回退到歷史版本;第二種,覆蓋回滾,將老版本再次發(fā)布進(jìn)行回滾。
數(shù)據(jù)庫備份與恢復(fù)
相對于游戲版本更新備份而言,數(shù)據(jù)庫備份更為重要。ALLINONE模式或者非集群模式的游戲業(yè)務(wù)場景下,會存在多達(dá)好幾千個MySQL實例,若是要按常規(guī)的MySQL備份方案來實施,管理難度和成本都要翻好倍。因此游族網(wǎng)絡(luò)采用Xtrabackup在主庫上直接備份數(shù)據(jù)文件方式,備份文件暫存本地;本地備份完成后在備份系統(tǒng)選舉一臺遠(yuǎn)程服務(wù)器進(jìn)行異地備份;備份策略每小時一次備份,半小時本地備份半小時遠(yuǎn)程備份。該備份方法在單主庫業(yè)務(wù)場景下可能是最靠譜的數(shù)據(jù)備份方案,但備份過程對主庫會有影響、(限制IO操作),最壞情況下可能出現(xiàn)1小時的數(shù)據(jù)丟失(業(yè)務(wù)接受少量的數(shù)據(jù)丟失)。
在數(shù)據(jù)恢復(fù)方面,通過一鍵恢復(fù)工具,只需要提供恢復(fù)的IP、時間段和業(yè)務(wù)信息(如庫名)即可實現(xiàn)數(shù)據(jù)恢復(fù);24小時內(nèi)的數(shù)據(jù)通過本地的數(shù)據(jù)恢復(fù)(結(jié)合二進(jìn)制日志),超過24小時的數(shù)據(jù)通過異地數(shù)據(jù)恢復(fù)。
云上遷移歷程
現(xiàn)在游族已經(jīng)將幾款老游戲遷移到阿里云上。在將ALLINONE架構(gòu)平滑遷移到云上的過程中,首先要求就是遷移過程不能長時間停服,只能接受正常的版本更新的停服時間。整個遷移過程分為以下幾步:
第一步提前準(zhǔn)備資源,在阿里云提前申請好資源,初始化環(huán)境并把VPC與自有機(jī)房的網(wǎng)絡(luò)打通,實現(xiàn)內(nèi)網(wǎng)互通為數(shù)據(jù)同步做好準(zhǔn)備;第二步提前同步數(shù)據(jù),使用Xtrabackup備份在線把MySQL配置成主從同步模式,將數(shù)據(jù)同步到阿里云ECS,在一段時間后完成數(shù)據(jù)遷移。第三步正式遷移,正常的游戲停服維護(hù)時間(0.5~2小時)就可完成業(yè)務(wù)上阿里云的遷移。目前已經(jīng)平滑完成3款游戲產(chǎn)品的遷移,每款產(chǎn)品準(zhǔn)備時間3~5天,正式遷移用時1~2小時,在阿里云平臺使用的虛機(jī)超過1000臺。
圖三:新游戲上阿里云部署方案
上圖為ALLINONE架構(gòu)遷移在阿里云后的游戲部署:游戲邏輯運行在ECS上,業(yè)務(wù)中使用VPC網(wǎng)絡(luò),通過自建的ULB對外提供服務(wù)。游族網(wǎng)絡(luò)下一步計劃將集群模式部署在阿里云平臺上,游戲邏輯將在ECS集群運行,后端數(shù)據(jù)存儲在RDS集群中,前端通過SLB和負(fù)載均衡保證業(yè)務(wù)高可用,同時會接入LOG和大數(shù)據(jù)計算服務(wù)MaxComputer確保大數(shù)據(jù)業(yè)務(wù)。
在遷移到云的過程中,阿里云的技術(shù)支持起到了關(guān)鍵作用,線上線下及時溝通,以及特定技術(shù)的定制,保證了整個遷移過程的順利進(jìn)行。
如何去選擇合適的數(shù)據(jù)庫?
在游戲遷移過程中,遇到了很多困難,其中一點是選擇自建MySQL還是RDS。根據(jù)游戲遷移經(jīng)驗,解決該問題,他認(rèn)為應(yīng)從以下三個因素進(jìn)行考慮:
實例數(shù)量:實例數(shù)量多且業(yè)務(wù)規(guī)模小(無需進(jìn)行針對性的優(yōu)化)適合自建MySQL服務(wù);實例數(shù)量不多業(yè)務(wù)相對會比較集中,數(shù)據(jù)庫負(fù)載較高需要針對性的進(jìn)行優(yōu)化適合使用RDS服務(wù);數(shù)據(jù)大小:數(shù)據(jù)量的大小會直接影響到數(shù)據(jù)庫性能和數(shù)據(jù)備份的機(jī)制,數(shù)據(jù)量越大越需要對數(shù)據(jù)庫進(jìn)行精細(xì)化管理,數(shù)據(jù)的備份難度也越大,這種情況下建議使用RDS服務(wù),反之可自建;成本核算:從實例規(guī)格來看RDS會比ECS自建MySQL要貴,但若是必須用到RDS的某些特性(如:數(shù)據(jù)安全和穩(wěn)定性)時成本也就不會放在首要位置了。
與此同時,大數(shù)據(jù)量的自建MySQL可以采用延時同步的方法,此方法已在游族網(wǎng)絡(luò)的女神聯(lián)盟(手游)的集群架構(gòu)方案中在使用。游族運維團(tuán)隊獨創(chuàng)的數(shù)據(jù)備份系統(tǒng)、UJOBS、業(yè)務(wù)網(wǎng)關(guān)等獨具特色解決方案確保了其業(yè)務(wù)量在行業(yè)內(nèi)處于領(lǐng)先地位。
QA環(huán)節(jié):
1、游族目前的運維人員數(shù)量是多少?
答:游族網(wǎng)絡(luò)最初運維團(tuán)隊在二十人以上,經(jīng)過技術(shù)優(yōu)化后,目前團(tuán)隊人數(shù)在十人左右。從原來的十幾款產(chǎn)品到現(xiàn)在的三十幾款產(chǎn)品,運維業(yè)務(wù)量增長一倍,整個運維團(tuán)隊人員縮減一半。團(tuán)隊不斷將技術(shù)轉(zhuǎn)化為生產(chǎn)力,這是一個持續(xù)推進(jìn)的過程。
2、從運維小白到總監(jiān)的成長過程?
答:首先,我對運維這個行業(yè)保持很高的興趣。從游戲?qū)?zhàn)平臺接觸運維開始,就愿意持續(xù)花時間投入游戲運維,曾耗費兩天三夜的時間來處理運維中遇到的故障。當(dāng)然最初也是從底層的運維人員做起,團(tuán)隊管理是被逼出來的,是一個慢慢成長的過程。在團(tuán)隊中,學(xué)習(xí)應(yīng)居于首位,每個運維人員需要不斷地學(xué)習(xí),提升自己的能力。
3、DB除了MySQL還有其他類型嗎?比如NoSQL這類數(shù)據(jù)庫是如何管理和部署的?
答:游族網(wǎng)絡(luò)的產(chǎn)品絕大多數(shù)都是使用的MySQL,有少數(shù)產(chǎn)品使用了Mongodb,因為量少暫時還是通過手工管理;緩存業(yè)務(wù)有使用Redis但不存儲關(guān)鍵數(shù)據(jù),Redis的數(shù)據(jù)備份使用數(shù)據(jù)備份系統(tǒng)進(jìn)行集中管理,所有的軟件部署都是通過標(biāo)準(zhǔn)化的業(yè)務(wù)模板進(jìn)行管理的。
4、在新方案中,大數(shù)據(jù)計算服務(wù)MaxComputer的應(yīng)用場景是什么?
答:在游族之前的架構(gòu)中,游戲日志是分開存儲,易丟失。在新的架構(gòu)中,通過Log服務(wù)將游戲日志搜集到大數(shù)據(jù)計算服務(wù)MaxComputer,對后續(xù)的游戲和運維數(shù)據(jù)分析提供便利支持。
5、數(shù)據(jù)庫的部分是單DB多實例嗎?有沒有啟用分布式DB的架構(gòu)呢?
答:ALLINONE架構(gòu)下,在一個MySQL實例中只運行一個業(yè)務(wù);在集群架構(gòu)下,在單DB實例下,會運行多個業(yè)務(wù),分布式DB架構(gòu)也相應(yīng)是必備的。
6、游族私有云是用的OpenStack,本身組件很多,后續(xù)和公有云之間如何銜接的?
答:目前游族使用OpenStack僅限于機(jī)房,短時間內(nèi)不會與社區(qū)版本同步,機(jī)房內(nèi)修改和使用都很簡單,整個OpenStack定制和修改不多,更多著重于框架的使用。
7、國際節(jié)點和國內(nèi)節(jié)點的高可靠鏈路如何建立?
答:該鏈路使用的基本資源是遍布全球的阿里巴巴骨干網(wǎng),阿里云是將自己的資源分享出來給使用VPC的客戶,實現(xiàn)國內(nèi)外高可靠鏈路的建立。
?
非常好我支持^.^
(0) 0%
不好我反對
(0) 0%
下載地址
游族網(wǎng)絡(luò)游戲云服務(wù)器運維及游戲產(chǎn)品架構(gòu)進(jìn)化史下載
相關(guān)電子資料下載
- Openstack網(wǎng)絡(luò)模型場景及代碼解析 161
- 2023年了,OpenStack仍是第三大開源項目 849
- 圖數(shù)據(jù)庫驅(qū)動的基礎(chǔ)設(shè)施運維代碼編程案例 83
- openEuler資源利用率提升之道:虛擬機(jī)混部OpenStack調(diào)度 398
- 使用Ansible的OpenStack自動化 501
- 中國OpenStack往事回望 449
- openEuler社區(qū)鄧一諾:實踐是探索和提升的最佳捷徑 663
- 后OpenStack時代的Kubernetes 398
- NestOS實例創(chuàng)建與配置 517
- 開源云基礎(chǔ)設(shè)施軟件OpenStack最新版本Yoga發(fā)布 1644