设计一个秒杀系统挑战和问题及方案或思路
秒杀系统挑战和问题
1.并发读:秒杀系统必然会造成高并发,对整个链路的压力会非常大,现有的系统是否能承受得住
2.并发写:如何在高并发下正确更新产品数量,避免造成订单数量大于库存数量这种情况发生
3.高可用:计划不管多完美,总是会有意外发生,意外发生时是否有对应的备份方案
方案或思路
页面动静分离:将秒杀页面尽量做成静态页面,充分利用 CDN 服务进行缓存,减少直接请求源服务器的压力
上游限流:秒杀是上游请求非常大,但是秒杀成功的请求远比实际请求数量少,所以利用设计思路在上游限流,秒杀不成功的请求直接返回失败页面,减少下游链路的压力
减少数据库操作:系统的瓶颈往往在于数据库的读写,充分利用缓存机制,减少数据库的读写操作,消除瓶颈
利用队列:将成功的请求放入队列,进行消峰,通过异步处理,减少前端失去响应的可能
消除单点实现高可用:在系统中消除单点结构,至少保证每个节点有备份节点,实现高可用
评论