十堰做网站的工作室,做网站有包括哪些东西,贵阳有哪些可以制作网站的公司吗,调用wordpress数据什么是雪崩效应 雪崩就是塌方。在山坡上的积雪#xff0c;如果积雪的内聚力小于重力或其他力量#xff0c;则积雪便向下滑动#xff0c;从而逐渐引起积雪的崩塌。 在微服务架构中#xff0c;服务之间通常存在级联调用。比如#xff0c;服务A调用服务B#xff0c;而服…什么是雪崩效应 雪崩就是塌方。在山坡上的积雪如果积雪的内聚力小于重力或其他力量则积雪便向下滑动从而逐渐引起积雪的崩塌。 在微服务架构中服务之间通常存在级联调用。比如服务A调用服务B而服务B需要调用服务C而服务C又需要调用服务D。如果其中任意一点不可用或者存在响应延时则可能造成很多服务不可用即产生级联故障。 如果这类请求很多服务不可用导致积累的请求越来越多则占用的计算机资源越来越多太多的请求会很快耗尽系统的资源从而导致系统瓶颈出现造成其他的请求也不可用最终造成整个系统不可用。这种现象被称为“服务雪崩”。 简单的理解就是“服务提供者”不可用导致“服务消费者”不可用并将不可用逐渐放大到整个微服务系统进而造成系统崩溃。
造成服务雪崩的原因 微服务等分布式架构已经可以达到非常高的可用状态但依然有喝多不可控的系统因素导致雪崩。造成雪崩主要由一下7个原因。 流量激增 例如新闻事件、促销活动、爬虫采集、恶意攻击、用户重试等导致的访问量突然增大。 硬件故障 例如单点的硬件损坏使得集群的服务压力加大从而出现服务延迟服务延迟不断加剧导致雪崩。 程序中的BUG 程序中的BUG不可能完全避免。有的BUG并无大碍但又的BUG可能造成服务雪崩例如程序中有循环调用等逻辑问题或是资源未释放引起的内存泄漏等都可能导致服务雪崩。 缓存问题 缓存穿透、缓存击穿、缓存雪崩也可能导致服务雪崩。 1缓存穿透。 产生缓存穿透的原因是用户不断请求缓存或数据库中没有的数据。 对于缓存穿透可能通过一下方法来处理 在接口层增加效验如用户鉴权、防止爬虫。 增加ID的基础校验如设置当ID0或IDmax 的直接拦截请求。 将K-V对写为key-null对缓存有效时间可以在合理范围内设置长点但又不能设置得太长因为太长可能导致其他正常情况也没法使用。 2缓存击穿。 缓存击穿是指缓存中没有数据但数据库中有数据这时并发用户特别多去缓存中没有读到数据又去数据库中读取数据引起数据库压力瞬间增大。对于缓存击穿可能通过设置热点数据永不过期、加互斥锁等解决。 3缓存雪崩 缓存雪崩是指缓存中数据大批量过期而此时的查询量巨大从而引起数据库压力过大甚至宕机。 对于缓存雪崩可以通过把缓存书库的过期时间设置为随机防止同一时间有大量数据过期。如果缓存数据库是分布式部署的则可以将热点数据均匀地分布在不同的缓存数据库中。还可以设置热点数据永远不过期。 资源耗尽 资源耗尽主要由一下两种原因 1服务调用者不可以用导致同步等待进而造成资源耗尽。 2用户大量请求以及重试流量加大。 线程同步等待 如果系统间采用的是同步服务调用模式核心服务和非核心服务共用一个线程池和消息队列若一个核心业务线程调用非核心线程这个非核心线程出现问题则会导致核心线程阻塞进程间的调用是有超时限制的如果这个核心线程断掉则可能引发雪崩。 配套资源不可用 比如数据中心掉线电信基础网络服务出现城市集群故障。出现这类事故的概率较低但是曾经也出现过一段时间几十个城市无法联网的状况。
对于可控的导致雪崩的因素一定尽量避免比如优化代码、尽可能地做更多的资源赘余。在spring cloud架构中我们可以使用sentinel或hystrix来解决雪崩问题。