为了账号安全,请及时绑定邮箱和手机立即绑定

搞不定抽奖系统的技术不是一个好程序员(1)

标签:
Go 设计 架构

  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抽奖系统》实战课程,会有更全面的指导哟。

老师总结

  系统设计的过程,没有写一行代码,只有写文档的事情,而这个文档却要指导后续的整个开发过程,所以,设计这个事情,一定要保证尽量少的差错,避免后续返工和重构。

  怎么减少出错呢?或者怎么更加合理和完善一个系统设计呢?

  系统设计是一个脑力运算的事情,走一步想十步一百步的事情,也是对个人已经掌握的技术和能力的集中体现。学习积累自然是不能少。

  而且,系统设计的过程也是要反复论证和推演的过程。需要充分想到,系统设计在实际开发中会怎么来实现,实现后会怎么来使用,使用中会不会遇到问题,遇到问题再反过来要怎么修改系统,要怎么修改系统设计。循环往复的在脑中推演系统运行的全周期,在各个节点和事件中给出来多种解决方案,有对比有选择,才有可能得到更好的设计方案。

上一篇《搞不定抽奖系统的技术不是一个好程序员

下一篇《搞不定抽奖系统的技术不是一个好程序员(2)

点击查看更多内容
8人点赞

若觉得本文不错,就分享一下吧!

评论

作者其他优质文章

正在加载中
全栈工程师
手记
粉丝
1.7万
获赞与收藏
2252

关注作者,订阅最新文章

阅读免费教程

感谢您的支持,我会继续努力的~
扫码打赏,你说多少就多少
赞赏金额会直接到老师账户
支付方式
打开微信扫一扫,即可进行扫码打赏哦
今天注册有机会得

100积分直接送

付费专栏免费学

大额优惠券免费领

立即参与 放弃机会
意见反馈 帮助中心 APP下载
官方微信

举报

0/150
提交
取消