高并发商品秒杀系统

说明

本项目为前后端分离项目,后端代码有两个版本:一个是单体架构,另一个是微服务架构(对单体架构进行了微服务拆分)

项目地址

前端代码

a6678696/miaosha-web: 高并发商品秒杀系统前端代码(前后端分离项目) (github.com)

后端代码

单体架构版本

a6678696/MiaoSha: 高并发商品秒杀系统后端代码(前后端分离项目,单体架构版本) (github.com)

微服务架构版本

a6678696/miaosha-admin: 高并发商品秒杀系统后端代码(前后端分离项目,微服务架构版本) (github.com)

使用的技术

单体架构
技术说明
Spring Boot后端项目框架
Mybatis-Plus持久层框架
MySQL5.6数据库
Redis缓存中间件
RabbitMQ消息队列
Vue.js前端JavaScript框架
Element基于 Vue 2.0 的桌面端组件库
微服务架构

在单体架构的基础上,多使用了以下技术:

技术说明
Spring Cloud微服务框架
Spring Cloud Alibaba阿里微服务框架
Nacos微服务注册中心
OpenFeignWeb服务客户端
Gateway微服务网关

功能介绍

  1. 用户注册与登录
  2. 查看正在秒杀的商品列表
  3. 查看正在秒杀的商品详情
  4. 秒杀商品,成功后下单
  5. 30分钟未支付自动取消订单并释放商品和秒杀商品的库存
  6. 模拟支付

秒杀流程图

图片展示

注册界面

image-20220409230821932

登录界面

image-20220409230831836

查看正在秒杀的商品

image-20220409230857976

秒杀页面

image-20220409230919527

我的订单

image-20220409230953051

模拟支付

image-20220409231011260

注销登录

image-20220409231025055

模拟海量用户秒杀

用户批量注册

下面方法批量注册1000个用户到数据库中,如果是导入我的数据库文件可忽略此步

image-20220409231858593

用户批量登录

执行这步前要先注册用户,如果是微服务架构就请求http://localhost:8080/user/loginAuto 这个接口即可实现批量登录,并把对应的userId和Token保存到TXT文件中

image-20220409231653964

测试

并发测试使用JMeter这个软件,安装与使用教程查看这几篇博客:标签: JMeter | LeDao 的博客 (zoutl.cn)

测试前先删除Redis中对应的秒杀商品的key,确认可秒杀商品的数量不为0

测试的接口为:http://localhost:8080/order/save,参数如下图所示

image-20220409232540517

配置Gateway的IP限流

多种限流方式查看博客:Gateway 的基本使用 | LeDao 的博客 (zoutl.cn)

IP限流只在微服务架构版本有用,配置类ipKeyResolver已经写好了,现在只需要配置miaosha-gateway微服务的spring-cloud.yml配置就行了,完整配置如下:

spring:
  application:
    name: miaosha-gateway
  cloud:
    nacos:
      discovery:
        namespace: 8b2d6583-c0a0-43bd-a2a8-b215eba8c70e
        group: miaosha
        server-addr: 192.168.0.141:8848
    gateway:
      globalcors:
        cors-configurations:
          '[/**]':
              allowCredentials: true
              allowedHeaders: "*"
              allowedOrigins: "*"
              allowedMethods: "*"
      routes:
        - id: user_router
          uri: lb://miaosha-user
          predicates:
            - Path=/user/**

        - id: goods_router
          uri: lb://miaosha-goods
          predicates:
            - Path=/miaoShaGoods/**

        - id: order_router
          uri: lb://miaosha-order
          predicates:
            - Path=/order/**
          filters:
            - name: RequestRateLimiter
              args:
                redis-rate-limiter.replenishRate: 1 #令牌桶每秒填充速率
                redis-rate-limiter.burstCapacity: 2 #令牌桶总容量
                redis-rate-limiter.requestedTokens: 1 # 每次请求消耗1个
                key-resolver: "#{@ipKeyResolver}"
  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值