游戲服務(wù)器處理多個(gè)連接入口的方案
最近在考慮為一組游戲服務(wù)器配置多個(gè)連接入口。這個(gè)需求來至于我們的國情。作為大的游戲運(yùn)營商,勢(shì)必要考慮國內(nèi)的網(wǎng)絡(luò)狀況——南北不通的現(xiàn)狀。以往別的公司的代理游戲,由于不是自己開發(fā),都選擇了一個(gè)實(shí)際的方案:在北網(wǎng)通和南電信各放若干組服務(wù)器。北邊來的在北邊玩,南方住的安居在南方。
我們的游戲卻不行,因?yàn)槲倚枰粋€(gè)完整的大世界,必須解決南北互通的問題。據(jù)我所知國內(nèi)運(yùn)營的游戲 EVE 是比較好解決了這個(gè)問題的。
我們自己的游戲大多也解決了,只是宣傳上還是鼓勵(lì)玩家登陸相應(yīng)的服務(wù)器。我們的解決方案本質(zhì)上很簡單。建立有多個(gè)出口的機(jī)房,同時(shí)擁有電信和網(wǎng)通的線路?;蚴怯米约旱木€路互聯(lián)電信和網(wǎng)通的機(jī)器。這后者普通用戶自己在家也可以做,只要你肯花錢,同時(shí)購買電信的 ADSL 于網(wǎng)通的寬帶即可。目前許多城市兩者都向大眾提供服務(wù)。
當(dāng)然,最終我們還是需要編寫服務(wù)器的程序員做一些配合。
早先,我的一組游戲服務(wù)器的設(shè)計(jì)是單臺(tái)的連接服務(wù)器作為玩家的總?cè)肟?,再匯集所有信息到心跳服務(wù)器,由它轉(zhuǎn)發(fā)到后面的邏輯服務(wù)器組處理。關(guān)于這個(gè)設(shè)計(jì)以前寫過篇 blog 。
其實(shí)稍微改動(dòng)一下設(shè)計(jì),就能很好的解決多個(gè)連接入口的問題。
只需要為每種網(wǎng)絡(luò)配置獨(dú)立的連接服務(wù)器,電信和網(wǎng)通各一臺(tái)(或者還需要教育網(wǎng)),同時(shí)連入同一臺(tái)心跳服務(wù)器。數(shù)據(jù)在心跳服務(wù)器匯總。數(shù)據(jù)包在匯集的時(shí)候,為了區(qū)分是哪個(gè)外部連接進(jìn)來的,會(huì)被連接服務(wù)器編上內(nèi)部 id 。當(dāng)有多臺(tái)連接服務(wù)器時(shí),每臺(tái)只需要配置不同的內(nèi)部 id 掩碼來區(qū)分就夠了。
ps. 早先我們想用連接服務(wù)器配置雙網(wǎng)卡的方式來解決這個(gè)問題。這幾天反思這樣成本過高。到時(shí)候要求每組服務(wù)器都有兩條不同的網(wǎng)線接入,部線過于麻煩