All Projects → ZeroWdd → seckill_parent

ZeroWdd / seckill_parent

Licence: other
基于springboot+springcloud的高并发和商品秒杀项目,通过redis,rabbitmq等技术实现秒杀的高并发。

Programming Languages

java
68154 projects - #9 most used programming language

Projects that are alternatives of or similar to seckill parent

Mall
mall项目是一套电商系统,包括前台商城系统及后台管理系统,基于SpringBoot+MyBatis实现,采用Docker容器化部署。 前台商城系统包含首页门户、商品推荐、商品搜索、商品展示、购物车、订单流程、会员中心、客户服务、帮助中心等模块。 后台管理系统包含商品管理、订单管理、会员管理、促销管理、运营管理、内容管理、统计报表、财务管理、权限管理、设置等模块。
Stars: ✭ 54,797 (+92776.27%)
Mutual labels:  rabbitmq, springboot, mybatis, springcloud
Java-CS-Record
记录准备春招实习过程中,学习与复习的知识(模块化整理,非面试题速成)。注:暂停更新,后续请移步博客
Stars: ✭ 73 (+23.73%)
Mutual labels:  rabbitmq, springboot, mybatis, springcloud
Goodskill
🐂基于springcloud +dubbo构建的模拟秒杀项目,模块化设计,集成了分库分表、elasticsearch🔍、gateway、mybatis-plus、spring-session等常用开源组件
Stars: ✭ 786 (+1232.2%)
Mutual labels:  rabbitmq, springboot, mybatis, springcloud
robert
基于SpringCloud的企业级微服务多租户系统、多语言的脚手架, 代码组件化、高内聚低耦合,代码简介,注释丰富容易上手,该项目包括用于开发分布式应用程序服务的必要组件,支持多应用程序访问,并使开发人员可以轻松地使用Spring Cloud编程模型来开发分布式应用程序服务。
Stars: ✭ 45 (-23.73%)
Mutual labels:  rabbitmq, springboot, mybatis, springcloud
vm-engine
vm-engine为“微视频”网站的后端,java语言开发。涉及技术包括,springboot,springcloud,mybaties,docker,websocket,rabbitmq,redis等。
Stars: ✭ 57 (-3.39%)
Mutual labels:  rabbitmq, springboot, mybatis, springcloud
Supermarket
设计精良的网上商城系统,包括前端、后端、数据库、负载均衡、数据库缓存、分库分表、读写分离、全文检索、消息队列等,使用SpringCloud框架,基于Java开发。该项目可部署到服务器上,不断完善中……
Stars: ✭ 1,278 (+2066.1%)
Mutual labels:  rabbitmq, springboot, mybatis, springcloud
Mall Learning
mall学习教程,架构、业务、技术要点全方位解析。mall项目(40k+star)是一套电商系统,使用现阶段主流技术实现。涵盖了SpringBoot 2.3.0、MyBatis 3.4.6、Elasticsearch 7.6.2、RabbitMQ 3.7.15、Redis 5.0、MongoDB 4.2.5、Mysql5.7等技术,采用Docker容器化部署。
Stars: ✭ 10,236 (+17249.15%)
Mutual labels:  rabbitmq, springboot, mybatis, springcloud
Mall Swarm
mall-swarm是一套微服务商城系统,采用了 Spring Cloud Hoxton & Alibaba、Spring Boot 2.3、Oauth2、MyBatis、Docker、Elasticsearch、Kubernetes等核心技术,同时提供了基于Vue的管理后台方便快速搭建系统。mall-swarm在电商业务的基础集成了注册中心、配置中心、监控中心、网关等系统功能。文档齐全,附带全套Spring Cloud教程。
Stars: ✭ 7,874 (+13245.76%)
Mutual labels:  rabbitmq, springboot, mybatis, springcloud
Pdf
编程电子书,电子书,编程书籍,包括C,C#,Docker,Elasticsearch,Git,Hadoop,HeadFirst,Java,Javascript,jvm,Kafka,Linux,Maven,MongoDB,MyBatis,MySQL,Netty,Nginx,Python,RabbitMQ,Redis,Scala,Solr,Spark,Spring,SpringBoot,SpringCloud,TCPIP,Tomcat,Zookeeper,人工智能,大数据类,并发编程,数据库类,数据挖掘,新面试题,架构设计,算法系列,计算机类,设计模式,软件测试,重构优化,等更多分类
Stars: ✭ 12,009 (+20254.24%)
Mutual labels:  rabbitmq, springboot, mybatis, springcloud
Spring Boot Examples
about learning Spring Boot via examples. Spring Boot 教程、技术栈示例代码,快速简单上手教程。
Stars: ✭ 26,812 (+45344.07%)
Mutual labels:  rabbitmq, springboot, mybatis, springcloud
taotao-cloud-project
微服务开发脚手架,包括大数据模块、微服务模块、前端模块。基于Spring Cloud Alibaba的微服务架构。提供技术框架的基础能力的封装,减少开发工作,只关注业务,包含了工作以来的工作总结和技术沉淀
Stars: ✭ 76 (+28.81%)
Mutual labels:  springboot, mybatis, springcloud
Leyou
传智黑马乐优商城项目后台管理系统
Stars: ✭ 75 (+27.12%)
Mutual labels:  rabbitmq, springboot, springcloud
Fw Cloud Framework
基于springcloud全家桶开发分布式框架(支持oauth2认证授权、SSO登录、统一下单、微信公众号服务、Shardingdbc分库分表、常见服务监控、链路监控、异步日志、redis缓存等功能),实现基于Vue全家桶等前后端分离项目工程
Stars: ✭ 717 (+1115.25%)
Mutual labels:  rabbitmq, springboot, springcloud
Springboot Templates
springboot和dubbo、netty的集成,redis mongodb的nosql模板, kafka rocketmq rabbit的MQ模板, solr solrcloud elasticsearch查询引擎
Stars: ✭ 100 (+69.49%)
Mutual labels:  rabbitmq, springboot, mybatis
Superman
Superman是什么:构建Java 高级开发技术的知识体系,从基础不断打怪升级成为超人之路(更新中.......)
Stars: ✭ 106 (+79.66%)
Mutual labels:  rabbitmq, springboot, mybatis
Spring Boot Examples
个人学习 SpringBoot2.x 写的一些示例程序,目前正在持续更新中.....
Stars: ✭ 159 (+169.49%)
Mutual labels:  rabbitmq, springboot, mybatis
Spring Boot Quick
🌿 基于springboot的快速学习示例,整合自己遇到的开源框架,如:rabbitmq(延迟队列)、Kafka、jpa、redies、oauth2、swagger、jsp、docker、spring-batch、异常处理、日志输出、多模块开发、多环境打包、缓存cache、爬虫、jwt、GraphQL、dubbo、zookeeper和Async等等📌
Stars: ✭ 1,819 (+2983.05%)
Mutual labels:  rabbitmq, springboot, mybatis
Springbootlearning
《Spring Boot教程》源码
Stars: ✭ 2,065 (+3400%)
Mutual labels:  rabbitmq, mybatis, springcloud
Myth
Reliable messages resolve distributed transactions
Stars: ✭ 1,470 (+2391.53%)
Mutual labels:  rabbitmq, springboot, springcloud
Javacollection
Java开源项目之「自学编程之路」:学习指南+面试指南+资源分享+技术文章
Stars: ✭ 2,957 (+4911.86%)
Mutual labels:  rabbitmq, springboot, springcloud

电商项目秒杀系统实战

初始

大三学生准备实习找工作,写下这个小项目。

项目秒杀系统封装还不算太好,后续打算写一个商城项目并运用其中进行二次开发。

希望喜欢的同学能给个star,谢谢。

开发工具

IntelliJ IDEA

开发环境

JDK Maven Mysql SpringBoot springcloud Redis RabbitMQ
1.8 3.5.2 5.7 2.0.4.RELEASE Finchley.M9 3.2 3.7.14

使用说明

  1. 下载代码 git clone https://github.com/ZreoWdd/seckill_parent.git 将项目下载到IDEA里面
  2. 运行sql文件夹下的sql文件
  3. 到src/main/resources下的application.yml下修改你的数据库链接用户名与密码
  4. 安装redis、mysql、rabbitmq、maven等环境
  5. 启动前,检查配置 application.yml 中相关redis、mysql、rabbitmq地址

秒杀的业务特点

1、瞬时并发量大:大量用户会在同一时间抢购,网站流量瞬间激增。

2、库存少:一般都是低价限量,而访问的数量远远大于库存数量,只有极少数人成功。

3、业务流程简单:流程短,立即购买,下订单,减库存。

4、前期预热:对于还未开启活动的秒杀商品,以倒计时的方式显示,只能访问不能下单。

设计思路

sign.png

1、限流:只能让秒杀成功的一小部分人进入到后台,和数据库进行交互,来减少数据库服务器的压力。

2、缓存:将部分业务逻辑写到缓存里,例如:商品限购数量、秒杀政策等。

3、异步:将业务逻辑拆分,减少服务器压力,例如:正常业务流程是下订单、付款、减库存同一时间完成,秒杀时可以将业务逻辑拆分。

4、预热:商家进行宣传,并提前设置好秒杀的商品、秒杀时间、限购数量,将设置的商品写入 redis 缓存。

5、展示:页面分为两层,第一层是商品列表页,第二层是商品详情页,通过商品列表页链接进入商品详情页,秒杀开始前,展示商品秒杀倒计时,不允许操作提交订单,只允许查看商品详情。秒杀开始时,展示商品秒杀到期时间。

6、提交订单:秒杀提交完订单将 redis 缓存里的数量减少,并提示支付。

7、队列操作:当支付成功之后,将秒杀成功详情写入 rabbitMQ,订单服务进行监听接收消息写入订单,库存服务进行监听接收消息减少库存。

8、时间服务器:页面服务端通过负载进行布署,各服务器时间可能会不一致,因此增加时间服务,来提供统一的时间。

技术架构

架构

整体架构图:

Eureka Client:

时间服务(leyouTimeServer,端口号8000):为页面服务提供时间统一的接口。

商品服务(leyouStock,端口号7000):对外提供的接口(商品列表、商品详情、秒杀政策)。

库存服务(leyouStorage,端口号6001):队列监听,在队列中提取消息与数据库交互减少库存。

会员服务(leyouUser,端口号5000):为页面服务提供会员数据接口,会员的添加、修改、登录。

订单服务(leyouOrder,端口号4000):队列监听,在队列中提取消息与数据库交互生成订单。

页面服务(leyouClient,端口号3000):为前端页面提供数据接口。

Eureka Server:

注册中心(leyouServer,端口号9000)各服务都在注册中心进行注册。

配置中心 (leyouConfig):提供所有服务需要的配置。

Redis的应用:

redis

缓存商品数量、秒杀政策。

商家对秒杀政策、商品限量进行设置,设置完成写入Redis。

消费者访问商品详情,提交订单之后,从Redis中减少商品数量。

Redis里存取内容:

1、在政策新增的时候存入,key的值为:LIMIT_POLICY_{sku_id},value的值为政策内容

2、商品列表取数据时,通过key(LIMIT_POLICY_{sku_id}),取出政策内容。

3、政策到期之后,自动删除。

RabbitMQ的应用:

RabbitMQ

消费者提交订单,自动写入订单队列:

订单队列:订单服务监听订单队列,接收到消息之后将队列信息写入数据库订单表。

消费者付款之后,更新订单状态,更新成功之后写入库存队列

库存队列:库存服务监听库存队列,接收到消息之后将库存信息写入数据库减少库存。

数据库结构

databaseTable.png

项目描述

  1. 使用springcloud进行分布式,让多台服务器可以响应。
  2. 使用redis做缓存提高访问速度和并发量,减少数据库压力。
  3. 使用页面静态化,缓存页面至浏览器,前后端分离降低服务器压力。
  4. 使用消息队列完成异步下单,提升用户体验,削峰和降流。

项目测试

  1. 新建秒杀政策 地址 : http://localhost/seckillClient/page/limitPolicyPage.html

    limitpolicyPage.png选择商品,输入秒杀价格、秒杀库存、开始时间、结束时间,点保存。

    limitPolicypage2.png

  2. 登录页面 地址:http://localhost/seckillClient/page/loginPage.html

limitPolicypage2.png

  1. 商品列表页 地址:http://localhost/seckillClient/page/stockListPage.html

stocklist.png

  1. 商品详情页 地址:http://localhost/seckillClient/page/stockDetailPage.html?sku_id=27359021557

stockpage.png

  1. 提交订单 在商品详情页中点击【立即抢购】 地址:http://localhost/seckillClient/page/createOrderPage.html?sku_id=27359021557

createorderpage.png

  1. 付款页面 在提交订单页面点击【提交订单】 地址:http://localhost/seckillClient/page/payPage.html?order_id=1565061554849

createorderpage.png点击【微信支付】,提示“支付成功”

paysuccess.png

Note that the project description data, including the texts, logos, images, and/or trademarks, for each open source project belongs to its rightful owner. If you wish to add or remove any projects, please contact us at [email protected].