云原生项目实践 DevOps(GitOps)+K8S+BPF+SRE,从 0 到 1 使用 Golang 开发生产级麻将游戏服务器—第 2 篇

2021-02-03 22:54:53 +08:00
 Roy3

云原生项目实践 DevOps(GitOps)+K8S+BPF+SRE,从 0 到 1 使用 Golang 开发生产级麻将游戏服务器—第 2 篇

系列文章

  1. 云原生项目实践 DevOps(GitOps)+K8S+BPF+SRE,从 0 到 1 使用 Golang 开发生产级麻将游戏服务器—第 1 篇

介绍

这将是一个完整的,完全践行 DevOps/GitOpsKubernetes 上云流程的 Golang 游戏服务器开发的系列教程。

这个系列教程是对开源项目 Nanoserver 的完整拆解,旨在帮助大家快速上手 Golang (游戏)服务器后端开发。通过实践去理解 Golang 开发的精髓 —— Share memory by communication(通过通信共享内存)

同时这个项目可能还会涉及到 Linux 性能调优( BPF 相关的工具)和系统保障( SRE )的相关的工作。

脚手架项目

基础回顾

Go Modules

我的本地环境:

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]

使用 “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 # 入口
2003 次点击
所在节点    推广
1 条回复
m0cha
2021-02-04 06:29:22 +08:00
收藏了

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/751078

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX