## Pro2dServer 这是pro2d项目的服务器, 使用golang搭建 ## 技术点 一个服务器需要的组件: * 数据库 * 日志 * 集群 * 分布式 * 热更 技术点: * mongo * redis * etcd * proto + models 查询 * golang plugin ## 目录结构 ```text . ├── bin ├── cmd //入口文件 ├── conf //配置文件 ├── csvdata //csv的golang struct ├── doc //文档 ├── docker //docker部署 ├── protos │   ├── doc //协议文档 │   └── pb //生成的pb.go文件 ├── src //逻辑目录 │   ├── actions //逻辑处理 │   ├── common │   ├── components //组件 │   │   ├── db │   │   ├── etcd │   │   ├── jwt │   │   ├── logger │   │   └── net //网络组件(http + tcp) │   ├── models //数据模型 │   ├── plugin //逻辑热更的插件 │   └── utils //通用函数 ├── test //测试 ├── tools //工具(proto自动生成协议号,csv自动生成struct) ``` ## 环境安装 protoc二进制下载地址: https://github.com/protocolbuffers/protobuf/releases/tag/v21.0-rc2 >win下载3.8版本。其他平台随意,没遇到问题。 protoc-go-inject-tag: 目的是往protos文件中打入自定义标签 ```shell $ go get github.com/favadi/protoc-go-inject-tag ``` protoc-go & etcd ```shell $ go get go.etcd.io/etcd/client/v3 $ go get google.golang.org/protobuf/cmd/protoc-gen-go $ go install google.golang.org/protobuf/cmd/protoc-gen-go $ go get google.golang.org/grpc/cmd/protoc-gen-go-grpc $ go install google.golang.org/grpc/cmd/protoc-gen-go-grpc ``` ## 文档 * [证书制作](doc/cret.md) * [包组成结构](doc/proto.md) * [go plugin热更的使用](doc/plugin.md) ## Usage ### 编译 & 运行 && 游戏服 & 登录服务 ```shell $ make game $ make account ``` 测试 ```shell $ make test ``` ###