如何应对雪崩式的请求

如何应对雪崩式请求?

雪崩式请求:当服务提供方由于某种原因挂掉导致服务调用方阻塞,最终引发系统的雪崩式崩溃称为雪崩。

通常可分为两种:缓存雪崩和应用雪崩

缓存雪崩:缓存服务器挂掉、突发流量导致局部缓存失效、热点缓存失效;常用三种解决方案:为不同的缓存设置不同的失效时间,避免缓存集中失效;使用锁机制控制数据库访问及重新更新缓存;HA设计(redis集群、读写分离等)

雪崩发生时间分类:程序BUG、突发流量、缓存失效、线程等待、数据库压力、服务器故障

应用程序雪崩分为两类:容错机制(熔断机制、隔离机制)和预防机制(超时机制)

隔离机制:1)服务提供方为每一个依赖都申请一个线程池,可应对突发请求;2)服务提供方严格控制请求处理的数量,无法应对突发请求(原子变量或者令牌桶算法)。

熔断机制:1)容错阈值;2)重试等待时长;3)重试请求,服务器调用方会监控服务的相关信息,例如CPU、内存、线程数、请求失败次数等信息,监测是否达到阈值,状态的切换如下图。

熔断机制状态图

第三个就是超时处理:任务被加入中间队列时增加时间戳,对于服务提供方而言当任务等待时间过长、或者任务处理时间过长就会立即返回失败或者降级处理。

posted @ 2020-07-31 15:15  阿龙233  阅读(308)  评论(0编辑  收藏  举报