SpringBoot + Redis + MyBatis + MySQL + RabbitMQ + Dubbo + ZooKeeper
- 采用 dubbo 远程调用框架, zookeeper 作为注册中心,分离出商品模块和支付模块
- 使用 Redis 存储用户授权 token, 实现分布式会话
- 使用自定义mvc配置器、拦截器、自定义注解、自定义参数解析器实现了用户非法请求拦截和方法参数填充等功能
- 使用 Redis 数据自动过期功能实现对单个用户针对特定接口的访问限流
- 使用 Redis 运行 lua 脚本实现的令牌桶算法并搭载Spring AOP 和 自定义注解对秒杀接口进行分布式限流
- 使用 Redis 实现秒杀预减库存功能,加快秒杀过程中库存访问的速度,减少数据库压力
- 使用 RabbitMQ 实现异步减库存和创建订单,提高秒杀系统的吞吐量和抗压能力
- 通过 RabbitMQ 消息广播模式和 SSE 技术向 web 客户端推送下单成功的消息,利于应用服务器集群拓展
- 缓存在哪里
存在redis中
- 怎么存
可以用页面的路径作为键,整个页面作为值,前提是页面对数据变化和准确度不敏感,容忍一定的数据误差,牺牲准确度来提高访问速度
- 怎么取
- 每次请求来时先判断是否开启了页面缓存,如果没有动态获取数据渲染模板,否则进入下一步
- 根据路径去取缓存,如果取出来不为空直接返回到前端,否则进入下一步
- 手动将数据渲染得到静态页面的字符串形式,先存入缓存,然后再返回给前端
- 实现 订单超时关闭功能力
- 实现网站访问数量统计
- 实现分布式事务