什么是秒杀
短时间(瞬时),大量请求,买一个(数量少)商品
解决:高并发(读,写)
秒杀系统目标
稳:高可用,系统稳定的提供服务
准:超卖,数据一致性问题
快:高性能(优化的点)
防:防止无效请求到服务
架构原则
- 减少用户和服务端的交互
数据要少:请求参数和响应参数要少,降低对网络的占用,降低对cpu的消耗(参数的压缩和解压),对IO数据库。非必要的信息不要来回传
请求数要少:合并请求
路径要短:
依赖要少:花里胡哨的减少,优先级高的展示,低的去掉
保证高可用:负载均衡,水平扩展(服务无状态)
动静数据分离
数据区分:url,用户,浏览的时间,地域,cookie(缓存信息) -> 静态数据。 cdn,负载均衡
商品详情 url:详情(json)
放到离用户最近的地方。 cdn,(浏览器缓存,服务器缓存 guava cache 或 map,第三方缓存redis,文件缓存等)
根据不同的用户类型做缓存
CSI (Client side include) iframe ajax 局部刷新
热点数据
本来卖衣服秒杀,系统都为衣服服务,结果 水果商家推广,成了秒杀商品
识别热点数据
监控,追踪 用户访问,添加购物车,下单,统计分析(经验,BI)
发现热点数据:分析日志,添加队列,系统订阅
处理热点数据
优化:LRU算法