0%

关于

联系方式


个人信息

  • 董瑞 / 男 / 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