AirJD 焦点
AirJD

没有录音文件
00:00/00:00
加收藏

Go语言游戏项目应用情况汇报 by 达达@真有趣(神仙道)

发布者 gopher   简介 Gopher
发布于 1430385598694  浏览 8039 关键词 Go, 游戏 
分享到

第1页

Go语⾔言游戏项⺫⽬目应⽤用情况汇报

厦门真有趣信息科技有限公司 达达



第2页

项⺫⽬目介绍

• 2012年 - 2015年,仙侠道⺴⽹网⻚页版,使⽤用Go语⾔言替代神仙 道时期的Erlang,开发流程和主要架构不变

• 2014年 - 2015年,仙侠道⼿手机版,在原有架构基础上拆分 游戏逻辑服务器,分离互动功能



第3页

游戏服务端的挑战

• 请求频繁 • 实时性要求⾼高(百毫秒的延迟便可被感知) • 开发效率要求⾼高(每周⼀一更) • 运维效率要求⾼高(最好是别运维。。。)



第4页

我们做了哪些事情

• 通讯层:协议描述语⾔言以及代码⾃自动⽣生成 • 业务层:顺序结构以及接⼝口注册 • 数据层:映射MySQL的内存数据库以及代码⾃自动⽣生成



第5页

通讯层

• 通讯协议描述⽂文档的格式选择 • XML、JSON • Protobuf • ⾃自定义语法 • 可视化编辑



第6页

通讯协议描述⽂文档⽚片段



第7页

通讯协议解包封包代码⽚片段



第8页

业务层

• 从结构上屏蔽所有可能发⽣生的阻塞 • ⽂文件读写 • RPC调⽤用 • chan阻塞

• 尽可能提⾼高响应速度 • 数据离CPU越近越好 • 避免数据复制和⼤大集合遍历

• 通过注册接⼝口防⽌止循环引⽤用



第9页

业务模块公共接⼝口声明



第10页

业务模块接⼝口实现



第11页

业务模块接⼝口调⽤用



第12页

数据层

• 玩家数据库切⽚片,减⼩小查询时的集合 • ⽀支持内存事务 • 以事务为单位同步到数据库 • ⽀支持Redo、Undo以及数据挖掘的同步⽇日志 • GC优化



第13页

内存数据库代码⽚片段



第14页

内存数据库事务(⽰示意)



第15页

内存数据库事务回滚



第16页

事务⽇日志(⽰示意)



第17页

使⽤用lua脚本对同步⽇日志进⾏行数据挖掘



第18页

内存数据库的GC优化 - CGO



第19页

内存数据库的GC优化 - 数据读取



第20页

内存数据库的GC优化 - 数据存⼊入



第21页

谢谢⼤大家



支持文件格式:*.pdf
上传最后阶段需要进行在线转换,可能需要1~2分钟,请耐心等待。