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