如何应对雪崩式的请求

Posted zhilong233

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了如何应对雪崩式的请求相关的知识,希望对你有一定的参考价值。

如何应对雪崩式请求?

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

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

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

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

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

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

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

技术图片

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

以上是关于如何应对雪崩式的请求的主要内容,如果未能解决你的问题,请参考以下文章

如何应对缓存穿透和缓存雪崩问题?讲的明明白白!

架构分布式系统雪崩效应处理方案

Hystrix原理讲解

如何创建规则(HTTP 请求重定向不应对伪造攻击开放 - RSPEC-5146)java 插件

分布式架构进阶:如何应对高并发的用户请求

互联网应用如何进行流量削峰,应对瞬间请求?