方振镇 华东架构师大会
SNS 和 Web 游戏基本对比 SNS 游戏后台 Web 游戏后台 如何选择 问答
交互性 社交游戏 与好友 ( 已确定 ) 之间的轻互动 ( 偷菜, 停车, 等 ) 网页游戏 可与同服所有人进行互动 ( 组队, 团战, 等 )
游戏体验 社交游戏 单一大服 单服人数的不可预知性 ( 平台 ) 网页游戏 很容易分服分区 可控单服在线人数
后台架构 社交游戏 大并发数据量处理 功能型的模块划分 网页游戏 逻辑设计 可控单服人数下的并发请求延迟控制
基本服务器架构 任务服务器 其他
Flash 客户端程序 PHP 客户端 ( 扩展 ) Flash 客户端程序 任务服务器好友服务器透传消息服务器 统计服务器中间件服务器匹配服务器 排名服务器 DB 通用 RPC 模块 双机热备模块 服务器群
基本框架 Flash 客户端程序 服务器 / 单进程 自定义 PHP 扩展 PHP 进程 / 负载均衡
逻辑框架 任务服务主程序 Lua Proxy MySQL Lua Script Layer 1. 处理 lua 网络请求 2. 处理 lua 数据库请求 3. 提供大量功能函数 4. 保留少量制约性能逻辑 1. 请求至 Server 2. 请求至 lua 1. 任务定义静态数据 2. 玩家实时内存数据 3. 所有任务处理逻辑 1. 玩家任务数据存储 2. 分库分表
特点 任务定义的通用化 ( 基本脱离了具体业务 ) 任务定义的线上实时更新 (DB -> Server) 任务简单逻辑和 bug 的线上实时更新 (Lua with DATA) 相关
传统 RPG 游戏服务器架构 一个休闲竞技游戏服务器架构 通用服务逻辑结构
client 登录 (web session) 网关 (N) 游戏服务 (N) 会话服务 DBProxy(cache) MySQL 管理服务器
client 登录 (web session, 平台 ) 网关 (N) 游戏服务 战斗服务 (N) DBProxy(cache) MySQL
逻辑线程结构 网络线程 (N) 主逻辑线程 (1)
网络 I/O 流程 接受 队列 发送 队列 网络线程 (N) 主逻辑线程 (1)
业务 ( 模块 ) 分离还是耦合
多线程 VS. 单线程
自定义协议 VS. 开源协议库 protobuf, msgpack, etc. struct x_head_t { int8_t cmd; int8_t sub_cmd; int16_t len; };
开发效率 Boost, ICE, etc. C#, Java? 真正需要什么 ( 业务 )? 坐飞机到超市购物 ? 咱骑自行车去美国吧 ?
GTI And Virident 世纪互联 AdMaster 的创始人洪倍 联想员工李鹏程 中国(上海)创业者公共实训基地 2012 华东架构师大会感谢的协办单位和捐助个人: 预告信息: 2013 年 5 月 18 日,将于上海举办 2013 华东数据库技术大会 人数规模: 500 人 会务合作,联系人:金官丁,联系电话: , 邮箱地址:
Q&A