xingo 集群服務(wù)器入門教程

2018-01-05 16:30 更新

xingo集群服務(wù)器推薦目錄結(jié)構(gòu):

.
├── admin_server                           管理服務(wù),可以實(shí)現(xiàn)集群的GM管理操作,支持http方式訪問
│   ├── test_admin_http.go              對(duì)外管理的http接口
│   └── test_admin_rpc.go               對(duì)內(nèi)提供給集群其他節(jié)點(diǎn)訪問的rpc接口
├── conf                                         集群服務(wù)器配置
│   ├── clusterconf.json                    分布式架構(gòu)定義
│   └── server.json                           服務(wù)器配置
├── game_server                             游戲服務(wù)器邏輯
├── gate_server                               gate服務(wù)器邏輯
│   ├── gateserver.go                        這里可以綁定節(jié)點(diǎn)鏈接和斷開處理函數(shù)
│   └── test_gate_rpc.go                   對(duì)內(nèi)rpc接口
├── log                                            集群服務(wù)器日志文件/支持按服務(wù)器/日志大小/時(shí)間切割日志
│   ├── cluster.log
│   ├── gate1.log
│   ├── gate2.log
│   └── net.log
├── master.go                                  管理服務(wù)
├── net_server                                 對(duì)外的網(wǎng)關(guān)服務(wù)器負(fù)責(zé)于客戶端通信
│   ├── core
│   │   ├── player.go
│   │   └── playermgr.go
│   ├── netserver.go
│   ├── test_net_api.go
│   └── test_net_rpc.go
├── pb
│   └── msg.pb.go
├── README.md
└── server.go                                    xingo server



master.go

package main

import (
       "path/filepath"
       "github.com/viphxin/xingo/sys_rpc"
       "github.com/viphxin/xingo/clusterserver"
)

func main() {
       dir, err := filepath.Abs(filepath.Dir("."))
       if err == nil{
              s := clusterserver.NewMaster(filepath.Join(dir, "conf", "clusterconf.json"))//關(guān)聯(lián)集群配置
              s.AddRpcRouter(&sys_rpc.MasterRpc{})//添加rpc接口
              s.StartMaster()//開啟服務(wù)
       }
}
server.go

package main

import (
       "github.com/viphxin/xingo/clusterserver"
       "github.com/viphxin/xingo/sys_rpc"
       "os"
       "path/filepath"
       "xingo_cluster/net_server"
       "xingo_cluster/gate_server"
       "xingo_cluster/admin_server"
        _ "net/http"
       _ "net/http/pprof"
)

func main() {
       //pprof
       //go func() {
       //     println(http.ListenAndServe("localhost:6060", nil))
       //}()

       //server code
       args := os.Args
       dir, err := filepath.Abs(filepath.Dir("."))
       if err == nil{
              s := clusterserver.NewClusterServer(args[1], filepath.Join(dir, "conf", "clusterconf.json"))
              s.AddRpcRouter(&sys_rpc.ChildRpc{})
              s.AddRpcRouter(&sys_rpc.RootRpc{})
              /*
              注冊(cè)分布式服務(wù)器
              */
              //net server
              s.AddModule("net", &net_server.TestNetApi{}, &net_server.TestNetRpc{})
              //gate server
              s.AddModule("gate", nil, &gate_server.TestGateRpc{})
              //admin server
              s.AddModule("admin", &admin_server.TestAdminHttp{}, nil)

              s.StartClusterServer()
       }
}

啟動(dòng):

go run master.go
go run server.go gate1
go run server.go gate2
go run server.go net1
go run server.go net2
go run server.go net3
go run server.go net4
go run server.go admin

以上內(nèi)容是否對(duì)您有幫助:
在線筆記
App下載
App下載

掃描二維碼

下載編程獅App

公眾號(hào)
微信公眾號(hào)

編程獅公眾號(hào)