yivgame

Yivgame是用go语言基于go-kit写的一套微服务架构游戏服务器方案,它不是一个框架,是一整套游戏服务器实例,每个模块只保留了一份示例代码实现。除了游戏服务器(长连接),还包含针对前端和后台运营的API接口服务器,运营后台的界面会使用Angular实现。 除了服务器本身之外,还会涉及docker部署的详细配置。

特性

设计实践

微服务架构

领域驱动模型

业务层主要实现游戏或服务器的是核心逻辑,不关心外部实现,对文件系统、数据库等的依赖,业务层使用interface定义接口,由依赖层实现接口方法,并在main中通过依赖注入的方式传递给业务层调用。所以业务层除了引用一些基本的标准库外,几乎不引用第三方包。

事件驱动模型与Kafka

事件驱动模型与数据分析

工程目录结构

无全局变量

数据缓存、数据存盘与Kafka

NewSQL CockroachDB

我从v1.0开始使用CockroachDB,从v1.0到v1.0.6,CockroachDB在特定情况和压力下,一直存在崩溃的问题,自从v1.1发布,崩溃问题没再出现,但是性能一直没有大的改善。因为yivgame的数据几乎都存在内存中,只有存盘的时候需要写db,所以对整个yivgame系统来说,不存在db性能瓶颈。

模型

通信图

通信图

服务组件图

服务组件图

身份认证与鉴权

图

设施依赖

go-kit generator

系统环境

参考

关于设计的一些思考