简单理解微服务限流、降级、熔断

这篇具有很好参考价值的文章主要介绍了简单理解微服务限流、降级、熔断。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

微服务限流、降级、熔断分别都是什么意思,我们平时工作中为什么要关注这些东西呢?

公司不断的发展壮大,一开始处于蛮荒时代,咱们从单体应用过渡到微服务的时候,可能还是那一套单体的思想,再加上用户量可能也不多,直接就不去考虑起量了之后,我们需要如何处理

可殊不知,当有一天起量了,机会摆在你面前时候,你没有准备好,你也是抓不住的

简单理解微服务限流、降级、熔断,微服务,运维,数据库

先举一个生活中常见的例子:

我们有时去访问一个网站的时候,当网络正常的情况下,我们发现访问这个网站,比平时好像慢了一些,且会出现报系统错误的情况,或者报错系统繁忙等信息,可能是服务做了超时,超时之后就报错了

再举一个双 11 的例子

咱们访问某猫或者某狗的时候,咱们发现并不是每一次访问都是可以正常进入页面的,也就是说一会可以正常进入页面,一会又不能正常进入页面,并且会提示系统繁忙请稍后再试,此处实际上是服务应用了限流和熔断

另外,在双 11 这一天,咱们买了商品之后,发现当天是没有办法进行退款的,这个是应用了服务降级

那么,咱们在技术上什么限流,什么是熔断,什么又是服务降级呢?

什么是限流?

通过对并发访问/请求进行限速,或者对一个时间窗口内的请求进行限速来保护系统,一旦达到限制速率则可以拒绝服务、排队或等待、降级等处理,限流是从整体系统上去进行考虑的

最近国庆了,很多人都会去坐火车,坐高铁,咱们排队过安检的时候,我们可以看到保安会隔一会放 10 个人进去,过一会又放一些人进去,一直维持着里面只能有 10个人在进行安全检查

那么这 10 个数字,就相当于是服务进行的限流,只要一达到 10 人以上的请求,那么就会服务拒绝,当有空余的时候,才会处理新来的请求,这个应该就不难理解了吧

简单理解微服务限流、降级、熔断,微服务,运维,数据库

一般限流的方式有这些:

  • 固定时间窗口控制
  • 使用漏桶的方式
  • 使用令牌桶的方式

关于限流的详细的具体实现方式,咱们可以查看历史文章:最常用的限流算法以及如何在http中间件中加入流控

什么是熔断?

熔断和限流还不太一样,上面我们可以看到限流是,控制请求速率,只要还能承受,那么都会处理,可是熔断是这样的一个效果

举个 栗子

例如咱们的微服务系统中,多个微服务是会相互调用的,且会存在一个较长的调用调用链,链路一长,关联的服务多了就会带来一个问题

网关请求到我们的微服务 A,微服务 A 需要去调用微服务 B,微服务 C,微服务 B 还会去调用为服务 D,微服务C也会去调用其它的微服务

这个时候,如果在这条链路上,哪怕有一个服务出现了问题,或者相应时间过长,那么对与微服务A的调用就会占用越来越多的系统资源,一般服务也是会做重试机制,且当客户端调用某个接口不能得到正常响应的时候,是会进行疯狂请求的,这会导致微服务 A 消耗过多资源,进而引起系统崩溃,所谓的“雪崩效应”

那么这个时候,就不得不引入一个断路器来进行熔断,咱们一会会应用 hystrix 来进行功能实现

关于熔断,我们可以这样来思考,咱们初高中学过的物理,家里的电闸开关出都会设置一个保险丝,当咱们的用电负荷过大的时候,保险丝就会自我熔断,保护电路

那么微服务中的熔断也是这个效果,他可以保护咱们的调用链路,防止高压请求带来资源极高的消耗,最终导致雪崩,熔断是从微服务层级去考虑的

咱们的断路器 hystrix 当发现链路中,微服务 A 请求 微服务 B ,响应时间过长,或者 微服务 B 不可用的时候,那么微服务 A 就会迅速的进行错误响应,而不是疯狂的去调用微服务 B

简单理解微服务限流、降级、熔断,微服务,运维,数据库

Hystrix 自身还有探测机制,会去探测微服务 B 是否可用,如果可用了,那么微服务 A 的请求就会正常的去请求微服务 B

关于断路器的使用方式,实现方式,和熔断的实现方案,我们可以查看历史文章:golang 微服务中的断路器 hystrix

什么是服务降级?

当我的微服务架构整体的负载超出了预设的上限阈值或要应对即将到来的大流量是,为了保证重要或基本的服务能正常运行,会自动或者手动的关闭某些外围或者不重要的服务

服务降级其实就更好理解了,例如咱们服务有 10 个功能,当服务压力过大的时候,咱们就可以自动关闭外围的几个核心的功能,让系统资源都集中咱们的核心服务上,一般是从外围服务开始降级

咱们做核酸已经持续好几年了,咱们以喉咙上的老茧为证

做核酸的时候,进入一个通道,我们可以看到,最开始有检查戴口罩的,往下走,有检查健康码的,再往下走,开始检查场所码,最后快到大白处之后,就开始检查核酸码了

简单理解微服务限流、降级、熔断,微服务,运维,数据库

当有大的人流量,咱们做核酸的时候,可能就只有查看场所码和核酸码了,这个就好理解了吧

感谢阅读,欢迎交流,点个赞,关注一波 再走吧

欢迎点赞,关注,收藏

朋友们,你的支持和鼓励,是我坚持分享,提高质量的动力

好了,本次就到这里

技术是开放的,我们的心态,更应是开放的。拥抱变化,向阳而生,努力向前行。

我是阿兵云原生,欢迎点赞关注收藏,下次见~
可以进入地址进行体验和学习:https://xxetb.xet.tech/s/3lucCI文章来源地址https://www.toymoban.com/news/detail-697633.html

到了这里,关于简单理解微服务限流、降级、熔断的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 聊一聊服务治理三板斧:限流、熔断、降级和go-sentinel的实现

    我们知道,对于一个项目之初,我们不可能上来就按几千的并发去配置,为什么?两个方面,第一个是成本高。第二个是维护难度大。即便是天猫淘宝这种,也是采用的动态扩容的方式来应对双十一。那么一个项目如何应对突然的高并发,我们有哪些常用的措施和处理呢?我

    2024年01月19日
    浏览(35)
  • Sentinel 降级、限流、熔断

    在现代分布式系统中,如何有效地保护系统免受突发流量和故障的影响,是每个开发人员和架构师都需要思考的重要问题。在这样的背景下,Sentinel作为一个强大的系统保护和控制组件,为我们提供了降级、限流、熔断等多种策略,帮助我们更好地保障系统的稳定性和可用性

    2024年01月24日
    浏览(32)
  • [分布式]-限流熔断降级

    限流,顾名思义,限制系统的流量,防止用户过多地访问系统的资源,甚至是恶意地访问,比如恶意爬虫,DDOS 等;同时也防止系统承载过多流量而崩溃,从而对系统运行资源做到一个有效的管理 在分布式系统中,节点之间需要相互调用,如果调用链中一个节点宕机,将会导

    2024年02月09日
    浏览(28)
  • 高可用三大利器 — 熔断、限流和降级

    近年来,各大厂Google、微软、阿里、腾讯等都在提高可用的概念。高可用(High Availability,简称HA)是指系统或服务在遭受故障或异常情况时仍能持续提供稳定和可靠的运行能力。 在武侠世界里,“利器”通常指的是武器中的上乘、出色之物;武器对于武者的重要性不言而喻

    2024年02月15日
    浏览(34)
  • 熔断、限流、降级 —— SpringCloud Alibaba Sentinel

    Sentinel 是阿里中间件团队开源的,面向分布式服务架构的高可用流量防护组件,主要以流量为切入点,从限流、流量整形、熔断降级、系统负载保护、热点防护等多个维度来帮助开发者保障微服务的稳定性 Sentinel 提供了两个服务组件: Sentinel 用来实现微服务系统中服务熔断

    2024年02月08日
    浏览(52)
  • 高并发整体可用性:一文详解降级、限流和熔断

      水满则溢,月盈则亏,任何事物都不可能无限制的发展,我们的系统服务能力也一样。   当随着流量的不断增长,达到或超过服务本身的可承载范围,系统服务的自我保护机制的建立就显得很重要了。   本文希望可以用最通俗的解释和贴切的实例来带大家了解什么是限流

    2024年02月11日
    浏览(28)
  • SpringMvc集成开源流量监控、限流、熔断降级、负载保护组件Sentinel

    前言:作者查阅了Sentinel官网、51CTO、CSDN、码农家园、博客园等很多技术文章都没有很准确的springmvc集成Sentinel的示例,因此整理了本文,主要介绍SpringMvc集成Sentinel 随着微服务的流行,服务和服务之间的稳定性变得越来越重要。Sentinel 是面向分布式、多语言异构化服务架构的

    2024年02月05日
    浏览(52)
  • 【Spring Cloud】Sentinel流量限流和熔断降级的讲解

    🎉🎉欢迎来到我的CSDN主页!🎉🎉 🏅我是Java方文山,一个在CSDN分享笔记的博主。📚📚 🌟推荐给大家我的专栏《Spring Cloud》。🎯🎯 👉点击这里,就可以查看我的主页啦!👇👇 Java方文山的个人主页 🎁如果感觉还不错的话请给我点赞吧!🎁🎁 💖期待你的加入,一起

    2024年01月23日
    浏览(37)
  • 【架构详细解读】缓存、限流、降级和熔断、负载均衡、灾备和故障转移——

    目录  架构基础 # 如何理解架构的演进? # 如何理解架构的服务化趋势? # 架构中有哪些技术点?   缓存 # 谈谈架构中的缓存应用? # 在开发中缓存具体如何实现? # 使用缓存的经验?  限流 # 什么是限流?三种限流的算法? # 限流令牌桶和漏桶对比? # 在单机情况下如何

    2024年01月16日
    浏览(35)
  • 商城-学习整理-高级-商城业务-Sentinel&限流&熔断&降级&Sleuth+Zipkin链路追踪(二十二)

    什么是熔断 A 服务调用 B 服务的某个功能,由于网络不稳定问题,或者 B 服务卡机,导致功能时间超长。如果这样子的次数太多。我们就可以直接将 B 断路了(A 不再请求 B 接口),凡是调用 B 的直接返回降级数据,不必等待 B 的超长执行。 这样 B 的故障问题,就不会级联影

    2024年02月11日
    浏览(33)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包