码迷,mamicode.com
首页 > 其他好文 > 详细

高并发-秒杀

时间:2021-02-17 14:44:35      阅读:0      评论:0      收藏:0      [点我收藏+]

标签:收货地址   收货   mobile   primary   范围   实现   收件人   审核   res   

  • 秒杀就是抢购的功能,会有很多人抢购,所以要求扛得住高并发

  • 秒杀的商品信息存入Redis缓存(因为访问数据量大,所以不直接对数据库进行操作)

    秒杀商品存入Redis来提升访问速度。
    1.秒杀列表数据
    2.秒杀详情页数据
    
  • spring定时任务-定时将秒杀商品存入Redis中。

    定时将秒杀商品存入Redis缓存
    
  • 秒杀商品频道页实现-秒杀商品列表页。(从Redis里面查数据)

  • 秒杀商品详情页实现(从Redis里面取数据)

  • 下单实现(普通下单,订单添加到数据库,对并发支持不好,容易造成雪崩)

  • 多线程异步抢单实现-队列削峰(普通下单在并发上不靠谱,所以要队列削峰)

一、秒杀业务分析

秒杀就是平台上的商品低价出售的一些抢购活动。(如:淘宝的双11)

所以访问的人数很多 ,对服务器压力大,所以需要实现高并发。

需求:

(1)录入秒杀商品数据,主要包括:商品标题、原价、秒杀价、商品图片、介绍、秒杀时段等信息
(2)秒杀频道首页列出秒杀商品(进行中的)点击秒杀商品图片跳转到秒杀商品详细页。
(3)商品详细页显示秒杀商品信息,点击立即抢购实现秒杀下单,下单时扣减库存。当库存为0或不在活动期范围内时无法秒杀。
(4)秒杀下单成功,直接跳转到支付页面(微信扫码),支付成功,跳转到成功页,填写收货地址、电话、收件人等信息,完成订单。
(5)当用户秒杀下单5分钟内未支付,取消预订单,调用微信支付的关闭订单接口,恢复库存。

二、表结构

秒杀商品表(商品信息)

CREATE TABLE `tb_seckill_goods` (
  `id` bigint(20) NOT NULL AUTO_INCREMENT,
  `sup_id` bigint(20) DEFAULT NULL COMMENT ‘spu ID‘,
  `sku_id` bigint(20) DEFAULT NULL COMMENT ‘sku ID‘,
  `name` varchar(100) DEFAULT NULL COMMENT ‘标题‘,
  `small_pic` varchar(150) DEFAULT NULL COMMENT ‘商品图片‘,
  `price` decimal(10,2) DEFAULT NULL COMMENT ‘原价格‘,
  `cost_price` decimal(10,2) DEFAULT NULL COMMENT ‘秒杀价格‘,
  `create_time` datetime DEFAULT NULL COMMENT ‘添加日期‘,
  `check_time` datetime DEFAULT NULL COMMENT ‘审核日期‘,
  `status` char(1) DEFAULT NULL COMMENT ‘审核状态,0未审核,1审核通过,2审核不通过‘,
  `start_time` datetime DEFAULT NULL COMMENT ‘开始时间‘,
  `end_time` datetime DEFAULT NULL COMMENT ‘结束时间‘,
  `num` int(11) DEFAULT NULL COMMENT ‘秒杀商品数‘,
  `stock_count` int(11) DEFAULT NULL COMMENT ‘剩余库存数‘,
  `introduction` varchar(2000) DEFAULT NULL COMMENT ‘描述‘,
  PRIMARY KEY (`id`)
) ENGINE=InnoDB AUTO_INCREMENT=4 DEFAULT CHARSET=utf8;

秒杀订单表(订单信息)

CREATE TABLE `tb_seckill_order` (
  `id` bigint(20) NOT NULL COMMENT ‘主键‘,
  `seckill_id` bigint(20) DEFAULT NULL COMMENT ‘秒杀商品ID‘,
  `money` decimal(10,2) DEFAULT NULL COMMENT ‘支付金额‘,
  `user_id` varchar(50) DEFAULT NULL COMMENT ‘用户‘,
  `create_time` datetime DEFAULT NULL COMMENT ‘创建时间‘,
  `pay_time` datetime DEFAULT NULL COMMENT ‘支付时间‘,
  `status` char(1) DEFAULT NULL COMMENT ‘状态,0未支付,1已支付‘,
  `receiver_address` varchar(200) DEFAULT NULL COMMENT ‘收货人地址‘,
  `receiver_mobile` varchar(20) DEFAULT NULL COMMENT ‘收货人电话‘,
  `receiver` varchar(20) DEFAULT NULL COMMENT ‘收货人‘,
  `transaction_id` varchar(30) DEFAULT NULL COMMENT ‘交易流水‘,
  PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8;

三、需求分析

技术图片

高并发-秒杀

标签:收货地址   收货   mobile   primary   范围   实现   收件人   审核   res   

原文地址:https://www.cnblogs.com/chawaner/p/14402345.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!