• Ukieweb

    佳的博客

    曾梦想仗剑天涯,后来工作忙没去。

服务熔断 之背景 服务雪崩

分布式系统环境下,服务间类似依赖非常常见,一个业务调用通常依赖多个基础服务。如下图,

image.png

如果各个服务正常运行,那大家齐乐融融,高高兴兴的,但是如果其中一个服务坏掉会出现什么样的情况呢?如下图,

image.png

当Service A的流量波动很大,流量经常会突然性增加!那么在这种情况下,就算 Service A 能扛得住请求,Service B和Service C未必能扛得住这突发的请求。

此时,如果Service C因为抗不住请求,变得不可用。那么Service B的请求也会阻塞,慢慢耗尽Service B的线程资源,Service B就会变得不可用。紧接着,Service A也会不可用。

So,简单地讲。一个服务失败,导致整条链路的服务都失败的情形,我们称之为服务雪崩

引起雪崩的原因

1、硬件故障;

2、程序Bug;

3、缓存击穿(用户大量访问缓存中没有的键值,导致大量请求查询数据库,使数据库压力过大);

4、用户大量请求;

服务雪崩的三个阶段

第一阶段:服务不可用;

第二阶段:调用端重试加大流量(用户重试/代码逻辑重试);

第三阶段:服务调用者不可用(同步等待造成的资源耗尽);

解决方案

1) 应用扩容(扩大服务器承受力)

  • 加机器

  • 升级硬件

2)流量控制(超出限定流量,返回类似重试页面让用户稍后再试)

  • 限流

  • 关闭重试

3) 缓存

  • 将用户可能访问的数据大量的放入缓存中,减少访问数据库的请求。

4)服务降级

  • 服务接口拒绝服务

  • 页面拒绝服务

  • 延迟持久化

  • 随机拒绝服务

5) 服务熔断

如果对服务降级和服务熔断



摘自:https://blog.csdn.net/qq_38149225/article/details/109454418


0
0
下一篇:服务熔断 之GO实现 hystrix-go 和 kratos

0 条评论

老佳啊

85后,大专学历,中原人士,家里没矿。

由于年轻时长的比较帅气,导致在别人眼里,我一直不谈恋爱的原因是清高,实则是自己的小自卑。最大的人生目标就是找一个相知相爱相容的人,共度余生。

和人相处时如果能感受到真诚,会非常注重彼此的关系,对别人没有什么心机,即使有利益冲突,一般也会以和为贵,因为在这个世界上,物质的东西,从来不会吸引到我。

特别迷恋那些大山大水,如果现在还能隐居,可能早就去了。对那些宏伟的有底蕴的人文景观比较不感冒。

从事于IT行业,却一直对厨房念念不忘,由于身材魁梧,总觉得自己上辈子是个将军,可惜这辈子没当兵,也不会打架。