JAVA秒杀系统学习
- 框架
- Thymeleaf:页面模板
- MyBatis访问数据库
- JSR303服务端验证框架,参数校验
- SpringBoot微服务框架
- Druid 数据库链接池
- JSR303
- 分布式session
- token: session ID,标识用户
- 集群里同步session
- 用户信息写到redis中,和token绑定
- Redis缓存+静态化分离
- 页面缓存+URL缓存+对象缓存
- 页面缓存:将页面缓存到redis中
- URL缓存:带参数的页面缓存
- 对象缓存
- 页面静态化,前后端分离,存HTML
- 利用浏览器的缓存静态数据
- 动态内容从服务端接口中获取
- 解决卖超
- 加唯一索引,防止重复购买
- 静态资源优化
- RabbitMQ+接口优化
- 接口优化
- Redis预减库存减少数据库访问
- 内存标记减少Redis访问
- 请求先入队缓冲,异步下单
- Nginx水平扩展
- 数据库分库分表中间件:mycat
- 解决超卖问题
- 数据库加唯一索引,防止用户重复购买
- SQL加库存数量判断,防止变为负数
- RabbitMQ四种交换机模式(发到交换机,再由交换机到MQ)
- Direct模式
- Topic模式
- Fanout模式 广播
- Header模式
- nginx横向扩展
- 配置反向代理,给服务器集群,weight是表示权重(负载均衡)
- 总结
- Spring Boot搭建项目环境
- 集成Thymeleaf作为页面模板,Result结果封装
- 集成Mybatis+Druid作为数据访问层的ORM框架
- 集成Jedis+Redis
- 分布式Session
- JMeter进行压测
- 页面缓存,页面静态化
- Redis预减库存、内存标记、RabbitMQ异步下单、Nginx水平扩展
- 秒杀接口地址隐藏、数学公式验证码、接口防刷