基于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;