云原生项目实践 DevOps(GitOps)+K8S+BPF+SRE,从 0 到 1 使用 Golang 开发生产级麻将游戏服务器第 2 篇
这将是一个完整的,完全践行 DevOps/GitOps
与 Kubernetes
上云流程的 Golang 游戏服务器开发的系列教程。
这个系列教程是对开源项目 Nanoserver
的完整拆解,旨在帮助大家快速上手 Golang (游戏)服务器后端开发。通过实践去理解 Golang 开发的精髓 Share memory by communication(通过通信共享内存)
。
同时这个项目可能还会涉及到 Linux
性能调优( BPF 相关的工具)和系统保障( SRE )的相关的工作。
nanoserver
抽出来的,旨在帮助大家快速理解这个 Mahjong Server
是如何搭出来的。单体架构
理解整体业务 -> 然后再 分布式 Nano Server
+ 微服务
改造( Step-by-Step )。我的本地环境:
go version # go version go1.14.14 darwin/amd64
go mod help
Go mod
提供对 modules
操作的访问。
请注意,所有 go
命令都内置了对 modules
的支持, 不只是'go mod'
。例如,日常的依赖关系添加(adding),删除(removing),升级(upgrading)和降级(downgrading)应该使用 'go get'
完成。 有关 module
功能的概述,请参见 'go help modules'
。
用法:
go mod <command> [arguments]
download
将模块下载到本地缓存edit
通过工具或脚本编辑 go.modgraph
打印模块依赖图init
在当前目录中初始化新模块tidy
添加缺少的内容并删除未使用的模块vendor
制作第三方依赖包( vendored )的依赖副本verify
验证依赖项具有预期的内容why
解释为什么需要软件包( packages )或模块( modules )使用 “go help mod <命令>”
可获取有关命令的更多信息。
├── configs # 配置文件 │ ├── config.toml ├── db # 数据库( xorm )相关 │ ├── model │ │ ├── struct.go # database schema │ ├── const.go │ ├── logger.go │ ├── model.go ├── internal │ ├── game # 游戏服务器( Nano server ) │ │ ├── crypto.go │ │ ├── game.go │ │ ├── manager.go │ ├── web # web 服务器(提供 API ) │ │ ├── web.go ├── pkg # 项目基础包 │ ├── algoutil # 常用工具函数 │ │ ├── algoutil.go │ ├── crypto # md5 rsa sha1 x509 base64 相关工具 │ │ ├── crypto.go │ ├── errutil # 游戏服务器中错误码和错误信息统一管理 │ │ ├── code.go │ │ ├── errutil.go │ ├── whitelist # 白名单验证工具函数 │ │ ├── white_list.go ├── protocol # 协议(放所有游戏) │ ├── web.go ├── main.go # 入口
![]() | 1 m0cha 2021-02-04 06:29:22 +08:00 via iPhone 收藏了 |