很多同学知道我在美团点评负责稳定性保障平台的研发,平台中的功能之一就有服务的熔断降级,提起熔断降级,大家可能熟悉的是Netflix的开源组件Hystrix,但是我们并没有在它的基础上进行二次开发,而是重新撸了一个,可能有人说,重复造轮子不是浪费时间吗?那如果造出的轮子更好用、跑的更快呢,所以不要怕造轮子,只有不断的创新,才有不断的进步。

首先看看为什么需要熔断降级呢?

服务的稳定是公司可持续发展的重要基石,随着业务量的快速发展,一些平时正常运行的服务,会出现各种突发状况,而且在分布式系统中,每个服务本身又存在很多不可控的因素,比如线程池处理缓慢,导致请求超时,资源不足,导致请求被拒绝,又甚至直接服务不可用、宕机、数据库挂了、缓存挂了、消息系统挂了...

对于一些非核心服务,如果出现大量的异常,可以通过技术手段,对服务进行降级并提供有损服务,保证服务的柔性可用,避免引起雪崩效应。

如果ServiceA调用ServiceD一直失败,或者失败率很高,就可以采用“一种机制”确保后续请求不会调用ServiceD,而是执行降级逻辑。

这里的这个机制就是熔断降级,熔断降级的实现原理也很简单,看下面这个图:

1、实时监控接口的健康值,在达到熔断条件时,自动开启熔断 2、开启熔断之后,如何实现自动恢复?每隔一段时间,释放一个请求到服务端进行探测,如果后端服务已经恢复,则自动恢复

当然了,具体实现,这里就不细讲了。

这里说下,为什么没用使用Hystrix进行二次开发,主要是有下面几点考虑: 1、内置的参数配置无法动态修改 2、复杂的代码设计,扩展新功能难度大 3、业务接入负责,方式不够人性化 4、压测时性能,令人担忧

通过自研,可以自由把控任何细节,和内部框架无缝集成。

给自己的星球做个广告,期待你的加入

虽然是付费,但绝对物超所值

什么是服务的熔断降级相关推荐

  1. 手把手带你领略双十一背后的核心技术Sentinel之服务的熔断降级

    这种日子该到头了{这种日子该到头了}这种日子该到头了 代码来自:https://blog.csdn.net/Kevinnsm/article/details/117520719?spm=1001.20 ...

  2. .net core with 微服务 - Polly 熔断降级

    在我们实施微服务之后,服务间的调用变的异常频繁.多个服务之间可能是互相依赖的关系.某个服务出现故障或者是服务间的网络出现故障都会造成服务调用的失败,进而影响到某个业务服务处理失败.某一个服务调用失败轻 ...

  3. Sentinel微服务流量控制熔断降级及稳定性监控IO框架

    目录 Sentinel 介绍 Sentinel 的历史 Sentinel 基本概念 资源 规则 Sentinel 功能和设计理念 流量控制 熔断降级 系统负载保护 Sentinel 是如何工作的 快速 ...

  4. 熔断降级与限流在开源SpringBoot/SpringCloud微服务框架的最佳实践

    目录导读 熔断降级与限流在开源SpringBoot/SpringCloud微服务框架的最佳实践 1. 开源代码整体架构设计 2. 微服务逻辑架构设计 3. 微服务熔断降级与限流规划 3.1 微服务熔断 ...

  5. 阿里开源分布式限流框架 -Sentinel Go 0.3.0 发布,支持熔断降级能力

    作者 | 宿何  阿里巴巴高级开发工程师 Sentinel 是阿里巴巴开源的,面向分布式服务架构的流量控制组件,主要以流量为切入点,从限流.流量整形.熔断降级.系统自适应保护等多个维度来帮助开发者保障 ...

  6. 面试官:熔断降级原理是什么?

    仅以两张图来初步形容一下 熔断 适用的场景: 雪崩 股灾   什么是熔断 来自 wiki 的 熔断机制 描述: 熔断机制(英语:Circuit breaker / Trading curb)指的是在股 ...

  7. 玩转Sentinel流量控制/熔断降级自定义异常和兜底数据返回

    目录 开篇介绍: Sentinel有2种规则: 流控设置面板的介绍: 基于并发线程数进行限流配置验证 流量控制的效果有几种? Sentinel熔断降级规则 服务调用常见的熔断状态和恢复 代码演示服务调 ...

  8. 《面试补习》-熔断降级我学会了!

    概述 高可用三剑客 限流,熔断和削峰 终于来到第二篇, 熔断降级专题了,想回顾限流相关内容的童鞋,可以查看一下,下面文章,欢迎点赞,收藏,关注三连,感谢! 限流系列文章: <面试补习>- ...

  9. 谈谈服务雪崩、降级与熔断

    点击上方"方志朋",选择"置顶公众号" 技术文章第一时间送达! 引言 首先,之所以谈这个话题呢,是发现现在很多人对微服务的设计缺乏认识,所以写一篇扫盲文.当然, ...

最新文章

  1. Linux定时程序没有之行完,如何在linux上定时执行程序
  2. 导航栏下拉菜单效果代码
  3. Oracle 存储过程入门
  4. 王琦:5G新视频应用的机会窗口将在2-3年内
  5. JVM中OutOFMemory和StackOverflowError异常代码
  6. python中的装饰器、装饰器模式_python 设计模式之装饰器模式 Decorator Pattern
  7. Linux驱动(2)--ARM的架构发展以及如何评价处理器
  8. 如何将dmp文件里的某张表导入oracle数据库
  9. i计算机网络的应用程序,计算机网络技术及其在校园网的研究与应用毕业论文.doc...
  10. 元月元日是哪一天_2020年下元节是哪一天 几月几号
  11. Python 实int型和list相互转换 现把float型列表转换为int型列表 把列表中的数字由float转换为int型...
  12. sqlserver数据库分组查询
  13. 5个不可多得的PPT小技巧,工作再忙也要学习!
  14. 在10分钟内完成微信小程序开发
  15. 梯形图请用c语言,简单使用C语言写梯形图精简V2.0.pdf
  16. 苹果怎么安装未签名的app_Windows端超简单安装未签名ipa应用
  17. 计算机磁盘图标显示异常,Win7磁盘图标显示错误是怎么回事?修复分区磁盘图标异常教程...
  18. 1.0版走迷宫小游戏(C++)
  19. 饭后Android 第二餐-复选框CheckBox+开关按钮Switch+单选按钮RadioButton
  20. 移远4g LTE模块at指令集合

热门文章

  1. 全连接层和卷积层最终应用在网络上的不同之处
  2. 你离Python大神就差这课树了!建议收藏|Python技能树测评
  3. 怎么从服务器传输信息,大神们socket如何连接到服务器并判断从服务器传送回来的数据 谢谢谢谢 跪求啊 急用...
  4. kotlin设置按钮不可点击_全彩LED显示屏软件空点功能如何设置、使用?
  5. 最长公共子串_两个字符串的最长公共子串(后缀自动机)
  6. pythonjson实例_python对json的相关操作实例详解
  7. idea重写接口没有@override_【自学C#】|| 笔记 19 接口
  8. MATLAB对表达式进行降幂排列,MATLAB上机答案.doc
  9. win7关闭开机启动项_电脑开机非常慢?原来是有软件偷偷自启动,教你一招彻底关闭它们...
  10. linux协议栈网桥部分之cam表操作,Docker网络基础 - Linux网桥工作原理与实现