一、分布式系统面临的问题

服务雪崩

多个服务之间调用的时候,假设微服务 A 调用微服务 B 和微服务 C,,微服务 B 和微服务 C 又调用其他的微服务,这就是所谓的“扇出”。如果扇出的链路上某个微服务的调用响应时间过长或者不可用,对微服务 A 的调用就会占用越来越多的系统资源,进而引起系统崩溃,这就是所谓的“雪崩效应”

对于流量高的应用来说,单一的后端依赖可能会导致所有服务器上的所有资源都在几秒钟内饱和。比失败更加糟糕的是,这些应用程序还可能导致服务之间的延迟增加,备份队列,线程和其他系统资源紧张,导致整个系统发生更多的级联故障。这些都表示需要对故障和延迟隔离和管理,以便单个依赖关系的失败不能取消整个应用程序或系统

二、概述

Hystrix 是一个用于处理分布式系统的 延迟 和 容错 的开源库,在分布式系统里,许多依赖会不可避免的调用失败,比如超时,异常, Hystrix 能够保证在一个依赖出现问题的情况下,不会导致整体服务的失败,避免级联故障,以提高分布式系统的弹性。

“短路由“本身是一种开关装置,当某个服务单元发生故障之后,通过断路由的故障监控(类似熔断保险丝),向调用方返回一个符合预期的、可处理的备选响应。而不是长时间的等待或者抛出异常,这样就保证了服务调用方的线程不会被长时间、不必要的占用,从而避免了故障在分布式系统中的蔓延,乃至雪崩。

熔断机制是应对雪崩效应的一种微服务链路的保护机制。

当“扇出”链路的某个微服务调用响应时间太长是,会进行服务的降级,进而熔断该节点微服务的调用,快速返回“错误”的响应信息。当检测到该节点微服务调用响应正常恢复调用链路。在 Spring Cloud 框架里熔断机制通过 Hystrix 实现。Hystrix 会监控微服务间调用状况,当失败的调用到一定的阈值,缺省值是 5s 内 20 次调用失败就会启动熔断机制。熔断机制的注解是 @HystrixCommand。

三、服务熔断

provider 代码

@RestControllerpublic classDeptController

{

@Autowiredprivate DeptService service = null;

@RequestMapping(value= "/dept/get/{id}", method =RequestMethod.GET)//一旦调用服务方法失败并抛出了错误信息后,会自动调用@HystrixCommand标注好的fallbackMethod调用类中的指定方法

@HystrixCommand(fallbackMethod = "processHystrix_Get")public Dept get(@PathVariable("id") Long id)

{

Dept dept= this.service.get(id);if (null ==dept) {throw new RuntimeException("该ID:" + id + "没有没有对应的信息");//当这个地方抛出异常,就会触发 @HystrixCommand

}returndept;

}public Dept processHystrix_Get(@PathVariable("id") Long id)

{return new Dept().setDeptno(id).setDname("该ID:" + id + "没有没有对应的信息,null--@HystrixCommand")

.setDb_source("no this database in MySQL");

}

}

四、服务降级

整体资源快不够用了,忍痛将某些服务先关掉,待度过难关,再开启回来

服务降级处理是在客户端实现完成的,与服务端没有关系

五、小结

服务熔断:

一般是某个服务故障或者异常引起,类似现实中的“保险丝”,当某个异常条件被触发,直接熔断整个服务,而不是一直等到此服务超时

服务降级

所谓降级,一般是从整体负荷考虑。就是当某个服务熔断之后,服务器将不再被调用,此时客户可以准备一个本地的 fallback 回调,返回一个缺省值。这样做,虽然服务水平下降,但是好歹可以用,比直接挂掉要强。

Mysql断流_Hystrix 断流器相关推荐

  1. mysql事件调度定时任务_详解MySQL用事件调度器Event Scheduler创建定时任务

    前言 事件调度器相当于操作系统中的定时任务(如:Linux中的cron.Window中的计划任务),但MySql的事件调度器可以精确到秒,对于一些实时性要求较高的数据处理非常有用. 1. 创建/修改事 ...

  2. 庖丁解牛|图解 MySQL 8.0 优化器查询转换篇

    简介: 本篇介绍子查询.分析表和JOIN的复杂转换过程 一  背景和架构 在<庖丁解牛-图解MySQL 8.0优化器查询解析篇>一文中我们重点介绍了MySQL最新版本8.0.25关于SQL ...

  3. MySQL图形化管理器——EMS SQL Management Studio

    MySQL图形化管理器--EMS SQL Management Studio 在开发的时候,是否觉得MySQL实在让人觉得不方便,一行行的敲命令~ 今天推荐一个 MySQL图形化管理器--EMS SQ ...

  4. MySQL的SQL解析器是干什么的?底层原理是什么?

    MySQL的SQL解析器(SQL parser)是一个负责将SQL语句转换为可执行的指令的组件.其主要功能是将输入的SQL语句分解为语法单元,然后将这些语法单元转换为内部表示的数据结构,最终生成一个可 ...

  5. 庖丁解牛-图解MySQL 8.0优化器查询转换篇

    简介: 在<庖丁解牛-图解MySQL 8.0优化器查询解析篇>一文中我们重点介绍了MySQL最新版本8.0.25关于SQL基本元素表.列.函数.聚合.分组.排序等元素的解析.设置和转换过程 ...

  6. python清华源 断流_ADSL断流/断线问题经典分析

    有许多朋友遇到过ADSL断流的问题,那什么是ADSL的断流问题呢?通常是用ADSL MODEM能成功拨号登陆,但上网的时候数据流传输突然中断,没有反应,过一阵子又自动恢复正常,表现为网页打不开,下载中 ...

  7. MySQL · 特性分析 · 优化器 MRR BKA

    什么是 MRR MRR 的全称是 Multi-Range Read Optimization,是优化器将随机 IO 转化为顺序 IO 以降低查询过程中 IO 开销的一种手段,咱们对比一下 mrr=on ...

  8. 庖丁解牛-图解MySQL 8.0优化器查询解析篇

    简介:本文重点介绍了优化器的基于规则的其中一部分优化,更多的偏重于SQL中的基本操作符 一  背景和架构 我们都知道,利用编写程序来动态实现我们应用所需要的逻辑,从而程序执行时得到我们需要的结果.那么 ...

  9. php 事件调度,MySQL的事件调度器使用介绍

    自MySQL5.1.0起,增加了一个非常有特色的功能ndash;事件调度器(Event Scheduler),可以用做定时执行某些特定任务,可以看作基于 自MySQL5.1.0起,增加了一个非常有特色 ...

最新文章

  1. mysql 5.6 binlog_format_ROW 格式binlog 在MySQL5.6上的数据恢复实验
  2. LeetCode 10. 正则表达式匹配(递归/DP)
  3. android 应用分析,分析 Android 应用
  4. java midlet 是什么_编译JAVA游戏,MIDlet出错,急求大家帮助
  5. win10关机后自动重启_win10电脑关机后自动开机怎么解决
  6. unity 显示、隐藏Android导航栏
  7. C++中的命名空间(namespace)介绍
  8. LINUX如何创建一个程序组
  9. Node+Express实现文件的上传下载与删除
  10. 尚学堂·百战程序员--java300集视频笔记
  11. 拼多多视频直播回放视频下载软件方法分享地瓜网络技术
  12. “科林明伦杯”哈尔滨理工大学第十届程序设计竞赛
  13. C# 群发邮件 (密送、抄送)
  14. 三角函数之角度与弧度
  15. Datawhale组队学习-NLP新闻文本分类-TASK06
  16. 手写实现一个本地缓存
  17. 每日一句api Android,金山每日一句 API 接口调用接入方法
  18. 奶牛跟蜗牛,哪种动物智商更高?——T检验帮你找到答案
  19. spring源码阅读--aop实现原理分析
  20. 软件编程网络资源汇总 .

热门文章

  1. uwp是用xaml还是html5,使用 c 和 XAML 开发 UWP 程序
  2. QApplication与QCoreApplication
  3. NanoPi NEO2使用
  4. 易买网更多新闻代码_新闻 | 1022Bewhy结婚等更多资讯
  5. Informatica Big Data Management 运维命令
  6. 弄了一套在线教育app的源码,有兴趣的朋友可以聊聊
  7. 怎么在微信公众号文章里添加附件(如word、excel、pdf等)
  8. Duilib样式性大全-Duilib属性大全-Duilib XML属性大全-Duilib XML样式大全
  9. 《金钱永不眠》书中的精髓:中国资本市场从无到有,是踩着石头过河,小步试错,快速迭代的持续发展过程
  10. 【专业英语】计算机英语词汇Day6