电商秒杀系统的架构分析
摘 要:秒杀在各大电商系统中是一种常见的营销策略。本文按照自上而下的结构化开发思想,着重考虑系统的可靠性和可扩展性,针对秒杀系统的系统架构、功能模块、数据流及业务流进行了分析论述。
关键词:秒杀;高并发系统;架构
0 引言
随着电子商务的不断发展,秒杀作为一种崭新的互联网营销模式也日益受到关注。由于秒杀这种网络促销行为能够在短时间内聚集大量人气,所以对企业具有极高的商业价值。但也由于很多电子商务平台对于秒杀模块本身设计上的不足,使得在推广秒杀活动时,无法有效应付因活动时激增的用户访问量导致的平台运行不稳定问题,如访问超时、响应速度慢,甚至服务瘫痪等。
秒杀模块的建立必定对系统有非常高的要求,系统除了应对在短时间内网络流量激增问题的同时,还要确保系统的稳定性,高扩展性,高并发性,安全性等。在高负载、高并发的情境下需要对系统进行软硬件方面采取各种优化手段,保证系统的正常运行。本文以软件工程的角度,按照自上而下的结构化开发思想,对秒杀系统的整体架构进行了详细论述。
1 系统设计
模块化的设计是的应用系统的内部构造以及功能得到了划分[1,2],方便了对系统的开发流程的设计和管理以及开发进度的安排和管理,此外还能加快任务的开发,提高系统的可维护性,降低了系统内部功能之间的耦合度。
秒杀系统的功能主要包括用户登录,商品列表首页展示,商品详情页显示,秒杀功能,用户订单展示等功能[3,5]。具体可分为6个模块,即登录模块、用户模块、商品模块、秒杀模块、订单模块、异常处理模块。功能层次图如图1所示。
1.1 登录模块
登录模块中包括了首先应该登录购物秒杀系统之后才可以进行商品的秒杀功能的使用。没有登录直接访问商品列表也可以访问但是秒杀的功能不能被执行,也是秒杀功能执行的最初的前提条件[6]。
登录模块中进行输入账户密码的限制,账户应为用户的手机号,有长度以及用户的输入是不是数字的限制。密码最少是长度为6位的字符串。不符合登录格式要求的进行提示。
1.2 用户模块
用户模块中包括了用户基本信息的管理,如用户的电话、姓名、登录密码设置、收货地址等基本信息。用户的部分基本信息在秒杀动作完成之后在订单详情界面中显示。
1.3 商品模块
商品模块中包括了商品基本信息的管理,如商品的编号、名称、库存数量、单价等基本信息。商品模块是购物秒杀系统中的重要角色,秒杀商品列表中的商品是从所有商品中抽取出来做活动的个体,秒杀的数量和商品的库存量之间有密切关系。
1.4 秒杀模块
秒杀模块是整个秒杀系统的重点。秒杀功能能够执行的前提条件有如下几点要求:
(1)用户登录成功并保存了用户token信息。(2)秒杀的商品数量大于零。(3)系统时间在该商品的秒杀开始时间和结束时间之间等。
只有满足以上几点要求用户才能够执行秒杀的功能,系统才允许执行秒杀的业务逻辑。
1.5 订单模块
订单模块包含订单详情的预览。订单的产生方式是用户执行完成秒杀的操作之后,进行减库存下订单的后台业务逻辑的执行,生成的订单信息反馈给该用户。订单的内容包括下单时间、订单价格、收货人姓名、电话、地址等信息。
1.6 异常处理模块
异常处理模块中主要用于添加统一的异常代码以及异常信息并进行归类。通常的包含有异常代码很异常信息。
(1)通用的异常码。服务端异常、参数校验异常、请求非法、访问太频繁等。(2)登录模块中的异常码。Session不存在或者已经失效、登录密码不能为空、手机号不能为空、手机号格式错误、手机号不存在、密码错误等。(3)商品模块中的异常码。商品库存不足等。(4)订单模块中的异常码。订单不存在等。(5)秒杀模块中的异常码。商品已经秒杀完毕、不能重复秒杀、秒杀失败等。
2 系统架构
秒杀系统采用分布式的系统架构,其中的组件包括Keepalived做负载均衡和高可用,nginx做请求的分流转发和缓存,使用Apache的tomcat做服务器的集群。具体的架构部署如图2所示。
2.1 系统数据流图
秒杀系统中的数据流图是从数据传递和加工的角度,表达出系统的逻辑功能和数据在系统内部的逻辑流向和逻辑变换过程。系统顶层数据流图如图3所示。
2.2 系统用例
秒杀系统角色使用该系统的用户,用例包括登录,秒杀商品列表的浏览,以及商品详情的浏览,商品详情中可以看到该商品的秒杀详细信息,用户可以进行秒杀操作并生成订单查看订单状态,收货人信息等。系统用例图采用UML的设计思想和设计规范进行制作。
2.3 系统E-R图
经过对购物秒杀系统分析后得出系统共有四个实体,分别为用户、商品、订单、秒杀商品。确定实体集之后,对实体的属性进行分析后得出:
(1)实体集“用户”包括编号,姓名,地址,创建日期,电话等属性。(2)实体集“商品”包括编号,名称,库存,单价等属性。(3)实体集“秒杀商品”包括编号,名称,数量,开始时间,结束时间,原价等属性。(4)实体集“订单详情”包括编号,创建时间,创建方式,状态,名称,收获地址,支付时间等属性。
实体以及实体之间的关联关系如图4所示。
3 结语
秒杀在各大电商系统中是一种常见的营销策略。随着淘宝双十一交易额一年比一年上涨,秒杀活动热度也随之不断上升,这同时也给电商技术人员带来严峻的挑战。本文对购物秒杀系统进行了分析,按照结构化开发思想,针对秒杀系统的系统架构、功能模块、数据流及业务流进行了详细论述。良好的架构设计可以减少开发难度和后期使用风险。通过对购物秒杀系统的研究,对主流大型网站为提高并发量和系统性能开展相关工作也有借鉴意义。
参考文献
[1] 严伟.计算机网络(第五版)[M].清华大学出版社,2012.
[2] Sathiyamoorthi,Murali Bhaskaran.Web Caching Through Modified Cache Replacement Algorithm[C].International Conference on Recent Trends In Information Technology,2012:35-38.
[3] 李京文.中国电子商务发展现状与未来趋势[J].河北学刊,2016,24(1):107-109.
[4] 陈康贤.大型分布式网站架构设计与实践(第三版)[M].电子工业出版社,2014,9:34-76.
[5] 阿里巴巴集团成长集编委会[M].逆流而上-阿里巴巴技术成长之路.第二版.电子工業出版社,2017:216-387.
[6] Joshua Bloch.Effective Java.2E. Radioelektronika International Conference[C].2009:147-230.