xingo 集群服务器入门教程
xingo集群服务器推荐目录结构:
.
├── admin_server 管理服务,可以实现集群的GM管理操作,支持http方式访问
│ ├── test_admin_http.go 对外管理的http接口
│ └── test_admin_rpc.go 对内提供给集群其他节点访问的rpc接口
├── conf 集群服务器配置
│ ├── clusterconf.json 分布式架构定义
│ └── server.json 服务器配置
├── game_server 游戏服务器逻辑
├── gate_server gate服务器逻辑
│ ├── gateserver.go 这里可以绑定节点链接和断开处理函数
│ └── test_gate_rpc.go 对内rpc接口
├── log 集群服务器日志文件/支持按服务器/日志大小/时间切割日志
│ ├── cluster.log
│ ├── gate1.log
│ ├── gate2.log
│ └── net.log
├── master.go 管理服务
├── net_server 对外的网关服务器负责于客户端通信
│ ├── 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"))//关联集群配置
s.AddRpcRouter(&sys_rpc.MasterRpc{})//添加rpc接口
s.StartMaster()//开启服务
}
}server.gopackage 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{})
/*
注册分布式服务器
*/
//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()
}
}启动:
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