• 1.前言

什么是秒杀?双十一,双十二天猫京东优惠大促销,大量的用户去抢夺少量的商品,在段时间内抢完,称之为秒杀。典型的高并发应用场景。

  • 2.简介

电商秒杀系统,要求并发量特别大,用Java实现秒杀系统,可以很大程度提高自己的高并发架构能力。可能每秒钟用户连接数大概1000以上。需要确保网站后台正常流畅运行,用户抢到的数量和数据库中减少的库存量保持一致,并且数据库中记录秒杀数据不遗漏。并且用户操作不卡顿。jseckill项目,秒杀的英文单词是seckill,前面的j代表用Java语言实现。项目选择了Java语言实现,使用了消息队列,缓存,分布式锁等技术。

  • 3.技术选型

1.Spring Boot 
2.MySQL+MyBatis 
3.Redis 
4.Thymeleaf 
5.Bootstrap 
6.RabbitMQ 
7.zookeeper实现分布式锁

  • 4.架构图

系统部署架构图

  • 5.高并发优化手段

1.动静分离

前端静态文档部署到CDN, 缺少资金的公司可以用把静态资源部署到nginx静态站点上。

动静分离:把静态资源(js,css,图片)直接部署放到nginx, 动态服务还在原有的tomcat/SpringBoot里。nginx能够支持高达 50,000 个并发连接数的响应。远远高于Tomcat(大约几千个连接数,受制于系统对单进程内线程数量的限制),而且nginx很节省内存。

2.使用Google guava的RateLimiter来进行限流

3.暴露秒杀接口,暴露信息,作为不常更新的热点数据,贮存到Redis里

4.Java应用部署多个集群节点,之间使用nginx做负载均衡和反向代理,提高客户端可承载的并发数

5.Redis操作速度远远快于MySQl操作, 先在Redis里进行秒杀,然后发送消息到RabbitMQ。  Redis操作前,需要获取到分布式锁,操作完毕后释放分布式锁,确保同一时刻只会有一个线程操作Redis减库存操作。

6. 从RabbitMQ中一条条的读取消息,并更新到MySQL

减库存时,在同一事务内,先"插入记录",再"更新库存", 能有效减少行锁的作用时间。数据库更新操作,采用乐观锁,提高并发性

  • 6.后台秒杀过程

1.RateLimiter限流。 并发量大的时候,直接舍弃掉部分用户的请求

2.Redis判断是否秒杀过。避免重复秒杀。如果没有秒杀过,

在Redis操作前分布式加锁 Redis秒杀(减库存,并记录已秒杀成功者的userPhone) 。然后分布式解锁 。

3.发送秒杀记录到RabbitMQ,并且马上返回结果到客户端

4.监听RabbitMQ的队列消息, 一条条地读取消息后,操作数据库。插入秒杀记录和减库存。 并手动ACK队列

  • 7.源码与交流

GitHub源码(长按网址并复制到浏览器后打开)

https://github.com/liushaoming/jseckill

演示地址

http://jseckill.appjishu.com

Java实现电商秒杀系统-jseckill相关推荐

  1. Java电商秒杀系统性能优化(一)——电商秒杀系统框架回顾

    电商秒杀系统框架回顾 项目简介 外部依赖 框架回顾 项目要点 项目中存在的问题 小结 课程是免费的,课程地址如下:SpringBoot搭建电商秒杀项目,课程真的很棒,作者的思路很清晰,建议各位读者可以 ...

  2. 电商秒杀系统相关实现

    前言 本文主要就电商秒杀系统所涉及的相关技术进行探究,相关Demo地址如下: 个人实现版本:https://github.com/MrSorrow/seckill Github Star较高的版本,第 ...

  3. 毕业设计-电商秒杀系统

    目录 1.业务背景 2.基本场景 3.重点场景分析 3.1.浏览秒杀商品 3.2.下单 4.存储架构设计 5.计算架构设计 5.1.负载均衡 5.2.多级缓存 6.高可用设计 7.可扩展设计 8.高可 ...

  4. 电商库存锁_解密 Redis 助力双 11 背后电商秒杀系统

    作者:AlibabaCloud 来源:https://github.com/AlibabaCloudDocs/kvstore/blob/master/cn.zh-CN/最佳实践/使用%20Redis% ...

  5. java教程——电商秒杀系统介绍

    电商秒杀系统实战 QQ 1285575001 Wechat M010527 技术交流 QQ群599020441 纪年科技aming 高并发 缓存 异步化 前后端分离:MVVM框架 原生框架:jQ Bo ...

  6. 万字好文,电商秒杀系统架构分析与实战

    点击上方"朱小厮的博客",选择"设为星标" 后台回复"书",获取 后台回复"k8s",可领取k8s资料 1 秒杀业务分析 ...

  7. 万字好文,电商秒杀系统架构分析与实战!

    1 秒杀业务分析 正常电子商务流程 (1)查询商品:  (2)创建订单:  (3)扣减库存:  (4)更新订单:  (5)付款:  (6)卖家发货: 秒杀业务的特性 (1)低廉价格:  (2)大幅推广 ...

  8. 使用Redis搭建电商秒杀系统

    作者:小热爱 来源:https://juejin.cn/post/6955372476649963556 秒杀活动是绝大部分电商选择的低价促销.推广品牌的方式.不仅可以给平台带来用户量,还可以提高平台 ...

  9. 解密 Redis 助力双 11 背后电商秒杀系统

    背景 秒杀的特征 秒杀系统 背景 秒杀活动是绝大部分电商选择的低价促销.推广品牌的方式.不仅可以给平台带来用户量,还可以提高平台知名度. 一个好的秒杀系统,可以提高平台系统的稳定性和公平性,获得更好的 ...

最新文章

  1. 基于 OpenCV 的网络实时视频流传输
  2. Struts 2 标签库详解
  3. 001 从人物血量学习数据查找
  4. Jquery中进行post请求时同步与异步的区别(从实例入手学习)
  5. ubuntu导入python的包_在ubuntu环境下怎么利用python将数据批量导入数据hbase
  6. 交叉熵(cross_entropy)作为损失函数在神经网络中的作用
  7. ProjectFileManager 发布!项目文件管理效率提升10倍以上!
  8. python 字符串 find_Python 字符串 find() 方法
  9. layui使用弹出层 关闭后弹层的内容又显示出来
  10. Window Operations(窗口函数的使用)
  11. STM32的EXTI相关学习笔记
  12. 轻量化html编辑器,web端实现富文本编辑器
  13. selenium窗口截图操作
  14. java请求第三方接口
  15. 服装收银系统 服装收银 服装收银软件 收银软件 收银系统 好用的服装软件
  16. Echarts3——绘制世界地图中其他地方到中国城市
  17. 做PPT设计时,需优先设置好哪些功能
  18. 用php写的亲亲鲜花网站_PHP最新鲜花礼品商城网站整站源码(自适应手机端) 鲜花商城dedecms模板源码...
  19. (ESP32学习1)IO的输出高低电平与上下拉输入
  20. java房产源码_房产信息网源码 - WEB源码|JSP源码/Java|源代码 - 源码中国

热门文章

  1. 数学分析 定积分的应用(第10章)
  2. Python爬虫实战(5)斗图啦表情包下载(单线程)
  3. 【校招内推】阿里巴巴飞猪客户端 2019届提前批次校招开始啦
  4. python xpath爬取豆瓣图书Top 250存入csv文件并解决csv乱码问题
  5. 使用txt文档编写java文件
  6. canvas:绘制视频封面
  7. Cyberbot隐私政策
  8. linux pmap 进程信息,Linux pmap命令
  9. 国庆旅游注意了,小常识,希望对你有所帮助,别嫌我罗唆哦!
  10. JSON文本互转及JsonNode,ObjectNode,ArrayNode简单理解