多年软件开发经验,已经开发多款成熟的产品,技术栈包括:
1,深入熟悉 ES6,ES7 语法,熟练使用 express 框架,使用其强大的中间件功能
2,深刻理解 node.js 异步回调机制,熟练使用 promise,async/await 进行异步操作的处理,能使用 promise 进行原生异步操作进行封装
3,理解 node.js Event 模块,在实际的项目中灵活使用,例如:应用在日志系统中,当订单状态改变时使用 event 处理,实现 socket.io 推送,微信公众平台模板消息推送,使用 jpush 极光推送进行原生 APP 的推送
4,熟悉 MYSQL 数据库,在 node.js 中使用 ORM 框架 Sequelize 对数据库进行增删改查的操作,使用 Sequ elize-auto 一键将数据库表导出成为 ORM 模型
5,熟悉 Redis 缓存技术,在实际开发中使用了常用的 string,hash 两种数据结构
6,熟悉 socket.io 技术,在实际项目中利用 socket.io 实现订单实时推送,并增加用户安全认证机制,实现因 断线重连带来的数据错乱问题解决
7,熟悉微信公众平台开发,包含微信 oauth 认证,模板消息,微信支付,微信红包
8,理解 node.js 消息队列机制,使用 RabbitMQ 进行消息队列的操作,在实际场景中使用消息队列对大批量 的订单进行处理,降低错误率
9,熟悉 PM2 进行 node.js 服务器的部署,使用 nginx 进行反向代理,负载均衡 10,熟悉 postman 进行接口测试及接口文档生成 11,熟悉常用的性能测试工具实现高性能服务器优化
12,熟悉使用 vueadmin 框架进行 PC 端管理后台开发
红鹤互联公司开发了一款微信小游戏《一笔画完》,该游戏是 2018 年 9 月上线的,我 12 月份的时候进去公 司,进入公司后主要负责的模块功能是:
1, 打点数据的维护,当时这款游戏最高峰的时候 DAU 是 100 多万,然后游戏很多地方都使用了打点,例如
启动游戏,登录,每一关的过关打点,分渠道视频广告打点,求助分享等等,导致我们的 mongodb 数据 特别大,当时大概有 1TB 的量,所以当时的任务有两个,1,使用 node.js 编写自动化程序,在每天凌晨 2-3 点的时候把半个月的打点数据使用 mongodump 按照打点类型,日期进行分类备份,并同步到阿里 云 OSS 存储,
2, 对打点数据进行统计分析,例如,统计用户最大过关的次数,人数,用户的次日留存,3 日留存,7 日留 存,每日新增用户数,每日活跃用户数等,由于这些统计查询耗时是比较长的,所以也是利用晚上用户量 不多的时候进行统计汇总,插入到一个表里面,白天运营查询就非常快,
3, 为方便运营查询数据,我使用了 vueadmin 的这个框架搭建了后台前端,方便运维查询数据,还做了权限 控制,不同的用户登录进入后能看到的东西是不一样的
4, mongodb 数据迁移,维护,我们公司的 mongodb 是买的阿里云的服务,因数据量比较大,用的是分片 集群方案,运维费用昂贵,我做了自动化备份删除数据功能,服务器数据明显减少了,所以需要降配,做 数据迁移,
5, docker 容器技术的研究及 rancher 框架的熟悉,因为红鹤的所有后台都是通过容器化部署的,正好对这 方面感兴趣,所以进行了深入研究,已经做了自己能独立部署一套 rancher 的系统,增减主机,制作 ope nvpn 容器,使自己的电脑能通过 vpn 直接连接阿里云的内网。通过阿里云的容器镜像服务,dockerfire, 打包自己私有服务,
我们的游戏名称是《爱玩捕鱼大圣归来》,我的职责,负责后台服务开发,主要的工作内容是:
1, 登录服务器优化,之前我们的登录,注册,退出都是和游戏逻辑放在一起管理的,后来我们把登 录注册功能模块和其他游戏业务逻辑进行分离,分开后我们可以优化的东西就很多了,在登录服 务器中做渠道的业务逻辑处理,依据现有的游戏逻辑服务器集群做负载均衡,分配最佳游戏服, 实时监控在线玩家数据及监控各个业务逻辑服的运行状态,可以做到在不停服的情况下扩容我们
的游戏业务逻辑服务,游戏版本升级的逻辑控制
2, 核弹系统的开发,玩家在捕鱼的过程中使用核弹能极大的争强杀伤力,功能包含:使用金币抽奖
获得核弹,核弹的合成及拆解,核弹
3, 服务器性能优化,我们刚开始的时候是把所有的用户身到的数据,包含背包,核弹,金币等存储
在服务器内存,定时更新到服务器,存在一个严重的风险,当服务器升级更新,异常重启,势必 会将一部分的数据因为没有及时更新到数据库而导致流失,后来的解决方案是将数据全部实时存 储到 redis,但是运行一段时间后发现 redis 单机版承载不了,后来我们的方案是建立 redis 集 群,redis 官方建议的是可以设置 3 主 3 从的这种架构,对 redis 数据进行分片,多个 master 进 行平均分摊,客户端可连接任意节点进行数据操作
4, 游戏日志系统:因需要对游戏玩家进行全程追踪,开发日志系统迫在眉睫,我们的做法是使用 Ra bbitMQ 进行游戏日志的收集,客户端只负责发日志消息,会有消费者进行对日志的处理,而不 影响用户体验性能,我们会把日志数据全部存储到 mongodb,方便后续的查询分析
5, 无感更新服务,
6, 客户端通讯协议的定义,我们用的是 google 的 protobuffer,实现数据传输更轻量级
7, 后台统计数据报表开发
角色 | 职位 |
负责人 | node.js高级开发工程师 |
队员 | 前端工程师 |
队员 | 后端工程师 |
红鹤互联公司开发了一款微信小游戏《一笔画完》,该游戏是 2018 年 9 月上线的,我 12 月份的时候进去公 司,进入公司后主要负责的模块功能是: 1, 打点数据的维护,当时这款游戏最高峰的时候 DAU 是 100 多万,然后游戏很多地方都使用了打点,例如 启动游戏,登录,
融小小项目功能是,基于附近为有需要贷款的人士提供查找贷款经理的服务, 该项目分为两个客户端端,一个是需要贷款人使用的,一个是信贷经理客户端 这个项目是朋友找到我承接的,我自己组建的团队,团队成员包含2个前端,1个设计,我做原型设计及后台开发,后端开发语言是node.js,使用
融小小项目功能是,基于附近为有需要贷款的人士提供查找贷款经理的服务, 该项目分为两个客户端端,一个是需要贷款人使用的,一个是信贷经理客户端 这个项目是朋友找到我承接的,我自己组建的团队,团队成员包含2个前端,1个设计,我做原型设计及后台开发,后端开发语言是node.js,使用