Skip to content

TangBaoliang/distribute-seckill

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

1 Commit
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

分布式秒杀系统实现

技术栈

SpringBoot + Redis + MyBatis + MySQL + RabbitMQ + Dubbo + ZooKeeper

主要技术点

  1. 采用 dubbo 远程调用框架, zookeeper 作为注册中心,分离出商品模块和支付模块
  2. 使用 Redis 存储用户授权 token, 实现分布式会话
  3. 使用自定义mvc配置器、拦截器、自定义注解、自定义参数解析器实现了用户非法请求拦截和方法参数填充等功能
  4. 使用 Redis 数据自动过期功能实现对单个用户针对特定接口的访问限流
  5. 使用 Redis 运行 lua 脚本实现的令牌桶算法并搭载Spring AOP 和 自定义注解对秒杀接口进行分布式限流
  6. 使用 Redis 实现秒杀预减库存功能,加快秒杀过程中库存访问的速度,减少数据库压力
  7. 使用 RabbitMQ 实现异步减库存和创建订单,提高秒杀系统的吞吐量和抗压能力
  8. 通过 RabbitMQ 消息广播模式和 SSE 技术向 web 客户端推送下单成功的消息,利于应用服务器集群拓展

模板页面缓存机制

  1. 缓存在哪里 存在redis中
  2. 怎么存 可以用页面的路径作为键,整个页面作为值,前提是页面对数据变化和准确度不敏感,容忍一定的数据误差,牺牲准确度来提高访问速度
  3. 怎么取
  1. 每次请求来时先判断是否开启了页面缓存,如果没有动态获取数据渲染模板,否则进入下一步
  2. 根据路径去取缓存,如果取出来不为空直接返回到前端,否则进入下一步
  3. 手动将数据渲染得到静态页面的字符串形式,先存入缓存,然后再返回给前端

待完成

  • 实现 订单超时关闭功能力
  • 实现网站访问数量统计
  • 实现分布式事务

About

No description, website, or topics provided.

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published