介绍
DevOps/GitOpsKubernetes
NanoserverShare memory by communication(通过通信共享内存)
Linux
脚手架项目
nanoserverMahjong Server单体架构分布式 Nano Server微服务
基础回顾
Go Modules
我的本地环境:
go mod help
Go modmodules
gomodules'go mod''go get'module'go help modules'
用法:
downloadeditgraphinittidyvendorverifywhy
“go help mod <命令>”
脚手架基本结构
Mahjong Server 基础启动流程
main.go
加载配置文件
configs/config.toml
corewebservergame-serverdatabasewhitelistupdate
启动 Game Server
game.Startup()
config.toml
- 当前游戏服务器版本
- 是否强制更新
- 当前心跳时间间隔
- 当前游戏服务器版本
房卡设置
- 玩家申请加入俱乐部
- 创建一张桌子
- 根据桌号返回牌桌数据
- 设置桌号对应的牌桌数据
- 检查登录玩家关闭应用之前是否正在游戏
- 网络断开后, 重新连接网络
- 网络断开后, 如果ReConnect后发现当前正在房间中, 则重新进入, 桌号是之前的桌号
- 应用退出后重新进入房间
- 理牌结束
- 定缺
- 有玩家请求解散房间
- 玩家语音消息
- 处理踢出玩家和重置玩家消息(来自http)
- ……
- 玩家申请加入俱乐部
- 注册游戏数据包加密管道
pipelineInboundOutbound
- 根据设置,启动游戏服务器(Nano server)
WithPipelineWithHeartbeatIntervalWithLoggerWithSerializerWithComponents
启动 Web Server
web.Startup()
XORM
DSNShowSQLMaxIdleConnMaxOpenConnsyncSchemaasync write channelasync update channelping
- 启用白名单(风控相关功能)
- API 服务注册(业务相关接口)
- 登录
- 注册人数
- 活跃人数
- 同时在线人、桌数
- 留存
- 房卡消耗
- 重置玩家未完成房间状态
- 设置房卡消耗
- 消息广播
- 踢人
- 在线信息
- 玩家充值
- 玩家信息查询
- ……
- 登录
http.ListenAndServeTLS
syscall.SIGINTsyscall.SIGQUITsyscall.SIGKILL
kuberneteskubernetes
SIGINTSIGTERM/health4xx5xxkubernetes
脑图
快速上手开发
Docker Compose 本地一键启动 MySql
上篇已有详细介绍,这里就不赘述了哈。
使用 Air 进行本地开发
☁️ Live reload for Go apps
开发(项目根目录):
使用 VSCode-Go 插件调试程序
VSCode-Go Debugging
Delve
命令面板Go: Install/Update Tools,dlv
开始调试
package mainsource filetest file
使用以下任何一种方式进行调试:
命令面板Debug: Start DebuggingGoRun and DebugsGo