LollipopGo:代理服務(wù)器

代理服務(wù)器

游戲服務(wù)器開發(fā)過程中砚偶,整個服務(wù)器的架構(gòu)設(shè)計對于項目的影響是至關(guān)重要的,其中包括登錄流程少办,消息機制流程苞慢,消息加密流程 內(nèi)部服務(wù)器消息跳轉(zhuǎn),定時任務(wù)等英妓。 centos 系統(tǒng)為例挽放,給大家梳理下游戲架構(gòu)的基礎(chǔ)設(shè)計思想。

如何設(shè)計

1. 在整體的架構(gòu)中蔓纠,正式上線會在反向代理服務(wù)器前加nginx作為負載均衡辑畦,通過nginx來提高玩家在線人數(shù)
2. 在游戲開發(fā)過程中,不同游戲有不同的架構(gòu)設(shè)計腿倚,例如 H5小游戲或弱聯(lián)網(wǎng)的游戲纯出,可能服務(wù)器單服就搞定;
但是對于注冊量可以達到少則百萬動輒千萬用戶敷燎,游戲架構(gòu)設(shè)計上就要有講究了暂筝,服務(wù)器最好采用集中消息處理、
動態(tài)拓展等硬贯,同時部分服務(wù)焕襟,例如戰(zhàn)斗服等不需暴漏給外網(wǎng)
3. 為了滿足2步驟需求,先不考慮負載均衡饭豹,反向代理服務(wù)器主要可以做到:有效隔離內(nèi)網(wǎng)服務(wù)器鸵赖,消息統(tǒng)一處理
4. 反向代理服務(wù)器功能:消息精準轉(zhuǎn)發(fā)給相應(yīng)的內(nèi)網(wǎng)服務(wù)器

流程分析

1. 反向代理服務(wù)器主要是作為所有消息的入口統(tǒng)一管理,流量上反向代理是最大的相對于內(nèi)網(wǎng)服務(wù)器
2. 可以有效的隔離內(nèi)網(wǎng)服務(wù)器及外網(wǎng)的通信拄衰,安全性上增加
3. 處理消息很簡單它褪,消息的解析、消息轉(zhuǎn)發(fā)到相應(yīng)的內(nèi)網(wǎng)服務(wù)器

實例代碼

// 主函數(shù)
type ProxyServer struct {
    Connection *websocket.Conn
    StrMD5     string
    MapSafe    *concurrent.ConcurrentMap
}

var (
    cache *cache2go.CacheTable
    M     *concurrent.ConcurrentMap
)

func main()  {
    conf.InitConfig()
    runtime.GOMAXPROCS(runtime.NumCPU())
    http.Handle("/"+conf.GetConfig().Server.URL, websocket.Handler(BuildConnection))
    if err := http.ListenAndServe(conf.GetConfig().Server.WSAddr, nil); err != nil {
        glog.Info("Entry nil", err.Error())
        glog.Flush()
        return
    }
}

func BuildConnection(ws *websocket.Conn) {
    data := ws.Request().URL.Query().Get("data")
    if data == "" {
        glog.Info("data is Nil")
        glog.Flush()
        return
    }
    impl.InitConnection(ws)
}

// 反向代理服務(wù)器的ServerId
const (
    SERVER = iota
    ProxyServerId   // ProxyServerId == 1
    GameServerId    // GameServerId   == 2
    BattleServerId  // BattleServerId == 3
    GMServerId      // GMServerId == 4
    DBServerId      // DBServerId == 5
    CenterServerId  // CenterServerId == 6
)

// 反向代理服務(wù)器的消息定義
const (
    INIYPROXY             = iota //  ==0
    C2Proxy_SendDataProto        //  C2Proxy_SendDataProto == 1  
    Proxy2C_SendDataProto        //  Proxy2C_SendDataProto == 2
    G2Proxy_ConnDataProto        //  G2Proxy_ConnDataProto == 3  
    Proxy2G_ConnDataProto        //  Proxy2G_ConnDataProto == 4
    G2Proxy_SendDataProto        //  G2Proxy_SendDataProto == 5  
    Proxy2G_SendDataProto        //  Proxy2G_SendDataProto == 6
    C2Proxy_ConnDataProto        //  C2Proxy_ConnDataProto == 7  
    Proxy2C_ConnDataProto        //  Proxy2C_ConnDataProto == 8
)

注意事項

  1. 反向代理服務(wù)器啟動順序
以LollipopGo分布式游戲架構(gòu)為例:
1. 反向代理服務(wù)器需要在其他服務(wù)器啟動前啟動翘悉,原因是反向代理相當(dāng)于內(nèi)網(wǎng)服務(wù)器是服務(wù)器茫打,而內(nèi)網(wǎng)服務(wù)器角色是
“客戶端”,所以需要先啟動后內(nèi)網(wǎng)服務(wù)器主動連接反向代理服務(wù)器
2. 游戲反向代理服務(wù)器是每組服務(wù)器的消息總?cè)肟谘欤苑聪虼矸?wù)器的邏輯功能盡量簡單
3. 反向代理服務(wù)器功能:客戶端注冊包吝,內(nèi)網(wǎng)服務(wù)器注冊,消息轉(zhuǎn)發(fā)到對應(yīng)服務(wù)器源葫,消息轉(zhuǎn)發(fā)到指定玩家
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
禁止轉(zhuǎn)載诗越,如需轉(zhuǎn)載請通過簡信或評論聯(lián)系作者。
  • 序言:七十年代末息堂,一起剝皮案震驚了整個濱河市嚷狞,隨后出現(xiàn)的幾起案子块促,更是在濱河造成了極大的恐慌,老刑警劉巖床未,帶你破解...
    沈念sama閱讀 211,561評論 6 492
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件竭翠,死亡現(xiàn)場離奇詭異,居然都是意外死亡薇搁,警方通過查閱死者的電腦和手機斋扰,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 90,218評論 3 385
  • 文/潘曉璐 我一進店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來啃洋,“玉大人传货,你說我怎么就攤上這事『曷Γ” “怎么了问裕?”我有些...
    開封第一講書人閱讀 157,162評論 0 348
  • 文/不壞的土叔 我叫張陵,是天一觀的道長孵坚。 經(jīng)常有香客問我粮宛,道長,這世上最難降的妖魔是什么卖宠? 我笑而不...
    開封第一講書人閱讀 56,470評論 1 283
  • 正文 為了忘掉前任巍杈,我火速辦了婚禮,結(jié)果婚禮上扛伍,老公的妹妹穿的比我還像新娘筷畦。我一直安慰自己,他們只是感情好蜒秤,可當(dāng)我...
    茶點故事閱讀 65,550評論 6 385
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著亚斋,像睡著了一般作媚。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上帅刊,一...
    開封第一講書人閱讀 49,806評論 1 290
  • 那天纸泡,我揣著相機與錄音,去河邊找鬼赖瞒。 笑死女揭,一個胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的栏饮。 我是一名探鬼主播吧兔,決...
    沈念sama閱讀 38,951評論 3 407
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼袍嬉!你這毒婦竟也來了境蔼?” 一聲冷哼從身側(cè)響起灶平,我...
    開封第一講書人閱讀 37,712評論 0 266
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎箍土,沒想到半個月后逢享,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 44,166評論 1 303
  • 正文 獨居荒郊野嶺守林人離奇死亡吴藻,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 36,510評論 2 327
  • 正文 我和宋清朗相戀三年瞒爬,在試婚紗的時候發(fā)現(xiàn)自己被綠了。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片沟堡。...
    茶點故事閱讀 38,643評論 1 340
  • 序言:一個原本活蹦亂跳的男人離奇死亡侧但,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出弦叶,到底是詐尸還是另有隱情俊犯,我是刑警寧澤,帶...
    沈念sama閱讀 34,306評論 4 330
  • 正文 年R本政府宣布伤哺,位于F島的核電站燕侠,受9級特大地震影響,放射性物質(zhì)發(fā)生泄漏立莉。R本人自食惡果不足惜绢彤,卻給世界環(huán)境...
    茶點故事閱讀 39,930評論 3 313
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望蜓耻。 院中可真熱鬧茫舶,春花似錦、人聲如沸刹淌。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,745評論 0 21
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽有勾。三九已至疹启,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間蔼卡,已是汗流浹背喊崖。 一陣腳步聲響...
    開封第一講書人閱讀 31,983評論 1 266
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留雇逞,地道東北人荤懂。 一個月前我還...
    沈念sama閱讀 46,351評論 2 360
  • 正文 我出身青樓,卻偏偏與公主長得像塘砸,于是被迫代替她去往敵國和親节仿。 傳聞我的和親對象是個殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點故事閱讀 43,509評論 2 348