Skip to content

joeBeckham/seckill

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

3 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

seckill

秒杀

简介:

基于SpringBoot(2.0.3)的微服务的秒杀示例,整合Mybatis-Plus、druid、Swagger2、redis, 添加了自定义消息转换器、全局异常、全局处理器、拦截器等, 可以作为后端服务的开发脚手架。代码简洁,架构清晰,非常适合学习使用。

项目中包含单应用限流 和 分布式限流,其中,单应用限流采用了谷歌guava令牌桶限流,分布式 限流借助第三方组件Redis实现,通过调用lua脚本实现自增,记录流量。

应用工具:

  • [数据库] MySQL 5.7.21,sql脚本见src/main/resources/static/seckill.sql
  • [Jmeter] Jmeter脚本见src/main/resources/static/线程组.jmx
  • [Redis] win 64位
  • [IDEA] 采用 Intellij IDEA(2018.1 EAP) 来编写

项目地址

[github] https://github.com/joeBeckham/seckill.git

秒杀流程

  • 校验库存
  • 有库存,则库存减1
  • 乐观锁增加订单

运行步骤:

  • 导入MySQL脚本
  • 运行Redis
  • 修改application.yml中的数据库信息 和 Redis配置信息
  • 运行main方法
  • Jmeter打开线程组脚本,运行后 查看数据库连接:show full PROCESSLIST;,数据库连接大约有10个。或者登陆druid后台查看sql执行数。 查看数据库中 stock_order中订单数和stock中的已售和version的值,发现并没有超卖。

如果需要重复测试,可使用如下sql还原默认:

-- 清除订单表
TRUNCATE stock_order;
-- 还原库存表已售数量和version
update stock set sale = 0,version=0 where id = 1;

特别说明

About

基于SpringBoot(2.0.3)的微服务的单应用秒杀、分布式秒杀示例

Topics

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published