服务熔断与服务降级详解

服务熔断与服务降级详解为深入理解服务雪崩解决方案中服务熔断和服务降级两个方式,在这儿做一个详解服务熔断什么是服务熔断:当下游的服务因为某种原因突然变得不可用或响应过慢,上游服务为了保证自己整体服务的可用性,不再继续调用目标服务,直接返回,快速释放资源。如果目标服务情况好转则恢复调用服务熔断的原理:业内普遍采用断路器模式原理:当远程服务被调用时,断路器将监视这个调用,如调用时间太长,断路器将会介入并中断调用。此外,断路器将监视所有对远程资源的调用,如对某一个远程资源的调用失败次数足够多,那么断路器

大家好,又见面了,我是你们的朋友全栈君。如果您正在找激活码,请点击查看最新教程,关注关注公众号 “全栈程序员社区” 获取激活教程,可能之前旧版本教程已经失效.最新Idea2022.1教程亲测有效,一键激活。

Jetbrains全系列IDE稳定放心使用

为深入理解 服务雪崩解决方案服务熔断服务降级 两个方式,在这儿做一个详解

服务熔断


什么是服务熔断:

当下游的服务因为某种原因突然变得不可用或响应过慢,上游服务为了保证自己整体服务的可用性,不再继续调用目标服务,直接返回,快速释放资源。如果目标服务情况好转则恢复调用


服务熔断的原理:

业内普遍采用断路器模式

原理: 当远程服务被调用时,断路器将监视这个调用,如调用时间太长,断路器将会介入并中断调用。此外,断路器将监视所有对远程资源的调用,如对某一个远程资源的调用失败次数足够多,那么断路器会出现并采取快速失败,阻止将来调用此远程资源的请求.

断路器模式的状态图:
在这里插入图片描述
解析:

最开始处于closed状态,一旦检测到错误到达一定阈值,便转为open状态;

这时候会有个 reset timeout,到了这个时间了,会转移到half open状态,尝试放行一部分请求到后端,一旦检测成功便回归到closed状态,即恢复服务;

想不通的朋友可以参考你家的电保险

断路器实现:
阿里公司出的Sentinel
netflix的Hystrix

Hystrix中熔断的常用配置:

circuitBreaker.requestVolumeThreshold
默认值20.意思是至少有20个请求才进行errorThresholdPercentage错误百分比计算。比如一段时间(10s)内有19个请求全部失败了。错误百分比是100%,但熔断器不会打开,因为requestVolumeThreshold的值是20. 这个参数非常重要,

circuitBreaker.sleepWindowInMilliseconds
//过多长时间,熔断器再次检测是否开启,默认为5000,即5s钟

circuitBreaker.errorThresholdPercentage
//设定错误百分比,默认值50%,例如一段时间(10s)内有100个请求,其中有55个超时或者异常返回了,那么这段时间内的错误百分比是55%,大于了默认值50%,这种情况下触发熔断器-打开。

按照以上配置的熔断器如下:
每当20个请求中,有50%失败时,熔断器就会打开,此时再调用此服务,将会直接返回失败,不再调远程服务。直到5s钟之后,重新检测该触发条件,判断是否把熔断器关闭,或者继续打开


服务降级

服务降级主要有两种场景:

一、当下游的服务因为某种原因响应过慢,下游服务主动停掉一些不太重要的业务,释放出服务器资源,增加响应速度!

二、当下游的服务因为某种原因不可用,上游主动调用本地的一些降级逻辑,避免卡顿,迅速返回给用户!

聪明人已经看出来,第一个场景怎么和服务熔断的概念有异曲同工之妙,没错,服务熔断可视为降级方式的一种!

结合上述场景,在实际的项目中,采用以下的方式来完成降级工作

  1. 梳理出核心业务流程和非核心业务流程。然后在非核心业务流程上加上开关,一旦发现系统扛不住,关掉开关,结束这些次要流程。
  2. 一个微服务下肯定有很多功能,那自己区分出主要功能和次要功能。然后次要功能加上开关,需要降级的时候,把次要功能关了吧!
  3. 降低一致性了,即将核心业务流程的同步改异步,将强一致性改最终一致性。
版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/180044.html原文链接:https://javaforall.net

(0)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • 慧荣SM2258XT、SM2259XT量产工具开启“忽略区分等级”功能

    慧荣SM2258XT、SM2259XT量产工具开启“忽略区分等级”功能瑞昱RTL9210主控量产工具和固件升级工具已发布http://club.liangchanba.com/thread-1402-1-1.html(出处:量产部落)

    2022年5月23日
    218
  • SM4算法设计原理

    SM4算法设计原理SM4分组密码算法描述:SM4分组密码算法是一个迭代分组密码算法,由加解密算法和密钥扩展算法组成。SM4分组密码算法采用非平衡Feistel结构,分组长度为128b密钥长度为128b。加密算法与密钥扩展算法均采用非线性迭代结构。加密运算和解密运算的算法结构相同,解密运算的轮密钥的使用顺序与加密运算相反。密钥及密钥参量:SM4分组密码算法的加密密钥长度为128b,表示为MK=(MK0,M…

    2025年6月10日
    2
  • mysql数据库旅游管理系统_JSP+MySQL基于ssm的旅游管理系统[通俗易懂]

    mysql数据库旅游管理系统_JSP+MySQL基于ssm的旅游管理系统[通俗易懂]本旅游管理系统主要包括系统用户管理模块、景点信息管理模块、变幻图管理、旅游线路管理、登录模块、和退出模块等多个模块。它帮助旅游管理实现了信息化、网络化,通过测试,实现了系统设计目标,相比传统的管理模式,本系统合理的利用了旅游管理数据资源,有效的减少了旅游管理的经济投入,大大提高了旅游管理的效率。SSM旅游网站前台部分界面SSM旅游网站后台部分界面系统功能结构图本系统主要包含了等系统用户管理、景点信…

    2022年6月9日
    29
  • 安装keil5时,注册机在解压后消失的解决以及使用注册机破解keil5时,无法破解

    安装keil5时,注册机在解压后消失的解决以及使用注册机破解keil5时,无法破解这里写自定义功能快捷键合理的创建标题,有助于目录的生成如何改变文本的样式插入链接与图片如何插入一段漂亮的代码片生成一个适合你的列表创建一个表格设定内容居中、居左、居右SmartyPants创建一个自定义列表如何创建一个注脚注释也是必不可少的KaTeX数学公式新的甘特图功能,丰富你的文章UML图表FLowchart流程图导出与导入导出导入全新的界面设计,将会带来全新的写作体验;在创作中心设置你喜爱的代码高亮样式,Markdown将代码片显示选择的高亮样式进行展示;增加了图片拖拽功能,你可以

    2022年6月2日
    112
  • golang程序员前景怎么样?Python、Java、go语言的优势互比「建议收藏」

    golang程序员前景怎么样?Python、Java、go语言的优势互比

    2022年2月11日
    98
  • 大话设计模式C++实现-第22章-桥接模式

    大话设计模式C++实现-第22章-桥接模式

    2022年2月5日
    42

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号