云原生项目实践 DevOps(GitOps)+K8S+BPF+SRE,从 0 到 1 使用 Golang 开发生产级麻将游戏服务器第 2 篇 - V2EX
V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
Roy3
V2EX    推广

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

  •  
  •   Roy3 2021-02-03 22:54:53 +08:00 2403 次点击
    这是一个创建于 1713 天前的主题,其中的信息可能已经有所发展或是发生改变。

    云原生项目实践 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 )的相关的工作。

    脚手架项目

    • 脚手架是基于 nanoserver 抽出来的,旨在帮助大家快速理解这个 Mahjong Server 是如何搭出来的。
    • 我们先单体架构理解整体业务 -> 然后再 分布式 Nano Server + 微服务 改造( Step-by-Step )。
    • Demo:go-mahjong-server

    基础回顾

    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] 
    • download 将模块下载到本地缓存
    • edit 通过工具或脚本编辑 go.mod
    • graph 打印模块依赖图
    • 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 条回复    2021-02-04 06:29:22 +08:00
    m0cha
        1
    m0cha  
       2021-02-04 06:29:22 +08:00 via iPhone
    收藏了
    关于     帮助文档     自助推广系统     博客     API     FAQ     Solana     2642 人在线   最高记录 6679       Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 25ms UTC 15:21 PVG 23:21 LAX 08:21 JFK 11:21
    Do have faith in what you're doing.
    ubao snddm index pchome yahoo rakuten mypaper meadowduck bidyahoo youbao zxmzxm asda bnvcg cvbfg dfscv mmhjk xxddc yybgb zznbn ccubao uaitu acv GXCV ET GDG YH FG BCVB FJFH CBRE CBC GDG ET54 WRWR RWER WREW WRWER RWER SDG EW SF DSFSF fbbs ubao fhd dfg ewr dg df ewwr ewwr et ruyut utut dfg fgd gdfgt etg dfgt dfgd ert4 gd fgg wr 235 wer3 we vsdf sdf gdf ert xcv sdf rwer hfd dfg cvb rwf afb dfh jgh bmn lgh rty gfds cxv xcv xcs vdas fdf fgd cv sdf tert sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf shasha9178 shasha9178 shasha9178 shasha9178 shasha9178 liflif2 liflif2 liflif2 liflif2 liflif2 liblib3 liblib3 liblib3 liblib3 liblib3 zhazha444 zhazha444 zhazha444 zhazha444 zhazha444 dende5 dende denden denden2 denden21 fenfen9 fenf619 fen619 fenfe9 fe619 sdf sdf sdf sdf sdf zhazh90 zhazh0 zhaa50 zha90 zh590 zho zhoz zhozh zhozho zhozho2 lislis lls95 lili95 lils5 liss9 sdf0ty987 sdft876 sdft9876 sdf09876 sd0t9876 sdf0ty98 sdf0976 sdf0ty986 sdf0ty96 sdf0t76 sdf0876 df0ty98 sf0t876 sd0ty76 sdy76 sdf76 sdf0t76 sdf0ty9 sdf0ty98 sdf0ty987 sdf0ty98 sdf6676 sdf876 sd876 sd876 sdf6 sdf6 sdf9876 sdf0t sdf06 sdf0ty9776 sdf0ty9776 sdf0ty76 sdf8876 sdf0t sd6 sdf06 s688876 sd688 sdf86