栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Java

高并发商品秒杀系统

Java 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

高并发商品秒杀系统

说明

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

项目地址 前端代码

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. 模拟支付
秒杀流程图

图片展示 注册界面

登录界面

查看正在秒杀的商品

秒杀页面

我的订单

模拟支付

注销登录

模拟海量用户秒杀 用户批量注册

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

用户批量登录

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

测试

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

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

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

配置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}"
转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/886009.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号