gonet - golang实现的一个游戏服务器框架

网友投稿 1571 2022-10-27

gonet - golang实现的一个游戏服务器框架

gonet - golang实现的一个游戏服务器框架

A game server skeleton implemented with golang.

注意(NOTICE)

欢迎加入QQ群: 459420581 (Gopher成都,讨论一切与go有关的话题)

gonet/2

gonet1已停止维护(I no longer maintain this, please move forward to http://github.com/gonet2 )

建议移步至新架构: http://gonet2.github.io

部署:

Game Server(GS): 玩家直接连接GS, 处理玩家逻辑,并与 HUB/SS 通信,GS存在若干个。 (Players connect directly to GS(s) and process, GS(s) will communication with HUB) Hub Server(HUB): 若干个GS 连接到一个HUB, 只存在一个HUB,维护基础的全局信息,以及 GS<--->GS 的消息转发. (packet forwarding) Stats Server(SS): 统计服务器,根据玩家的行为,记录策划需要的数据,以便于后期统计。 统计属于事后分析,数据量较大,性能需求不同, 故单独列为一个服务器。

通信原则:

GS到HUB/SS的通信,都是Call同步调用,即GS必须等待ACK。HUB到GS的通信,只有forward数据包。单播消息在玩家离线时会存入db, 登录后的启动过程 GS 直接读取db,并forward给玩家goroutine。(持久化)多播消息会发送给所有的在线玩家(非持久化)广播消息会发送给所有的在线玩家(非持久化)

服务器状态一致性

GS节点可以单独重启HUB 重启后,GS必须全部重启SS 可随意重启,不影响业务

安装先决条件:

确保安装好graphviz, gawk确保安装好mongodb确保config.ini中的mongo_xxxx配置正确export GOPATH='当前目录'

安装:

xtaci@ubuntu:~$ git clone https://github.com/xtaci/gonetxtaci@ubuntu:~$ cd gonetxtaci@ubuntu:/gonet$ export GOPATH=/gonetxtaci@ubuntu:~/gonet$ go get gopkg.in/mgo.v2xtaci@ubuntu:~/gonet$ makextaci@ubuntu:~/gonet$ ./start-test.sh

版权声明:本文内容由网络用户投稿,版权归原作者所有,本站不拥有其著作权,亦不承担相应法律责任。如果您发现本站中有涉嫌抄袭或描述失实的内容,请联系我们jiasou666@gmail.com 处理,核实后本网站将在24小时内删除侵权内容。

上一篇:使用Spring特性实现接口多实现类的动态调用方式
下一篇:第8周拓展实践 7.谁是小偷
相关文章

 发表评论

暂时没有评论,来抢沙发吧~