我是靠谱客的博主 乐观宝马,最近开发中收集的这篇文章主要介绍Java秒杀抢购-SpringBoot-jseckill(github源码)jseckill,觉得挺不错的,现在分享给大家,希望可以做个参考。

概述

jseckill

电商秒杀程序, 乐观锁,Spring Boot.

如果该项目对您有帮忙,您可以右上角’star’支持一下,谢谢!

演示地址

? http://jseckill.appjishu.com

Star me on GitHub

? https://github.com/bootsrc/jseckill

演示

[外链图片转存失败(img-ehMOIcLq-1566535597258)(https://raw.githubusercontent.com/bootsrc/jseckill/master/doc/image/demo-1.jpg)]
   [外链图片转存失败(img-TQKQzoB7-1566535597259)(https://raw.githubusercontent.com/bootsrc/jseckill/master/doc/image/demo-2.jpg)]

[外链图片转存失败(img-FPqm8Xba-1566535597260)(https://raw.githubusercontent.com/bootsrc/jseckill/master/doc/image/demo-3.jpg)]

技术栈

1.Spring Boot
2.MyBatis
3.Redis
4.Thymeleaf
5.Bootstrap
6.RabbitMQ

高并发优化手段

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

2.减库存时,在同一事务内,先"插入记录",再"更新库存", 能有效减少行锁的作用时间.

数据库更新操作,采用乐观锁,提高并发性

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

4.前端静态文档部署到CDN, 缺少资金的公司可以选择动静分离

动静分离:把静态资源(js,css,图片)直接部署放到nginx, 动态服务还在原有的tomcat/SpringBoot里。

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

6.RabbitMQ异步处理秒杀记录

秒杀过程

1.RateLimiter限流。 并发量大的时候,直接舍弃掉部分用户的请求
2.Redis判断是否秒杀过。避免重复秒杀。如果没有秒杀过,则在Redis秒杀(减库存,并记录已秒杀成功者的userPhone)
3.发送秒杀记录到RabbitMQ,并且马上返回结果到客户端
4.监听RabbitMQ的队列消息, 一条条地读取消息后,操作数据库。插入秒杀记录和减库存。
并手动ACK队列
详情见源码文档

TODO
进一步的优化:等到CountDownLatch每积累20个,才去操作redis, 直接decrby 10

未完待续

演示地址
? http://jseckill.appjishu.com

现在工作略忙,后面抽空完善技术文档
?⭐⭐⭐❤❤❤

GitHub地址,路过的帮忙点个星星star,谢谢?
? https://github.com/bootsrc/jseckill

有代码改进优化的建议的统一在Issues里面提

加群讨论

[外链图片转存失败(img-SGM1QiW7-1566535597263)(https://raw.githubusercontent.com/bootsrc/jseckill/master/doc/image/group-qrcode.png)]

最后

以上就是乐观宝马为你收集整理的Java秒杀抢购-SpringBoot-jseckill(github源码)jseckill的全部内容,希望文章能够帮你解决Java秒杀抢购-SpringBoot-jseckill(github源码)jseckill所遇到的程序开发问题。

如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(50)

评论列表共有 0 条评论

立即
投稿
返回
顶部