秒杀系统的一些要点整理

秒杀系统的设计总归有一些套路设计, 总结了一些如下:

架构原则: 4要1不要

1.数据要尽量少;

  • 用户请求数据, 系统依赖数据, 能少尽量少

2.请求数要尽量少;

  • 页面请求数, 有些可以通过合并CSS和js文件来减少请求;

3.路径尽量短;

  • 请求经过的节点能少尽量少;
  • 多个相互强依赖的应用合并部署在一起, 把远程过程调用(RPC)变成JVM内部之间的方法调用

4.依赖尽量少;

  • 依赖的系统少;
  • 采用系统分级, 糟糕的时候实现系统降级;

5.不要有单点;

动静分离

1.把静态数据缓存到离用户最近的地方; (常见三种:用户浏览器,CDN或者服务器Cache)

2.静态化改造就是要直接缓存HTTP连接(不仅仅是缓存数据)

二八原则(针对热数据)

对热点数据整理的几个思路;(针对20%的热点数据进行针对性的优化)

  • 一是优化;
  • 二是限制;
  • 三是隔离;
    * 业务隔离;
    * 系统隔离;
    * 数据隔离;(多库)
    

流量削锋

1.通过队列来缓冲请求;

2.通过答题来延长请求发出的时间;

3.对请求进行分层过滤;(对数据进行多层过滤, 过滤掉读的, 最终减少写的压力)

优化思路

1.减少编码;(编码转化)(类型转换, 编码格式转换道理一样)

2.减少序列化

3.并发读优化(并发使用cas, volatile等优化)

4.JVM性能调优;

5.硬件条件提升;

6.缓存的合理分布:(静态缓存, 动态缓存, 全量和少量)

减库存思路

1.下单减库存;

2.付款减库存;

3.预扣库存;(比较复杂一点, 就是下单锁库存N分钟,然后自动释放)

4.并发小于1000简单用表的锁即可, 复杂用redis来分摊库存的记录, 保证不负数;

hyhcoder wechat
扫码关注我的个人订阅号