LollipopGo游戲服務(wù)器--啟動(dòng)控制優(yōu)化

之前版本啟動(dòng)順序,如下Windows下控制:

echo start 

echo LoginServer:登錄服務(wù)器啟動(dòng)(http)
start LollipopGo.exe 8891 DT

echo GateWay:網(wǎng)關(guān)服務(wù)器啟動(dòng)(websocket)
start LollipopGo.exe 8888 GW

echo DBServer:數(shù)據(jù)庫(kù)服務(wù)器啟動(dòng)(rpc)
start LollipopGo.exe 8890 DB

echo Global Server:公共服務(wù)器啟動(dòng)(websocket,內(nèi)服務(wù))
start LollipopGo.exe 8894 GL

echo GM server :服務(wù)器啟動(dòng)(http)
start LollipopGo.exe 8892 GM

echo DSQ server :服務(wù)器啟動(dòng)(websocket)
echo LollipopGo.exe 8895 DSQ

exit

但是啟動(dòng)后我們會(huì)看到大量的log,雖然這些log后期回去掉;但是啟動(dòng)后發(fā)下很多l(xiāng)og是在啟動(dòng)的時(shí)候出現(xiàn)的,如下
以DSQ服務(wù)器為例子:

var addrDSQ = flag.String("addrDSQ", "127.0.0.1:8888", "http service address") // 鏈接gateway
var ConnDSQ *websocket.Conn                                                    // 保存用戶的鏈接信息,數(shù)據(jù)會(huì)在主動(dòng)匹配成功后進(jìn)行鏈接
var ConnDSQRPC *rpc.Client                                                     // 鏈接DB server
var DSQAllMap map[string]*RoomPlayerDSQ                                        // 游戲邏輯存儲(chǔ)
var DSQ_qi = []int{                                                            // 1-8 A ;9-16 B ; 17 未翻牌; 18 已翻牌
        Proto2.Elephant, Proto2.Lion, Proto2.Tiger, Proto2.Leopard, Proto2.Wolf, Proto2.Dog, Proto2.Cat, Proto2.Mouse,
        Proto2.Mouse + Proto2.Elephant, Proto2.Mouse + Proto2.Lion, Proto2.Mouse + Proto2.Tiger, Proto2.Mouse + Proto2.Leopard,
        Proto2.Mouse + Proto2.Wolf, Proto2.Mouse + Proto2.Dog, Proto2.Mouse + Proto2.Cat, 2 * Proto2.Mouse}
var cacheDSQ *cache2go.CacheTable
var DSQLeftTime int = 30
var DSQTimeSpeed = time.Millisecond * 2000
var TimeOutDSQ chan map[int]int64

type RoomPlayerDSQ struct {
        RoomID       int
        IsRoomID     bool
        OpenIDA      string
        OpenIDB      string
        OpenIDA_Seat int       // 默認(rèn)是0; 1 表示坐下
        OpenIDB_Seat int       // 默認(rèn)是0; 1 表示坐下
        Default      [4][4]int // 未翻牌的
        ChessData    [4][4]int // 棋盤數(shù)據(jù)
        ReChessData  [4][4]int // 重連棋盤數(shù)據(jù)
        AChessNum    int       // A的剩余的棋子的數(shù)量
        BChessNum    int       // B的剩余的棋子的數(shù)量
        GoAround     int       // 回合,如果每人出10次都沒(méi)有吃子,系統(tǒng)推送平局;第七個(gè)回合提示數(shù)據(jù) 第10局平局
        LeftTime     int       // 剩余的時(shí)間
}

/*

        -----------------------------------------
        |                                                                                |
        |        [0,0]01        [1,0]02        [2,0]03        [3,0]04                |
        |                                                                                |
        |                                                                                |
        |        [0,1]05        [1,1]06        [2,1]07        [3,1]08                |
        |                                                                                |
        |                                                                                |
        |        [0,2]09        [1,2]10        [2,2]11        [3,2]12                |
        |                                                                            |
        |                                                                                |
        |        [0,3]13        [1,3]14        [2,3]15        [3,3]16                |
        |                                                                                |
        -----------------------------------------

*/

// 初始化操作
func init() {
        TimeOutDSQ = make(chan map[int]int64, 10000)
        //if strServerType == "DSQ" {
        if !initDSQGateWayNet() {
                fmt.Println("鏈接 gateway server 失敗!")
                return
        }
        fmt.Println("鏈接 gateway server 成功!")
        // 初始化數(shù)據(jù)
        initDSQNetRPC()
        //}
        return
}

func initDSQNetRPC() {
        client, err := jsonrpc.Dial("tcp", service)
        if err != nil {
                log.Debug("dial error:", err)
        }
        ConnDSQRPC = client
        cacheDSQ = cache2go.Cache("LollipopGo_DSQ")
}

func initDSQGateWayNet() bool {

        fmt.Println("用戶客戶端客戶端模擬!")
        log.Debug("用戶客戶端客戶端模擬!")
        url := "ws://" + *addrDSQ + "/GolangLtd"
        conn, err := websocket.Dial(url, "", "test://golang/")
        if err != nil {
                fmt.Println("err:", err.Error())
                return false
        }
        ConnDSQ = conn
        go GameServerReceiveDSQ(ConnDSQ)
        initConnDSQ(ConnDSQ)
        return true
}

func initConnDSQ(conn *websocket.Conn) {
        fmt.Println("---------------------------------")
        data := &Proto2.DSQ2GW_ConnServer{
                Protocol:  Proto.G_GameDSQ_Proto, // 游戲主要協(xié)議
                Protocol2: Proto2.DSQ2GW_ConnServerProto2,
                ServerID:  util.MD5_LollipopGO("8895" + "DSQ server"),
        }
        fmt.Println(data)
        PlayerSendToServer(conn, data)
        return
}

因?yàn)榇嬖诿總€(gè)服務(wù)器有init()函數(shù),導(dǎo)致了啟動(dòng)時(shí)候出現(xiàn)大量無(wú)用的初始化數(shù)據(jù),剛剛測(cè)試一個(gè)例子 如下:

26.png

每個(gè)文件中只有 如下init函數(shù):

package main

import (
        "fmt"
)

func init() {
        fmt.Println("AAAAA init")
}

測(cè)試結(jié)果:


27.png

測(cè)試結(jié)果可以看出,Windows下是按照文件順序執(zhí)行對(duì)應(yīng)的init函數(shù)的,所有這個(gè)可以作為參考;在進(jìn)一步優(yōu)化我們的游戲服務(wù)器啟動(dòng)順序;具體優(yōu)化版本更新請(qǐng)查看github版本號(hào)

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

  • 一、Python簡(jiǎn)介和環(huán)境搭建以及pip的安裝 4課時(shí)實(shí)驗(yàn)課主要內(nèi)容 【Python簡(jiǎn)介】: Python 是一個(gè)...
    _小老虎_閱讀 6,311評(píng)論 0 10
  • 將基本數(shù)據(jù)類型轉(zhuǎn)換為字符串類型 對(duì)于Number類型和Boolean類型來(lái)說(shuō), 直接利用變量調(diào)用toString(...
    籮篼閱讀 501評(píng)論 0 0
  • 堅(jiān)持每日一千字,來(lái)到了第80天,有上過(guò)首頁(yè),但最高的閱讀量只有1000+,也快寫了10萬(wàn)字了吧。 一開始,就沒(méi)有給...
    小螢子閱讀 305評(píng)論 14 6
  • 每周一畫的第二周,主題是禪陀羅,這周的產(chǎn)量上升了??!安怡、禪悟、藍(lán)天白云、雪花中的愛(ài)戀、忘憂筱草都是大戶呢!雪花中...
    小伍的今天閱讀 680評(píng)論 0 1

友情鏈接更多精彩內(nèi)容