如何应对雪崩式的请求
Posted zhilong233
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了如何应对雪崩式的请求相关的知识,希望对你有一定的参考价值。
如何应对雪崩式请求?
雪崩式请求:当服务提供方由于某种原因挂掉导致服务调用方阻塞,最终引发系统的雪崩式崩溃称为雪崩。
通常可分为两种:缓存雪崩和应用雪崩
缓存雪崩:缓存服务器挂掉、突发流量导致局部缓存失效、热点缓存失效;常用三种解决方案:为不同的缓存设置不同的失效时间,避免缓存集中失效;使用锁机制控制数据库访问及重新更新缓存;HA设计(redis集群、读写分离等)
雪崩发生时间分类:程序BUG、突发流量、缓存失效、线程等待、数据库压力、服务器故障
应用程序雪崩分为两类:容错机制(熔断机制、隔离机制)和预防机制(超时机制)
隔离机制:1)服务提供方为每一个依赖都申请一个线程池,可应对突发请求;2)服务提供方严格控制请求处理的数量,无法应对突发请求(原子变量或者令牌桶算法)。
熔断机制:1)容错阈值;2)重试等待时长;3)重试请求,服务器调用方会监控服务的相关信息,例如CPU、内存、线程数、请求失败次数等信息,监测是否达到阈值,状态的切换如下图。
第三个就是超时处理:任务被加入中间队列时增加时间戳,对于服务提供方而言当任务等待时间过长、或者任务处理时间过长就会立即返回失败或者降级处理。
以上是关于如何应对雪崩式的请求的主要内容,如果未能解决你的问题,请参考以下文章