Code Monkey home page Code Monkey logo

seckill's Introduction

基于 SpringBoot+Mybatis+Redis+RabbitMQ 秒杀系统

友情项目

📣📣📣 Libra-Platform微服务平台。基于SpringCloud & SpringCloudAlibaba & SpringBoot & Vue3开发,基于多租户SaaS模式的设计,拥有强大的用户中心(一个账号对应多业务身份),权限基于RBAC设计,支持蓝绿灰度发布、网关动态路由、服务治理(流量控制、熔断降级、系统自适应保护、服务鉴权)等功能。

地址: https://github.com/hfbin/LibraPlatform

项目启动说明

1、启动前,请配置 application.properties 中相关redis、mysql、rabbitmq(需要提前创建好队列,队列名称:seckill.queue)地址。

2、登录地址:http://localhost:8888/page/login

3、商品秒杀列表地址:http://localhost:8888/goods/list

其它说明

1、数据库共有一千个用户左右(手机号:从18077200000~18077200998 密码为:123456),为压测准备的。(使用 cn.hfbin.seckill.util.UserUtil.java该类生成的,生成token做压测也是在此类里面)

2、此项目共有两个分支,master分支只是完成了秒杀的所有业务逻辑功能,并没有优化。V2.0分支做了优化如下:

1)、页面缓存、商品详情静态化、订单静态化(感兴趣可以把所有页面都做静态化)
2)、加入消息队列RabbitMQ,对秒杀接口进行优化。
3)、隐藏秒杀接口地址
4)、接口限流防刷
5)、解决超卖问题

页面截图

登录页 123 商品列表情页 123 商品详情页 123 订单详情页 123

seckill's People

Contributors

gre-make avatar hfbin avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

seckill's Issues

要不要先判断是否已经秒杀,再预减库存呢?

//预减库存
long stock = redisService.decr(GoodsKey.getSeckillGoodsStock, "" + goodsId);//10
if (stock < 0) {
localOverMap.put(goodsId, true);
return Result.error(CodeMsg.MIAO_SHA_OVER);
}
//判断是否已经秒杀到了
SeckillOrder order = seckillOrderService.getSeckillOrderByUserIdGoodsId(user.getId(), goodsId);
if (order != null) {
return Result.error(CodeMsg.REPEATE_MIAOSHA);
}

请问V2分支启动RabbitMQ报错如何解决?

关键报错信息如下:
#method<channel.close>(reply-code=404, reply-text=NOT_FOUND - no queue 'seckill.queue' in vhost '/', class-id=50, method-id=10)
项目代码未更改,本地RabbitMQ已安装,并且可以打开Manager的web界面,之前没接触过RabbitMQ,网上搜了许多问题解答, 也是看得有点蒙,希望大佬能解答一下,万分感谢!

秒杀接口库存判断问题

我简单看了一下秒杀接口这里
--1、判断是否已经秒杀到了
--2、预减库存
--3、入mq
----4、判断商品数量
----5、判断是否已经秒杀到了
----6、商品库存减一、添加信息进订单、插入秒杀表
疑问:这里上层出现了redis预减库存,但真实减去库存是第六步数据库,这就会出现数据库还有库存,但是redis已经没有库存的情况。
比如:我同一个用户第一次秒杀成功,在订单没生成的时候继续秒杀。这就会出现redis减去了两次,但是在数据库中只减去了一次(极端情况下,数据库减去两次,同一个用户生成两个订单)。
我只是简单的看了下,没有具体运行操作。验证的话,直接在第六步写库之前写一个睡眠延长订单入库时间,请帮我验证并解答一下。

项目来源

请问大佬有这个项目的完整教程吗?类似视频资源

前端页面打不开

我配置完application文件尝试打开localhost:8888/page/login,浏览器的页面只显示404, 配置文件中的端口,thymeleaf和static的相关配置已经配上了,但是还是打开不了登录界面,页面只显示404,为什么。是不是需要把后端功能完善掉才可以正常打开啊?

redis 是否起到了效果?

SeckillOrderServiceImpl,我看你这里的逻辑,商品的查找更新库存还是直接找的是数据库,那么redis是否很好的发挥了作用呢?

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.