gonet 是一个用golang实现的游戏服务器框架。
部署:GameServer(GS):玩家直接连接GS,处理玩家逻辑,并与HUB/SS通信,GS存在若干个。
HubServer(HUB):若干个GS连接到一个HUB,只存在一个HUB,维护基础的全局信息,以及GS<--->GS的消息转发.
StatsServer(SS):统计服务器,根据玩家的行为,记录策划需要的数据,以便于后期统计。统计属于事后分析,数据量较大,性能需求不同,故单独列为一个服务器。
通信原则:GS到HUB/SS的通信,都是Call同步调用,即GS必须等待ACK。
HUB到GS的通信,只有forward数据包。
单播消息在玩家离线时会存入db,登录后的启动过程 GS 直接读取db,并forward给玩家goroutine。(持久化)
多播消息会发送给所有的在线玩家(非持久化)
广播消息会发送给所有的在线玩家(非持久化)
服务器状态一致性GS节点可以单独重启
HUB重启后,GS必须全部重启
SS可随意重启,不影响业务
安装先决条件:确保安装好bzr,graphviz,gawk
确保安装好mongodb
确保config.ini中的mongo_xxxx配置正确
exportGOPATH='当前目录'
安装:xtaci@ubuntu:~$gitclone https://github.com/xtaci/gonet
xtaci@ubuntu:~$cdgonet
xtaci@ubuntu:~/gonet$exportGOPATH=~/gonet
xtaci@ubuntu:~/gonet$gogetlabix.org/v2/mgo
xtaci@ubuntu:~/gonet$make
xtaci@ubuntu:~/gonet$./start-test.sh
评论