11月1日,第一天。
抽奖系统的开发任务,没有立项,没有负责人,反正就是要正式开始了。
技术的心里没有任何波澜,按照昨天的讨论和规划,今天是第一天,要开始系统设计了。
首先,数据模型设计
抽奖系统里面,肯定会有奖品,所以,需要有奖品信息(Gift)。
奖品里面还要区分优惠券,所以还要有单独的优惠券信息(Code)。
中奖的话,需要有用户的中奖信息(Result)。
除了这些基本信息,还有一些是限制规则,也要用到一些临时或者中间数据,比如:用户、IP黑名单,所以还要有用户、IP相关的数据(User, BlackIp)。
然后,还要有流程梳理
核心的抽奖和发奖流程,各种验证(用户登录、参数、限制条件等),然后就是奖品信息查询,随机性抽奖,抽中后的发奖逻辑,最后记录下中奖记录,返回抽奖的结果。
嗯,过程大概就是这样了,有变化后面再来补充完善吧。
除了流程,还有奖品状态
影响抽奖的因素,除了用户,除了限制规则,还有奖品本身的状态。比如:奖品的有效时间范围,奖品的有效状态,奖品的库存数量等。
这些状态,有些是在后台可以直接更新的,而有一些则是系统运行中自动的动态变化的,比如:库存。
所以,这个奖品状态,后面开发中也要重点关注。
系统功能列表整理
数据模型、流程和状态这些关键信息整得差不多了,要对系统开发的功能做一下整理了。
1 前台页面,从网上找个大转盘的特效页面。
2 后台功能,所有数据模型的管理页面。
3 抽奖接口,验证、限制规则、奖品抽奖、发奖等核心逻辑实现。
4 优化。。。
明确系统的架构设计
首先是开发语言的选择,以前用PHP、Java等语言开发,在性能和并发方面有明显的瓶颈呀。这两年Go异军突起,自己也自学了一段时间了,用Go开发这类对性能和并发要求高的Web应用,有很大的优势呀。所以,就用Go来做抽奖系统啦。
那么,Go里面的Web框架,ORM这些框架怎么选择呢?慕课上面有一期免费课《iris+xorm Go语言开发球星库系统》,看过之后,就很容易选择了,也很容易使用。所以,这次的Go抽奖系统也就用iris+xorm来快速上手开发了。
数据库就用mysql,缓存用redis。
至于集群的搭建,nginx或者lvs作为负载均衡,让ops去搞定吧。
技术做完这些关于系统设计的事情,一天过去了。
学习《Go抽奖系统》实战课程,会有更全面的指导哟。
老师总结
系统设计的过程,没有写一行代码,只有写文档的事情,而这个文档却要指导后续的整个开发过程,所以,设计这个事情,一定要保证尽量少的差错,避免后续返工和重构。
怎么减少出错呢?或者怎么更加合理和完善一个系统设计呢?
系统设计是一个脑力运算的事情,走一步想十步一百步的事情,也是对个人已经掌握的技术和能力的集中体现。学习积累自然是不能少。
而且,系统设计的过程也是要反复论证和推演的过程。需要充分想到,系统设计在实际开发中会怎么来实现,实现后会怎么来使用,使用中会不会遇到问题,遇到问题再反过来要怎么修改系统,要怎么修改系统设计。循环往复的在脑中推演系统运行的全周期,在各个节点和事件中给出来多种解决方案,有对比有选择,才有可能得到更好的设计方案。
上一篇《搞不定抽奖系统的技术不是一个好程序员》