1 秒杀设计
1.1 业务流程
电商项目中,秒杀属于技术挑战最大的业务。后台可以发布秒杀商品后或者将现有商品列入秒杀商品,热点分析系统会对商品进行分析,对热点商品做特殊处理。商城会员可以在秒杀活动开始的时间内进行抢购,抢购后可以在线进行支付,支付完成的订单由平台工作人员发货,超时未支付订单会自动取消。
当前秒杀系统中一共涉及到管理员后台、搜索系统、秒杀系统、抢单流程系统、热点数据发现系统,如下图:
1.2 秒杀架构
B2B2C商城秒杀商品数据一般都是非常庞大,流量特别高,尤其是双十一等节日,所以设计秒杀系统,既要考虑系统抗压能力,也要考虑系统数据存储和处理能力。秒杀系统虽然流量特别高,但往往高流量抢购的商品为数不多,因此我们系统还需要对抢购热门的商品进行有效识别。
商品详情页的内容除了数量变更频率较高,其他数据基本很少发生变更,像这类变更频率低的数据,我们可以考虑采用模板静态化技术处理。
秒杀系统需要考虑抗压能力,编程语言的选择也有不少讲究。项目发布如果采用Tomcat,单台Tomcat抗压能力能调整到大约1000左右,占用资源较大。Nginx抗压能力轻飘的就能到5万,并且Nginx占用资源极小,运行稳定。如果单纯采用Java研发秒杀系统,用Tomcat发布项目,在抗压能力上显然有些不足,如果采用Lua脚本开发量大的功能,采用Nginx+Lua处理用户的请求,那么并发处理能力将大大提升。
下面是当前秒杀系统的架构图:
1.3 数据库设计
1.3.1 秒杀商品数据库
数据库名字:seckill_goods
秒杀活动表:tb_activity
商品品牌表:tb_brand
秒杀商品分类表:tb_category
秒杀时刻表:tb_seckill_time
秒杀商品表:tb_sku
秒杀商品活动关联表:tb_sku_act
1.3.2 秒杀订单数据库
秒杀订单表:tb_order
1.3.3 管理员数据库
管理员表:tb_admin
1.3.4 用户数据库
用户表:tb_user
收件地址表:tb_address