当前位置:首页 > 科技  > 软件

用通俗的话讲讲熔断和服务降级

来源: 责编: 时间:2024-02-01 12:50:33 258观看
导读熔断和降级(也叫服务降级),一般是通过组件实现的,而不是spring框架内。比如spring boot框架做增删改查,外加引入spring cloud框架的hystrix或spring cloud alibaba框架的sentinel做熔断和降级,当然还可以做限流。熔断的本意

熔断和降级(也叫服务降级),一般是通过组件实现的,而不是spring框架内。比如spring boot框架做增删改查,外加引入spring cloud框架的hystrix或spring cloud alibaba框架的sentinel做熔断和降级,当然还可以做限流。gNp28资讯网——每日最新资讯28at.com

熔断的本意是,当下对某个api接口发起的服务,错误率太高,或者耗时过长请求的比例过高,所以就认为该api接口当下负载过大,应当在之后的一段时间内,让该api停止对外服务。gNp28资讯网——每日最新资讯28at.com

和熔断相关的有如下的参数。gNp28资讯网——每日最新资讯28at.com

1 时间窗口,比如5秒。gNp28资讯网——每日最新资讯28at.com

2 最小访问量,比如100个。gNp28资讯网——每日最新资讯28at.com

3 错误率或者是慢请求的比例下限,比如是50%。gNp28资讯网——每日最新资讯28at.com

4 熔断后的等待时间,比如是2秒。gNp28资讯网——每日最新资讯28at.com

比如有个服务api是对外提供查询风控信息的,设置了上述熔断参数,遇到如下情况时会熔断。gNp28资讯网——每日最新资讯28at.com

1 时间窗口5秒内,至少收到100个请求。这个是先决条件,比如5秒内只收到99个请求,哪怕这99个请求全都失败(或返回过慢),也不会熔断。gNp28资讯网——每日最新资讯28at.com

2 如果5秒内收到100个请求后,再去看里面失效请求或慢查询请求的比例,如果高于50%,即该接口熔断2秒,这个过程中,发到该风控接口的请求全都立即返回失败。gNp28资讯网——每日最新资讯28at.com

3 在2秒以后,(hystrix或sentinel等)支持熔断的组件再去采样,如果依然是5秒内请求个数大于等于100,并且失败或慢查询的比例高于50%,继续熔断2秒。否则恢复正常。gNp28资讯网——每日最新资讯28at.com

为什么要引入熔断机制呢?因为请求api的线程,是需要耗费内存等资源的,比如请求风控api这个线程,持续了5秒,那么服务器在这5秒以内,就得耗费一定的资源维护这个线程。gNp28资讯网——每日最新资讯28at.com

对服务器来说,能容纳的请求线程个数是有上限的,具体要看服务器的配置,假设是1000个。如果不引入熔断机制,而并发量又高,一秒会新增1000个访问风控API接口的线程,那么每个线程都得被维持5秒,而且由于风控接口可能出现故障,不少线程(或者说大多数线程)又拿不到期望结果。这种情况下,与其线程在5秒后因失败而被终止,那么还不如立即启动熔断机制,让一些线程在发起请求后立即得到错误的结果。gNp28资讯网——每日最新资讯28at.com

否则的话,大量堆积的线程,就会耗尽服务器的内存等资源,甚至可能还耗尽数据库连接对象,最终导致部署在这台服务器上的所有服务都不可用。所以,熔断其实是种保护机制,尤其在高并发场景下,真得预先设置好熔断策略。gNp28资讯网——每日最新资讯28at.com

服务降级的本意是,在高并发等场景,一些用户请求难免会得不到预期的结果,这种情况下,应当针对这些请求快速返回,同时提供一个用户尚能接受的结果。gNp28资讯网——每日最新资讯28at.com

比如在某电商网站,有时候去搜索一个商品,期望的结果自然是返回搜索列表,但在某个时刻,正好服务器里并发量太高,或者因为种种原因,搜索商品的请求无法得到期望结果,这种情况下,较好的处理方法是,快速(而不是等待若干时间)返回一个“请稍后再试”的页面。gNp28资讯网——每日最新资讯28at.com

如果不引入服务降级,那么用户真可能会直接看到一个只有资深程序员才能看懂的异常提示,比如哪号内存出问题,或者xx组件的xx行出问题。与其这样,还不如返回个能让用户看得懂的界面。gNp28资讯网——每日最新资讯28at.com

在一些事件场景,熔断和服务降级一般是整合一起使用的,比如查询商品的接口方法出现熔断,需要等待2秒后再采样,在这2秒内,hystrix或sentinel等能实现服务降级功能的组件,会把请求抓发到“请稍后再试”的页面,从而实现服务降级。gNp28资讯网——每日最新资讯28at.com

本文链接:http://www.28at.com/showinfo-26-70441-0.html用通俗的话讲讲熔断和服务降级

声明:本网页内容旨在传播知识,若有侵权等问题请及时与本网联系,我们将在第一时间删除处理。邮件:2376512515@qq.com

上一篇: 基于Kubernetes的微服务架构,你学会了吗?

下一篇: Python编程必备,七个最佳代码编辑器和IDE推荐

标签:
  • 热门焦点
  • 一加Ace2 Pro真机揭晓 钛空灰配色质感拉满

    终于,在经过了几波预热之后,一加Ace2 Pro的外观真机图在网上出现了。还是博主数码闲聊站曝光的,这次的外观设计还是延续了一加11的方案,只是细节上有了调整,例如新加入了钛空灰
  • 小米降噪蓝牙耳机Necklace分享:听一首歌 读懂一个故事

    在今天下午的小米Civi 2新品发布会上,小米还带来了一款新的降噪蓝牙耳机Necklace,我们也在发布结束的第一时间给大家带来这款耳机的简单分享。现在大家能见到最多的蓝牙耳机
  • 6月安卓手机性价比榜:Note 12 Turbo断层式碾压

    6月份有一个618,虽然这是京东周年庆的日子,但别的电商也都不约而同的跟进了,反正促销没坏处,厂商和用户都能满意。618期间一些产品也出现了历史低价,那么各个价位段的产品性价比
  • 线程通讯的三种方法!通俗易懂

    线程通信是指多个线程之间通过某种机制进行协调和交互,例如,线程等待和通知机制就是线程通讯的主要手段之一。 在 Java 中,线程等待和通知的实现手段有以下几种方式:Object 类下
  • 三言两语说透设计模式的艺术-单例模式

    写在前面单例模式是一种常用的软件设计模式,它所创建的对象只有一个实例,且该实例易于被外界访问。单例对象由于只有一个实例,所以它可以方便地被系统中的其他对象共享,从而减少
  • 一篇聊聊Go错误封装机制

    %w 是用于错误包装(Error Wrapping)的格式化动词。它是用于 fmt.Errorf 和 fmt.Sprintf 函数中的一个特殊格式化动词,用于将一个错误(或其他可打印的值)包装在一个新的错误中。使
  • 一篇文章带你了解 CSS 属性选择器

    属性选择器对带有指定属性的 HTML 元素设置样式。可以为拥有指定属性的 HTML 元素设置样式,而不仅限于 class 和 id 属性。一、了解属性选择器CSS属性选择器提供了一种简单而
  • 华为HarmonyOS 4.0将于8月4日发布 或搭载AI大模型技术

    华为宣布HarmonyOS4.0将于8月4日正式发布。此前,华为已经针对开发者公布了HarmonyOS4.0,以便于开发者提前进行适配,也因此被曝光出了一些新系统的特性
  • OPPO K11样张首曝:千元机影像“卷”得真不错!

    一直以来,OPPO K系列机型都保持着较为均衡的产品体验,历来都是2K价位的明星机型,去年推出的OPPO K10和OPPO K10 Pro两款机型凭借各自的出色配置,堪称有
Top