APP下载

一种基于秒杀应用的业务系统框架设计

2015-04-02邵斐

软件导刊 2015年2期
关键词:秒杀电子商务

摘要:通过对秒杀系统的业务及性能需求进行分析,着重考虑系统的可靠性和可扩展性,提出一种适用于互联网秒杀应用的业务系统框架,主要包括商品维护、商品展示、库存管理和订单处理4大功能模块,并引入缓存技术对数据库读写逻辑进行优化,以达到系统高并发性和高可用性的设计目标。

关键词关键词:电子商务;秒杀;缓存;高并发

DOIDOI:10.11907/rjdk.143917

中图分类号:TP319

文献标识码:A文章编号文章编号:16727800(2015)002009703

作者简介作者简介:邵斐(1982-),男,上海人,硕士,上海清算所工程师,研究方向为互联网电子商务相关应用系统。

0引言

随着电子商务的不断发展,秒杀\[1\]作为一种崭新的互联网营销模式也日益受到关注。由于秒杀这种网络促销行为能够在短时间内聚集大量人气,所以对企业具有极高的商业价值。但也由于很多电子商务平台\[2\]对于秒杀系统本身设计上的不足,使得在推广秒杀活动时,无法有效应付因活动时激增的用户访问量导致的平台运行不稳定问题,如访问超时、响应速度慢,甚至服务瘫痪等。为避免企业经济损失,挽回用户信心,设计一套专门的秒杀系统成为各家电商平台需要重点解决的问题。然而目前学术界专门论述如何建设电商领域的秒杀类应用系统的相关文献较少,因此本文从分析秒杀应用的特点出发,对如何构建具有实用性的秒杀系统进行了探索。

1秒杀系统框架设计

1.1秒杀系统分析

从电商平台的角度,秒杀类商品总是在某个特定的时间段内进行销售,有极强的时效性;从用户的角度,为了成功获得商品,往往会集中在秒杀活动开始时的一个较短时间内完成商品购买的整个流程,即抢购式的购买方法,因此导致了秒杀系统的并发访问是一种突发的高并发。另外秒杀归根到底是电商的一种促销手段,这种以超低价吸引买家的性质决定了对应的秒杀商品的库存数往往会控制在一个很少的量级单位。通过以上分析可以得出,要构建一套实用合理的秒杀业务系统需要从3个方面入手:①如何提供快速有效的商品信息展示;②如何做到商品库存实时更新;③如何实现稳定可靠的订单处理。

1.2秒杀系统功能设计

通常情况下高并发类型的系统\[3\]性能瓶颈往往集中在数据库的读写操作上,而通过分析,基于秒杀类商品的库存数量不会太大,且时间持续不会太长这一现实特点,可以得出秒杀系统的瓶颈更偏向于对数据库的读操作性能上。为提升秒杀系统的整体性能,可以在业务层和数据库层之间增加一个数据缓存层\[4\],使用缓存技术\[5\]将对数据库本身的读写请求降至最低。秒杀系统的总体功能模块如图1所示。

图1秒杀系统功能模块

秒杀系统中的缓存使用主要体现在以下3个方面:①用于商品基本信息的展示。通过将商品的动态网页内容转换成静态页面形式保存,以避免对相同商品的重复访问而导致的大量数据库读操作;②用于商品库存的实时管理。在秒杀活动过程中先通过缓存维护库存信息,活动结束后再统一更新入库,有效降低活动进行中对数据库的频繁修改操作;③用于商品订单管理。所有秒杀商品订单先统一存入缓存中,待秒杀活动结束后再统一进行结算处理,这样可以尽可能地将所有计算能力都放在应对用户的访问请求服务上。

1.2.1商品维护模块设计

商品维护作为独立的后台模块专门用于对秒杀商品的设置,包括商品描述、特征分类、商品价格、库存、售卖时间等信息。管理员可在此模块中进行商品的添加、修改、删除等操作。由于商品信息本身不是一成不变的,尤其是在商品秒杀活动过程中遇到需要变更商品信息的情况更是不可避免,因此必须有一套与缓存策略相适应的数据更新策略。具体做法是在商品维护模块中对商品进行任何变更后,除了更新数据库中的商品信息外,还需要在数据库中记录商品更新的时间戳信息。此表将作为商品缓存管理时检测商品信息新鲜度的重要标识。商品维护业务流程如图2所示。

图2商品维护业务流程

1.2.2商品展示模块设计

秒杀系统主要通过页面缓存\[6\]来解决提供稳定可靠的商品基本信息查询服务的问题,即将秒杀商品网页预先生成静态HTML页面并存放在缓存中,而不是重新通过IO读取。商品展示模块的业务流程如图3所示。

图3商品展示业务流程

当用户访问相关页面时先判断商品页面是否存在缓存,如果存在则直接调用静态页面,否则才从数据库中读取动态数据信息。本文中的缓存使用MemCached进行HTML网页的数据存储,当缓存不存在时系统将调用API从数据库获取数据,而此操作将会成为整个系统的性能瓶颈。为尽量避免对数据库的操作,需要在系统中单独部署一个Job服务,在秒杀活动开始前遍历相关商品,预先生成页面缓存信息。如果在某些特殊情况下依然需要对数据库进行直接读取操作,则在读取完成后需要将当次读取到的信息同步入缓存中,以保证下次再有对相同商品的访问请求时可直接读取缓存。为保证商品信息的时效性,本文采用一种时间戳维护机制,具体方法是:监控数据库中的商品时间戳信息表,当后台监控服务发现某个商品的时间戳信息发生变化后,则即时刷新缓存数据,以此确保终端用户读取到的数据是最新的。商品缓存维护流程如图4所示。

图4商品缓存维护流程

缓存同步Job部署在独立的内部应用服务器上,由于服务需要从商品时间戳信息表中获取商品及其时间戳数据,为了尽量降低每次从数据库获取的数据量,除了第一次数据初始化外,之后每次仅获取上次运行完成的时间点之后的数据,同时考虑到性能因素,将“商品-时间戳”的字典维护在服务器的本地缓存中。Job的运行频率正常情况下控制在分钟级即可。由于整体系统架构采取集群模式,当发生当前服务器集群无法承受的情况,也可通过增加服务器数量,然后将所有商品重新平均分配到各个服务器上来解决。

1.2.3库存及订单管理模块设计

针对秒杀产品库存数有限的特点,解决库存更新以及订单处理的基本思路是先将库存信息维护在缓存中,同时还需要维护一个订单队列,通过单独的服务处理此队列中的订单请求,并完成最终的数据入库操作。用户在打开商品页面时,首先从缓存中获取商品基本信息,包括商品售卖时间以及可售标识,这里的可售标识仅表示当前商品是否可以进行销售,并不维护实际的商品库存数。当秒杀活动开始后,用户可以通过点击“预订”按钮进行抢购。如果当前商品库存大于0,则用户可以进行后续预订操作并更新库存数,当商品库存数减为0后,需要额外刷新缓存中存储的商品信息,将可售标识置为False,以表示商品不可继续出售。如果用户成功抢购到商品,系统并不直接将用户的预订单写入数据库中,而是先统一保存入一个订单队列中,此订单队列本身也存储在缓存之中。商品下单Job的任务就是轮询此订单队列,依次处理队列中的预订请求,将预订信息写入数据库中。由于秒杀商品数量有限,因而订单队列中的记录数不能大于商品库存数量。因此,通过独立的Job服务进行此类集中的数据处理在性能上是可以保证的。当用户订单被同步入数据库中之后,用户可在专门的个人订单页面中看到自己的预订信息并进行最终的支付操作,至此整个秒杀过程全部完成。库存更新及订单处理的业务流程如图5所示。

图5商品库存及订单管理业务流程

在以上流程中最关键的是维护商品的库存信息。目前部分秒杀系统的做法是在MemCached中以商品ID为键维护库存数据,这种设计很可能导致性能瓶颈。因为这使MemCached通过相同的商品ID计算Hash值得到目标存储服务器时每次都会是相同的结果,即指定商品一定会被存放在一台固定的服务器上。当此商品出现高并发访问时,存放该商品库存键值对的缓存服务器必将承受极大负载。为了避免类似的单点服务可能造成的系统瓶颈,本文中对于秒杀商品的库存信息维护作了适当优化,在设计键值对时采用“服务器标识+商品”作为Key,这样即使同一个商品,由于Key不同最终可以得到不同的Hash值,使数据会被存储到不同的缓存服务器上,以此达到分布式存储的目的。

2秒杀系统性能测试

为验证秒杀系统的具体性能,进行如下实验:测试样本为10个秒杀商品,每个商品库存数为1 000;测试缓存包含4台WWW服务器,2台应用服务器,2台缓存服务器和1台数据库服务器。为测试方便,本测试中所有服务器采用相同配置,均为4核CPU,内存16G。

图6服务器事务操作性能

由图6可见,在高并发情况下系统的压力瓶颈主要来自于WWW服务器,在达到100 000个并发数的情况下,WWW服务器的CPU占用率已达到90%以上,而此时应用服务器和缓存服务器仍有空闲资源。同时由于绝大部分操作均在前端服务实现,数据库服务器的CPU占用率始终保持平缓,不随并发数增加而暴增。通过长期测试,在系统实际部署中推荐将WWW服务器与应用服务器数量按照3:1比例进行配置,可以使整个系统达到最大的并发访问承受力。

3结语

本文针对秒杀系统的业务特点,从秒杀系统的主要业务流程入手,设计了一套完整的秒杀应用服务系统体系结构。该系统充分应用缓存技术,基本达到了对于秒杀系统的高并发性、高可靠性及易扩展性要求,有效解决了秒杀系统的瞬时高并发难题,对构建秒杀应用或类似的高并发Web应用有一定参考价值。但对于秒杀系统中的公平性设计目前尚未有完美的解决方案,有待进一步研究。

参考文献参考文献:

\[1\]张小红.电子商务营销策略之秒杀\[J\].机械管理开发,2011(2):150151.

\[2\]裴丽丽.基于B2C模式的电子商务平台系统设计和实现\[D\].上海:同济大学,2009.

\[3\]薛质,彭海平.电子商务平台的性能优化和高可靠性研究与实现\[D\]. 上海:上海交通大学,2007.

\[4\]程春蕊,刘万军.基于数据库缓存的Web应用性能优化解决方案\[J\]. 世界科技研究与发展,2009,31(4): 603604,640.

\[5\]甘桂梅.基于Web应用的缓存技术概述\[J\].中国科技信息, 2010(17):9596.

\[6\]蔡志珂,阎洁.基于缓存框架的Web缓存研究\[J\].电脑知识与技术,2009,5(31): 87378739.

责任编辑(责任编辑:黄健)

猜你喜欢

秒杀电子商务
2025年我国农村电子商务交易额达到2.8万亿元
《电子商务法》如何助力直销
电子商务
文人吐槽,秒杀段子手
秒杀
关于加快制定电子商务法的议案
电子商务人的核心能力
Physics Feuer
期刊订阅电子商务平台
秒杀一切的街头爆笑图