申请试用
HOT
登录
注册
 
使用Golang实现万人同服的游戏服务器
0 点赞
0 收藏
4下载
无厘头
/
发布于
/
463
人观看
  • 游戏服务器开发面临的挑战
  • 服务器开发对语言的需求
  • 使用Golang进行游戏服务器开发
  • 成功案例
展开查看详情

1.使用Golang实现万人同服的游戏服务器 游族·袁锋峰

2.目 录 C O N T E N T I N D E X 00. 游戏服务器开发面临的挑战 01. 服务器开发对语言的需求 10. 使用Golang进行游戏服务器开发 11. 成功案例

3.00 游戏服务器开发面临的挑战

4. 0 0 . 游 戏 服 务 器 设 计 面 临 的 挑 战 框架层面的挑战 011 高并发 十万级别PCU 100 百万级别的TPS 高可用 玩家对服务的可用性非常敏感 001 500ms响应延迟的红线 101 服务器演算 30分钟停止服务意味着永久流失 高爆发 50,000每分钟的玩家新增数量 游戏世界的模拟和同步,产生 大量的服务器演算和主动的信 息Push 010 数据读写频度高 单玩家每秒10次的请求频度 单次请求平均5个以上关键属性的读写 110 高迁徙率 高达60%以上的次日流失率

5.0 0 . 游 戏 服 务 器 设 计 面 临 的 挑 战 服务器演算 Request Response 我眼中主流互联网行业的业务模型

6. 0 0 . 游 戏 服 务 器 设 计 面 临 的 挑 战 服务器演算 MMORPG的上行/下行消息量对比 平均为1:5 极端情况下可以到1:50 非主流互联网行业(游戏)的业务模型

7.0 0 . 游 戏 服 务 器 设 计 面 临 的 挑 战 服务器演算 1. 模拟的世界中的定时事件 ① 时间流逝-新的一天 ② 技能buff效果 ③ …… 2. 模拟的世界中的AI行为 ① 巡逻 ② 发现新目标 ③ …… 3. ……

8.0 0 . 游 戏 服 务 器 设 计 面 临 的 挑 战 服务器演算 MMO MMO MMO RTS ARPG 相 SLG 互 影 响 MOBA ARPG 的 范 围 RTS 卡牌 模拟的细节丰富度

9. 0 0 . 游 戏 服 务 器 设 计 面 临 的 挑 战 框架层面的挑战 011 高并发 十万级别PCU 100 百万级别的TPS 高可用 玩家对服务的可用性非常敏感 001 极低的延迟忍受度,500ms响应延迟的红线; 101 服务器演算 30分钟停止服务意味着永久流失 高爆发 50,000每分钟的玩家新增数量 游戏世界的模拟和同步,产生 大量的服务器演算和主动的信 息Push 010 数据读写频度高 单玩家每秒30次的请求频度 单次请求平均5个以上关键属性的读写 110 高迁徙率 高达60%以上的次日流失率

10.0 0 . 游 戏 服 务 器 设 计 面 临 的 挑 战 高并发 TPS = 并发数/平均响应时间 = 10 0.02 5 / /0.01 250 0.01==500 1000 10ms 20ms 我眼中主流互联网行业的高并发之道

11.0 0 . 游 戏 服 务 器 设 计 面 临 的 挑 战 游戏服务器高并发 1. 提高响应速度 单逻辑线程 2. 增加并发数量

12.0 0 . 游 戏 服 务 器 设 计 面 临 的 挑 战 游戏服务器高并发 分区分服

13.0 0 . 游 戏 服 务 器 设 计 面 临 的 挑 战 游戏服务器高并发 全区全服

14.0 0 . 游 戏 服 务 器 设 计 面 临 的 挑 战 游戏服务器高并发 分区分服实际案例

15.0 0 . 游 戏 服 务 器 设 计 面 临 的 挑 战 游戏服务器高并发 全区全服实际案例

16. 0 0 . 游 戏 服 务 器 设 计 面 临 的 挑 战 框架层面的挑战 011 高并发 十万级别PCU 100 百万级别的TPS 高可用 玩家对服务的可用性非常敏感 001 极低的延迟忍受度,500ms响应延迟的红线; 101 服务器演算 30分钟停止服务意味着永久流失 高爆发 50,000每分钟的玩家新增数量 游戏世界的模拟和同步,产生 大量的服务器演算和主动的信 息Push 010 数据读写频度高 单玩家每秒30次的请求频度 单次请求平均5个以上关键属性的读写 110 高迁徙率 高达60%以上的次日流失率

17.0 0 . 游 戏 服 务 器 设 计 面 临 的 挑 战 数据读写频度高 //购买道具 相关的模块:6个 func (dm *BlackMallMgr) uint32) cl.RET { if dm == nil {BuyGoods(goodID 相关的需要存储的属性:8个 log4go.Warn("[BlackMallMgr] BuyGood dm nil") return cl.RET(entity.RET_ENTITY_NOT_EXIST) } //安全检查 if dm.ptrUser == nil { log4go.Warn("[BlackMallMgr] BuyGood ptrUser nil") return cl.RET(entity.RET_ENTITY_NOT_EXIST) } //安全检查 if dm.outData == nil { log4go.Warn("[BlackMallMgr] BuyGood outData nil, UID:%d", dm.ptrUser.UID()) return cl.RET(entity.RET_ENTITY_NOT_EXIST) } //功能是否开启 if !dm.ptrUser.UserModuleM.RoleMgr().UserFunction.IsFuncOpen(uint32(entity.FunctionId_FunctionId_BlackMall)) { log4go.Warn("[BlackMallMgr] BuyGood func not open, UID:%d goodID:%d", dm.ptrUser.UID(), goodID) return cl.RET(entity.RET_FUNCTION_NOT_OPEN) } //物品的配置信息是否存在 cfg := configparse.ParseShopConfigM.BlackGoodInfo(goodID) if cfg == nil { log4go.Warn("[BlackMallMgr] BuyGood config nil, UID:%d goodID:%d", dm.ptrUser.UID(), goodID)

18. 0 0 . 游 戏 服 务 器 设 计 面 临 的 挑 战 框架层面的挑战 011 高并发 十万级别PCU 100 百万级别的TPS 高可用 玩家对服务的可用性非常敏感 001 极低的延迟忍受度,500ms响应延迟的红线; 101 服务器演算 30分钟停止服务意味着永久流失 高爆发 50,000每分钟的玩家新增数量 游戏世界的模拟和同步,产生 大量的服务器演算和主动的信 息Push 010 数据读写频度高 单玩家每秒30次的请求频度 单次请求平均5个以上关键属性的读写 110 高迁徙率 高达60%以上的次日流失率

19.0 0 . 游 戏 服 务 器 设 计 面 临 的 挑 战 高可用 1. 极低的延迟忍受度,500ms响应延迟的红线; 0ms < 延迟 <=200ms 2. 30分钟停止服务意味着永久流失 200ms < 延迟 <=500ms 500ms < 延迟

20. 0 0 . 游 戏 服 务 器 设 计 面 临 的 挑 战 框架层面的挑战 011 高并发 十万级别PCU 100 百万级别的TPS 高可用 玩家对服务的可用性非常敏感 001 极低的延迟忍受度,500ms响应延迟的红线; 101 服务器演算 30分钟停止服务意味着永久流失 高爆发 50,000每分钟的玩家新增数量 游戏世界的模拟和同步,产生 大量的服务器演算和主动的信 息Push 010 数据读写频度高 单玩家每秒30次的请求频度 单次请求平均5个以上关键属性的读写 110 高迁徙率 高达60%以上的次日流失率

21.0 0 . 游 戏 服 务 器 设 计 面 临 的 挑 战 高爆发 游戏的发行方式和热度 会导致玩家、工作室在开服的时候爆发式涌入

22. 0 0 . 游 戏 服 务 器 设 计 面 临 的 挑 战 框架层面的挑战 011 高并发 十万级别PCU 100 百万级别的TPS 高可用 玩家对服务的可用性非常敏感 001 极低的延迟忍受度,500ms响应延迟的红线; 101 服务器演算 30分钟停止服务意味着永久流失 高爆发 50,000每分钟的玩家新增数量 游戏世界的模拟和同步,产生 大量的服务器演算和主动的信 息Push 010 数据读写频度高 单玩家每秒30次的请求频度 单次请求平均5个以上关键属性的读写 110 高迁徙率 高达60%以上的次日流失率

23.0 0 . 游 戏 服 务 器 设 计 面 临 的 挑 战 高迁徙率 目前通常情况下,游戏的次日留存平均在40%左右 三日留存平均在20%左右 七日留存平均在10%左右 随着资料片或者拉回流活动,又会重新被激活

24.0 0 . 游 戏 服 务 器 设 计 面 临 的 挑 战 业务层面 001 需求易变 从策划脑袋里面直接出来的方案,需要做调 整的几率很高。而且需要原方案90%以上的完 成度之后才能看出来是否需要调整 011 需求复杂 战斗逻辑、AI、3D数学… 010 需求常增 双周一个迭代,至少2个大功能,50 个功能优化

25.0 0 . 游 戏 服 务 器 设 计 面 临 的 挑 战 需求易变

26.0 0 . 游 戏 服 务 器 设 计 面 临 的 挑 战 需求常增

27.0 0 . 游 戏 服 务 器 设 计 面 临 的 挑 战 需求复杂

28.0 0 . 游 戏 服 务 器 设 计 面 临 的 挑 战 游戏服务器的设计模式 扩展层(Extension) 内容生产者的贡献 应用层(Framework) 通用的游戏逻辑 组织层(LoadAssign) 服务器角色和负载分配,服务发现,RPC 物理层(BaseLibrary) 网络、线程、存储等底层功能

29.0 0 . 游 戏 服 务 器 设 计 面 临 的 挑 战 游戏服务器的设计模式 Config ID1 Data1 ID2 Data2 HandlerForMsgA HandlerForMsgC HandlerForMsgB ManagerA Cache ManagerB GUID1 Data1 RPC GUID2 Data2 GUID3 Data3 Database Dispatcher Network

0 点赞
0 收藏
4下载