联系方式
- 手机: 15210849081
- 邮箱: hilo.sky.do@gmail.com
- QQ: 25230462
个人信息
- 董瑞 / 男 / 1988
- 本科 / 黑龙江大学 / 计算机科学与技术
工作经历
北京魔方无限科技有限公司 ( 2012年12月 ~ 现在 )
刚开始的1~2年时间主要工作是游戏项目,后来随着公司业务发展,成立平台部门,带领技术团队做平台业务搭建。
游戏支撑系统
- 网关服务:无状态,游戏客户端与网关进行通信,版本更新检测、登录验证、获取服务器列表等。
- 版本服务器:网关后端应用,检测客户端版本,控制客户端更新。
- 分区服务器:网关后端应用,获取可见服务器列表。
- 配置中心:各游戏服务器所属环境配置。
配置资源基于rsync与节点服务器进行同步,并提供agent脚本,应用启动前先执行agent获取资源。节点通过nginx+lua提供身份验证和资源下载。
- 数据统计:日志收集/分析、前端展示。
基于rsync的日志同步,基于shell进行数据分析,使用Tornado + AngularJS做页面展示,这块是业务的薄弱点和痛点。
- 其他系统:公告、版本管理后台、分区管理后台
网关应用本身支持横向扩展,可使用nginx做负载均衡。网关与后端应用使用ice进行socket通信,ice的host配置支持多个且动态感知,从而实现了后端应用的横向扩展和分流。
自有渠道搭建
- 账号系统:用户名、手机号、邮箱注册,token生成与校验。
仅有自己公司游戏使用,用户量不高,只做了负载均衡,可横向扩展,没增加缓存。
- 支付系统:集成支付宝、微信支付、爱贝支付、台湾MyCard。
- SDK系统:基于webview,服务端提供Android/IOS通用html5页面。
统一了客户端逻辑,界面多平台复用。但也发现了页面加载会卡顿等现象,不如系统原生界面响应快。
帐号系统、支付系统采用SpringMVC,SDK服务端采用Flask+Jinja2进行页面渲染。(当时考虑Python的requests调用后端接口比较方便,但Flask不如Tornado性能高)
第三方SDK接入
- 渠道管理:为各游戏分配渠道ID,配置登录、支付参数,将配置同步到用户中心、计费中心。
Flask + AngularJS
- 用户中心:帐号关联,生成唯一用户ID。
网关后端应用
- 计费中心:接收充值通知,保存订单信息,并通知游戏。
- 计费后台:查询订单、订单补发、游戏充值,查询各渠道流水,提供对账数据等。
Tornado + AngularJS
与第三方对接的逻辑打成jar包,上传到用户/计费系统中,系统会动态加载,后台配置参数后即可使用。账号关联成功后生成token,须携带进入游戏服务器,由服务器进行验证。
统一打包平台
- 抽象层:各游戏对接抽象层,打出母包。
- 实现层:与各渠道SDK进行接入
- 打包工具:Web页面,Python提供web服务,并调用脚本,利用apktool进行解包、打包。
参考U8SDK的文章,封装了一个通用接入的抽象层,游戏母包只接入抽象层,打包平台将apk解包后与渠道SDK资源进行合并,然后打包签名生成子包。
但没有U8SDK做的好,只实现了基本的Android打包功能,不如购买一套U8SDK源码做二次开发来的快。
MMORPR手游《仙变》项目
- 门派系统:申请/邀请加入、职位、建筑等。
- 副本系统:门派副本、锁妖塔副本。
- 伴侣系统:结婚、渡劫、婚礼/副本。
- 任务优化:任务阶段/触发事件的简化,优化数据库存储结构。
用N个long型字段,将任务ID按位保存是否完成。每人仅有一条记录,减少了数据量、内存占用,减少合服数据量。
北京九九乐游科技有限公司 ( 2011年7月 ~ 2012年12月 )
手游《神州》项目
负责服务端功能开发,包括:副本、任务、组队系统、邮件系统、好友系统、活动系统,游戏GM工具开发。
从分析需求文档到最终功能实现,从与策划沟通到与技术讨论,从最初的满足需求到考虑系统扩展等,锻炼了与团队沟通和协作能力。
技能清单
以下均为熟练使用的技能
- Linux / shell / Nginx ( OpenResty )
- 语言: Java / Python / Go / Lua
- 数据库: MySQL / Redis
- Web框架: SpringMVC / Gin / Tornado / Flask / Django
- 前端框架: Vue.js / AngularJS
- 工程构建: git / svn / gradle / spring boot / npm + webpack