在线抢购系统需求分析报告

一、抢购业务分析

1. 抢购业务的特性

(1) 低廉的价格

(2) 大幅推广

(3) 瞬间售空

(4) 定时上架,定时结束

(5) 并发量高

2. 技术挑战

(1) 对现有业务的冲击

(2) 高并发的环境下,数据库负担

(3) 高并发情况下网络的波动

(4) 前端对数据显示的处理

(5) 产品定时上架的处理

(6) 库存的“超卖”现象

(7) 秒杀器的应对

二、抢购业务架构原则

1. 尽量将请求拦截在系统上游

减轻后端数据层,数据读取的压力,防止服务器轻易挂掉

2. 读多写少,多使用缓存

减少数据库的读取次数

三、抢购业务架构设计

1. 整体架构

采用前后端分离的模式,后端只提供数据的操作,不负责前端页面的处理。采用RESTful API为前端提供数据,或者修改数据。前端采用react技术开发SPA单页应用,分离前后端,解耦系统,提高系统的稳定性和健壮性。采用nginx作为前端也后端交接的中转站,实现代理和负载均衡,减轻后台的请求静态资源,提高系统整体的稳定性。

2. 前端层架构

(1) 采用nginx和CDN做反向代理,快速响应来自于全国各地的请求,从而解决网络带宽的瓶颈。

(2) 倒计时的问题,由于客服端时间和服务器时间不一致,会导致抢购失败或者提前抢购。所以采用每隔一段时间,进行前后端时钟的同步。

(3) 当时间未到的时候,前端进行请求的拦截,采用节流的方式禁止前端在未开始时发送无效的请求。

3. 后端架构

(1) 在请购的API接口,实现一个抢购队列,放在“插队”行为。

(2) 采用mysql进行数据的存储,采用redis进行数据的缓存,在抢购开始的时,从mysql数据库中读取一次数据,把读取到的商品信息保存在redis缓存中,当每次执行抢购的时,从redis中读取商品信息,并修改相应库存,减轻mysql数据库的频繁读写。

(3) 在抢购成功过以后,如果用户在20分钟之内为付款则,商品重新进入抢购队列中进行抢购。

四、业务逻辑

  1. 流程图Step1:先经过Nginx负载均衡和分流
  2. 进入jseckill程序处理。 Google guava RateLimiter限流。 并发量大的时候,直接舍弃掉部分用户的请求
  3. Redis判断是否秒杀过。避免重复秒杀。如果没有秒杀过 
    把用户名(这里是手机号)和seckillId封装成一条消息发送到RabbitMQ,请求变成被顺序串行处理 
    立即返回状态“排队中”到客户端上,客户端上回显示“排队中...”
  4. 后台监听RabbitMQ里消息,每次取一条消息,并解析后,请求Redis做库存减1操作(decr命令) 
    并手动ACK队列 如果减库存成功,则在Redis里记录下库存成功的用户手机号userPhone.
  5. 流程图Step2:客户端排队成功后,定时请求后台查询是否秒杀成功,后面会去查询Redis是否秒杀成功
    如果抢购成功,或者抢购失败则停止定时查询, 如果是排队中,则继续定时查询。

五、ER图

六、用例图

添加抢购商品流程:

前端抢购流程

后端处理数据流程

七、架构图

原文地址:https://www.cnblogs.com/ouuoliuxing/p/11033018.html

时间: 2024-10-14 01:11:16

在线抢购系统需求分析报告的相关文章

网上在线考试系统需求分析

随着经济的发展,人们对教育的重视,需要上学的人也越来越多 ,随之而来的考试问题也给了老师和考生带来了不小的麻烦.在老师角度,传统的考试方式,要求老师打印考卷,监考,批卷,发卷,使老师的工作量很大,而且这些环节都是由手工完成,非常容易出错.同时,在考生角度,传统考试方式也带来了极大的不便.因此,为降低学校的管理成本和减少人力物力的投入,为老师提高考试效率,为考生提供更全面和灵活的服务,网上在线考试系统会包括在线考试,成绩查询,个人资料修改等功能,以满足老师和考生的需求.

网上订餐系统需求分析报告

一.研究意义 随着计算机和网络的日趋发展,网上店铺如雨后春笋般出现,就连沃尔玛,金拱门这一类老品牌的商家都开拓了自己的网上购物渠道,有调查表明:无论是中国还是西方国家,越来越的用户已经习惯于网络购物.人们的消费平台逐渐开始向虚拟世界转移,而网上订餐是其中重要的一环,发展网络订餐平台已经成为了新的时代的新的需求. 餐饮业也要顺应时代进行发展,早在古代,因为人们在外做饭不便,市场便推出了饭店来解决人们的吃饭问题,这一行业在时代的发展中不断进化,随着网络购物的出现,许多人倾向于足不出户而吃到各种美食,

在线抢购系统项目设计(核心代码)

目录文件说明 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 ├── README  -- Doc文档 ├── db  -- 数据库约束文件 ├── mvnw ├── mvnw.cmd ├── pom.xml  -- 项目依赖 └── src     ├── main     │   ├── java     │   │   └── com     │   │       └── imooc     │   │       

火车票售票系统需求分析

火车票售票系统 需求分析报告 1.引言 (1)1.1编写目的 (1)1.2项目背景 (2)1.3定义 (2)1.4参考资料 (2)2.任务概述 (2)2.1目标 (2)2.2运行环境 (3)2.3条件与限制 (3)3.数据描述 (3)3.1静态数据 (3)3.2动态数据 (3)3.3数据库介绍 (4)3.4数据词典 (4)3.5数据采集 (8)4.功能需求 (8)4.1功能划分 (8)4.2功能描述 (9)5.性能需求 (9)5.1数据精确度 (9)5.2时间特性 (9)5.3适应性 (9)6.

系统设计:在线支付系统的需求分析报告

在线支付系统 在线支付系统是一个第三方安全交易系统. 买方可以先向账户充值,然后系统会提醒卖方发货.一旦买方确认收货,系统会将钱转到卖方的账户,这样他们就完成了一次在线交易. 在个文档描述了支付系统的基本的功能性和非功能性需求.请仔细阅读. 功能性需求 个人账户管理系统 个人账户管理系统允许一个基础的用户(买方或卖方)用他们的真名.身份证号与电子邮件等基本个人信息注册一个账户,并且可以随时修改这些信息. 用户可以进行基本的账户操作,包括设置.更改支付密码,收费账户以及查询账户余额. 用户可以检查

在线抢购平台_课程设计报告

第1章 概述 1.1 课程设计的核心任务 需求分析.可行性分析.E-R图.关系图.系统架构图等的编写 总体设计.详细设计.代码实现 项目测试 本系统: 后端采用SSM(Spring+SpringMVC+MyBatis)的架构,实现RESTful API 接口,前端采用react进行前后端分离设计,完成商品在线系统. 1.2 课程设计工作进程 已经完成,用户登录注册,商品的添加,活动促销的添加,商品的查看与秒杀. 后续继续完成,订单页面的优化与完成,针对高并发下单任务的处理,针对用户重复秒杀商品的

网上在线考试系统Final Review报告

项目:网上在线考试系统 组名:金州勇士 组长:尹良亮 组员:杜月.王汉斌.闫浩楠 设想和目标 1.我们的软件要解决什么问题?是否定义得很清楚?是否对典型用户和典型场景有清晰的描述? 对学生进行在线的考试,使传统繁琐的考试过程变得更加简便.定义很清楚.典型用户是教师和学生,典型场景是考试. 2.是否有充足的时间来做计划? 有充足的时间来做计划,但是计划会随着项目的推进做出更改. 3.团队在计划阶段是如何解决同事们对于计划的不同意见的? 对不同意见进行讨论,最终由组长决定. 计划 1.原计划的工作是

工业能耗在线监测系统

一. 系统概述 多年以来,我国对于企业能耗的收集,大多采用企业定期上报耗能报表的采集方式,企业自行上报的能耗报表,往往因为企业自身经营的需要,带有或多或少有利于企业的倾向性特征,并非完全客观反映实际能耗.能耗管理部门也没有其他直接有效的手段,获取重点企业的实际能耗信息,因此更无法做到对不同类别耗能指标的有效分析,据此制定针对性的能耗管理政策.也无法进一步提出节能方案,有效降低能耗. 工业能耗在线监测系统是一个集成Intranet/Internet网络技术.GPRS无线传输技术.Web Servi

南理工14级第四组 需求分析报告

软件需求分析报告 题目:<离散数学>课程测验系统 编写人员:高明 914106840518 刘建平 914106840526 王琪栋 914106840235 王金 914106840234 雷杨 914106840618 指导教师:叶庆生 1引言2 1.1编写目的 2 1.2背景 2 1.3定义 2 1.4参考资料 2 2任务概述2 2.1目标 2 2.2用户的特点 3 2.3假定和约束 3 3需求规定3 3.1对功能的规定 3 3.2对性能的规定 3 3.2.1精度3 3.2.2时间特性要