一、聯(lián)機對戰類(lèi)游戲的需要保證什么?
1. 游戲低延時(shí),保障更多玩家流暢的體驗
全球玩家分布廣泛,服務(wù)器集中部署,使部分地區網(wǎng)絡(luò )體驗差,游戲體驗受到影響,這可能是部分地區玩家數量相對較少的一個(gè)原因。
通常就近調度,或者全球加速(集中部署在一個(gè)點(diǎn),各個(gè)區域到此點(diǎn)進(jìn)行加速)可以讓網(wǎng)絡(luò )延時(shí)達到一個(gè)優(yōu)化。對于實(shí)時(shí)性非常敏感的游戲來(lái)說(shuō),就近調度效果更明顯。不過(guò)就近調度有幾個(gè)棘手的問(wèn)題:
方案一:業(yè)務(wù)部署在多個(gè)區域,玩家就近在一個(gè)區域完成匹配和對戰
問(wèn)題:某個(gè)區域的玩家相對較少,可能匹配不到相應等級的人,最后所有玩家都集中到某個(gè)大區去了,實(shí)際上又變成了集中部署。
方案二:匹配在一個(gè)大區進(jìn)行,集中匹配,對戰的時(shí)候就近分配到不同的地區。
問(wèn)題:匹配時(shí)哪些區域會(huì )被匹配在一起是不確定的,而且也存在大量邀請好友一起玩的行為,每一天被分配到各個(gè)大區的玩家數量可能會(huì )非常不一樣,各個(gè)大區的服務(wù)器需求量不能提前準確預估。準備少了不夠,準備多了浪費資源。為了實(shí)時(shí)滿(mǎn)足就近調度,可能每個(gè)區域都要最大量的準備服務(wù)器,致使服務(wù)器成本暴增。
最后實(shí)際方案:可能變成集中調度了,對于中國區來(lái)說(shuō),所有的服務(wù)部署到上海。
2. 服務(wù)穩定,保障玩家體驗和多創(chuàng )營(yíng)收
(1)爆發(fā)式增長(cháng),不能及時(shí)擴容承接更多玩家
為了響應爆發(fā)式增長(cháng),研發(fā)和運維都需要提前做很多工作,確保服務(wù)能平行擴展,通過(guò)添加服務(wù)器,可以讓游戲無(wú)上限的支撐玩家。
這是一個(gè)有狀態(tài)的擴縮容場(chǎng)景:對于游戲服務(wù),尤其是對戰服務(wù)來(lái)說(shuō),不能是簡(jiǎn)單添加一個(gè)clb(負載均衡)就能搞定。在游戲服務(wù)里需要斷線(xiàn)重連,能找到之前連接的服務(wù)器;另外游戲過(guò)程不能因為縮容中斷游戲。
研發(fā)側:服務(wù)注冊、服務(wù)發(fā)現、服務(wù)調度,服務(wù)管理等工作,以確保服務(wù)能自動(dòng)化的平行擴容,否則只能靠手工配置。為了保障穩定性需要檢查服務(wù)健康狀況,屏蔽不健康服務(wù),以及服務(wù)保護工作避免游戲中的服務(wù)被中斷。
運維側:需要寫(xiě)一些腳本去添加更多服務(wù)器,需要寫(xiě)一些工具讓服務(wù)器自動(dòng)伸縮。自動(dòng)化進(jìn)行,需要制定服務(wù)器伸縮策略、研發(fā)服務(wù)器自動(dòng)購買(mǎi)、故障服務(wù)器排除等工具。
即使上面做好準備工作的情況下,還會(huì )出現異常情況:在服務(wù)器分配過(guò)程中,調度指標一般以服務(wù)器的指標cpu、內存作為參考,這樣可能導致一些低cpu、低內存的服務(wù)短時(shí)間被大量分配出去,服務(wù)器訪(fǎng)問(wèn)量瞬間爆發(fā)式上漲而掛掉。為了避免這種情況,通常CPU的利用率會(huì )維持在不高的狀態(tài)。
這件事,無(wú)論是研發(fā)還是運維,都不是一件簡(jiǎn)單的事。工作量比較大,前期不確定游戲是否會(huì )爆發(fā)式增長(cháng),一般中小開(kāi)發(fā)者不會(huì )提前做這些準備。
(2)地域/服務(wù)器發(fā)生故障
服務(wù)器發(fā)生故障比較常見(jiàn),通常做法就是監控服務(wù)器,出現故障立即剔除掉。
地域或整個(gè)機房發(fā)生故障不常見(jiàn),但造成的影響面積非常寬廣,一般游戲開(kāi)發(fā)者不太會(huì )考慮這個(gè)點(diǎn),因為要做服務(wù)器跨地域或者跨機房容災,至少要2倍的服務(wù)器,投入產(chǎn)出相對較低。
那么有方案讓游戲服務(wù)0成本跨地容災嗎?
3. 成本節約
服務(wù)器空閑導致的成本,如以下這些情況:
· 每日&周末&節假日的高峰波谷
· 游戲穩定運營(yíng)及下降期,服務(wù)器空閑資源
· 活動(dòng)期間,爆發(fā)增長(cháng),活動(dòng)過(guò)后需資源空閑
比起游戲運營(yíng)成本來(lái)說(shuō),服務(wù)器成本算不了什么,但是,能省一點(diǎn)是一點(diǎn),對不?
二、聯(lián)機對戰類(lèi)游戲對研發(fā)和運維的挑戰
如前文所述,為了提升游戲的一點(diǎn)體驗,研發(fā)工作量大、運維工作量大、服務(wù)器成本大。
1. 研發(fā)工作量大:服務(wù)管理、就近調度、跨地容災、不停服更新、自動(dòng)伸縮,工作量大,大廠(chǎng)已經(jīng)逐步在完善這些配套工具,對于一些創(chuàng )新工作室,或者創(chuàng )業(yè)者,會(huì )把更多精力放在打造游戲業(yè)務(wù)上,做這些工作是一種負擔。
2. 運維工作量大:反復去做擴容、縮容、發(fā)布版本。如果不反復去做這些事,需要開(kāi)發(fā)一些工具/腳本,是需要前期較大投入的事情。
3. 服務(wù)器成本大:一是空閑資源成本,二是按照傳統方式就近調度、跨地容災至少增加1倍服務(wù)器成本。