goboot
概述
goboot是个一个Golang开发过程中,使用的一些经验总结的库,涵盖Web
开发和游戏开发领域。
快速开始
开发一个http服务器
goboot开发http服务器,只需要传入调用httpapi
包,传入配置文件地址,监听端口,以及实例ID:
instance := httpapi.New(*configPath, *addr, *instanceId)
...
// 启动
boot.BootServe(instance)
通过模块化的Module,来建立API,一个Module要遵循httpapi.Module
的定义:
Module interface {
// 初始化模块
Init(app *App)
// 模块的分组路由
Group() Group
}
依赖nats做消息转发,Etcd做服务注册
开发一个gRPC服务
goboot开发gRPC服务器,同样只需要使用:
instance := server.New(*name, *configPath, *addr, *instanceId)
boot.BootServe(instance)
不同的是,这里的server需要定制protobuf文件实现。
开发一个游戏服务器
goboot开发游戏服务器,使用的gameapi
包的实现:
instance := gameapi.New(*configPath, *addr, *instanceId)
boot.BootServe(instance)
同样使用的模块化的管理接口,不同的是,gameapi使用的opcode->protobufMessage
的映射管理作为路由:
Moddule interface {
// 初始化模块
Init(app *App)
// 模块的分组路由
Group() map[uint16]Handler
}
依赖Etcd做服务注册
惯例
goboot希望开发能够遵循一些管理来实现,这样可以大部分减少描述的篇幅,遵循惯例,也方便多人开发的协作。因此,推崇一下惯例:
- 所有实例的配置文件都放在根目录下的
configs
目录
- 所有实例的配置文件中,设定日志配置条件
# 日志配置
Logger:
# 日志输出级别,debug->info->warn->error
Level: "debug"
# 日志文件的输出分类,文件名是 {target}_{instanceId}.log
Target: "gameserver.api"
# 日志输文件夹
Outpath: "./logs"
- 所有
api
接口的实现,都需要参考Module实现模块化
- 所有
service
的实现,必须通过protobuff定义gRPC实现
- 其他惯例,可以参考示例中的参考实现
参考