年会将至,每年年底公司年会都需要用到年度回顾、年会抽奖系统(博主我不知不觉已经负责开发了两年师大以及分公司的年度抽奖系统了,时间真快~),通过本片文章记录一下开发的整体流程,目前源码还未开源,需要的话可以后台私信我哈~
效果图
前台
获奖名单
后台
需求分析
其实开发类似这种系统相对是非常简单的,主要是收集用户的信息,我们是以钉钉上的信息为准(钉钉工号、姓名等信息),录入系统,前端会提供一个扫码观看年度回顾的接口,用户扫码之后会签到,只有到场签到后的用户才能有资格抽奖,后台会提供一个抽奖算法实现抽奖功能,触发后通过算法计算返回前端对应的中奖用户信息。
考虑问题
- 并发问题
- 异步处理问题
- 边界值处理问题
- 用户签到人数未达抽奖奖品数量问题
前端优化
由于参与活动的人数较多,而且服务器是放在外网的,所以需要考虑带宽的问题:
- 静态资源放到cdn
- 抽奖页面静态化,同时也放到cdn,这样子服务器只需要承受用户请求和登录即可
- 采用微信扫码签到,所以登录系统采用一个独立的进程,并且使用异步框架来处理高并发
- 前端发送请求队列化处理,避免用户不停点击,造成大量请求
后端相关接口
后台支持导出中奖名单信息excel
总结
- 整套系统开发并不存在什么难度,唯一需要注意高并发下性能和数据问题。
- 静态资源放到cdn,避免带宽成为瓶颈。
- 尽可能采用缓存技术替代MySQL,解决io问题。