# 秒杀系统-后端 **Repository Path**: feng8888/personal-second-kill-system ## Basic Information - **Project Name**: 秒杀系统-后端 - **Description**: 基于springboot、springcloud的分布式秒杀系统 - **Primary Language**: Java - **License**: MulanPSL-1.0 - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 3 - **Created**: 2021-11-20 - **Last Updated**: 2021-11-20 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # 个人秒杀系统 #### 介绍 基于springboot、springcloud的分布式秒杀系统 #### 软件架构 功能设计: 1. 用户、管理员注册 2. 用户、管理员登陆 3. 查询商品、秒杀活动信息 4. 管理员修改删除商品 5. 管理员修改删除秒杀活动信息 6. 用户下单抢购商品 7. 用户支付商品 架构设计 服务器需求: 1. Nginx:负载均衡以及限流 联系两台服务器 2. 微服务可扩展方向:限流&降级&熔断&隔离 3. 两台下单服务器(作用:用于接受秒杀请求) 部署方案 • 限流:Google guava令牌桶限流。 • 限时:redis存储有期限的key(秒杀活动的缓存),能查询到该key的则通过,不能则表示秒杀时间已过。 • 单用户访问频率:为每个访问同户生成md5加密字符串,使用redis存储有期限key(md5字符串),访问秒杀则需携带盐值,访问一次则加1,若重复访问大于10,则拒绝访问,等待key过期才可再次访问。 • 超卖乐观锁即尝试扣减库存,成功则下单 乐观锁实现方式两种: 1、数据库层面 version字段实现乐观锁 2、redis缓存层面,用redis先预存秒杀的库存,然后使用redis乐观锁来尝试扣除redis中的库存数(List),成功则发送下单信息到延迟队列。 • 消息队列: 消息推送:下单成功后则推送给用户成功消息,可以是短信等。 流量削峰:下单成功后将生成订单交给消息队列,最终与数据库交互。(全程只有生成订单时以及下发秒杀活动访问mysql数据库) 4. 一台消息队列服务器(创建订单,并短信通知) 5. 一台支付服务器 (创建订单服务器删除,转化为每个下单服务器内部发起时间到延时队列,而支付服务器可监听死信队列,当订单超时则获取死信队列中的失效订单信息进行回滚,或者获取redis中的订单信息并完成支付业务。) 接口设计: 1. 下单服务器提供三个接口:免账号抢购接口(默认用户10号),需要账号抢购接口,获取用户MD5 2. 支付服务器提供三个接口:查看订单状态接口,支付接口,取消订单接口。 前端需求: 1. 登陆组成页面 2. 抢购页面 3. 支付订单页面(待补充。。) 可优化方向: • redis集群,主节点写,从节点读 • mysql集群,分库分表 • 不足之处在于 不能做到公平(先来先抢到,改用队列存放用户请求实现) • 消息队列的死信队列 为订单设置支付时限(已实现) #### 安装教程 1. xxxx 2. xxxx 3. xxxx #### 使用说明 1. xxxx 2. xxxx 3. xxxx #### 参与贡献 1. Fork 本仓库 2. 新建 Feat_xxx 分支 3. 提交代码 4. 新建 Pull Request #### 特技 1. 使用 Readme\_XXX.md 来支持不同的语言,例如 Readme\_en.md, Readme\_zh.md 2. Gitee 官方博客 [blog.gitee.com](https://blog.gitee.com) 3. 你可以 [https://gitee.com/explore](https://gitee.com/explore) 这个地址来了解 Gitee 上的优秀开源项目 4. [GVP](https://gitee.com/gvp) 全称是 Gitee 最有价值开源项目,是综合评定出的优秀开源项目 5. Gitee 官方提供的使用手册 [https://gitee.com/help](https://gitee.com/help) 6. Gitee 封面人物是一档用来展示 Gitee 会员风采的栏目 [https://gitee.com/gitee-stars/](https://gitee.com/gitee-stars/)