spring-cloud-hystrix熔断

时间:2022-09-07 19:59:49

依赖pom

<dependencyManagement>
<dependencies>
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-netflix</artifactId>
<version>1.0.7RELEASE</version>
<type>pom</type>
<scope>import</scope>
</dependency>
</dependencies>
</dependencyManagement>
<dependencies>
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-eureka</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-hystrix</artifactId>
</dependency>
<dependencies>

源代码

@RestController
@SpringBootApplication
@EnableCircuitBreaker
public class Application extends SpringBootServletInitializer{
@AutoWired
FooService fooService; @RequestMapping("/foo")
public String foo(){
return fooService.getFoo();
} public static void main(String[] args){
SpringApplication.run(Application.class,args);
}
}

模拟服务失败的情况

@Component
public FooService{
@HystrixCommand(fallbackMethod="defaultFoo")
public static String getFoo() throws Exception {
throw new Exception();
} public static String defaultFoo(){
return "defaultFoo";
} }

浏览器调用 foo

展示 defaultFoo

熔断器是一种异常的处理机制

进一步尝试,模拟服务有时成功 有时失败的情况

@Component
public FooService{ static int count=0;
@HystrixCommand(fallbackMethod="defaultFoo")
public static String getFoo() throws Exception {
count++;
count%=20;
System.out.println("realGetFoo");
if(count<10){
throw new Exception();
}else{
return "foo";
}
} public static String defaultFoo(){
return "defaultFoo";
} }

插入一些日志输出,发现会先调用一下getFoo这个接口,如果出现异常则调用defaultFoo

熔断可能可以设置一些策略,在某些情况下不调用getFoo接口

启用hystrix报表

添加依赖

<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-netflix-hystrix-dashboard</artifactId>
</dependency>

Application增加注解

@EnableHystrixDashBoard

在浏览器中输入

http://host:port/hytrix

并填入地址,可以进入hystrix-dashboard界面

测试发现如果多次快速调用foo接口 并且Foo接口抛出异常

断路器会变为open状态,此时程序不会尝试调用实际的getFoo方法,而是直接调用defaultFoo

过一段时间之后 circuit会自动闭合

spring-cloud-hystrix熔断的更多相关文章

  1. 第五章 服务容错保护:Spring Cloud Hystrix

    在微服务架构中,我们将系统拆分为很多个服务,各个服务之间通过注册与订阅的方式相互依赖,由于各个服务都是在各自的进程中运行,就有可能由于网络原因或者服务自身的问题导致调用故障或延迟,随着服务的积压,可能 ...

  2. spring cloud&colon; Hystrix(一):简单使用

    在微服务架构中,我们将系统拆分为很多个服务,各个服务之间通过注册与订阅的方式相互依赖,由于各个服务都是在各自的进程中运行,就有可能由于网络原因或者服务自身的问题导致调用故障或延迟,随着服务的积压,可能 ...

  3. 第五章 服务容错保护: Spring Cloud Hystrix

    在微服务架构中, 存在着那么多的服务单元, 若一个单元出现故障, 就很容易因依赖关系而引发故障的蔓延,最终导致整个系统的瘫痪,这样的架构相较传统架构更加不稳定.为了解决这样的问题, 产生了断路器等一系 ...

  4. SpringCloud---服务容错保护---Spring Cloud Hystrix

    1.概述 1.1 在分布式架构中,存在着许多的服务单元,若一个单元出现故障,很容易因依赖关系引发故障的蔓延,最终导致整个系统的瘫痪: 为了解决这样的问题,产生了断路器等服务保护机制: 1.2 分布式架 ...

  5. Spring Cloud 微服务四:熔断器Spring cloud hystrix

    前言:在微服务架构中,一般都是进程间通信,有可能调用链都比较长,当有底层某服务出现问题时,比如宕机,会导致调用方的服务失败,这样就会发生一连串的反映,造成系统资源被阻塞,最终可能造成雪崩.在sprin ...

  6. Spring Cloud Hystrix理解与实践(一):搭建简单监控集群

    前言 在分布式架构中,所谓的断路器模式是指当某个服务发生故障之后,通过断路器的故障监控,向调用方返回一个错误响应,这样就不会使得线程因调用故障服务被长时间占用不释放,避免故障的继续蔓延.Spring ...

  7. Spring Cloud Hystrix 服务容错保护

    目录 一.Hystrix 是什么 二.Hystrix断路器搭建 三.断路器优化 一.Hystrix 是什么 ​ 在微服务架构中,我们将系统拆分成了若干弱小的单元,单元与单元之间通过HTTP或者TCP等 ...

  8. 分布式系统的延时和故障容错之Spring Cloud Hystrix

    本示例主要介绍 Spring Cloud 系列中的 Eureka,如何使用Hystrix熔断器容错保护我们的应用程序. 在微服务架构中,系统被拆分成很多个服务单元,各个服务单元的应用通过 HTTP 相 ...

  9. Spring Cloud Hystrix 服务容错保护 5&period;1

    Spring Cloud Hystrix介绍 在微服务架构中,通常会存在多个服务层调用的情况,如果基础服务出现故障可能会发生级联传递,导致整个服务链上的服务不可用为了解决服务级联失败这种问题,在分布式 ...

  10. Spring Cloud学习 之 Spring Cloud Hystrix(基础知识铺垫)

    Spring Boot版本:2.1.4.RELEASE Spring Cloud版本:Greenwich.SR1 文章目录 前述: 快速入门: 命令模式: RxJava: 前述: ​ 在微服务架构中, ...

随机推荐

  1. 前端性能优化---yahoo军规

    一.尽可能减少HTTP请求数 二.使用CDN(内容分发网络) 三.添加Expire/Cache-Control头 四.启用Gzip压缩 五.将CSS放在页面最上面 六.将Script放在页面最下面 七 ...

  2. 剑指Offer-【面试题05:从头到尾打印链表】

    package com.cxz.question5; import java.util.Stack; /* * 输入个链表的头结点,从尾到头反过来打印出每个结点的值. * */ public clas ...

  3. DSP28377S - ADC学习编程笔记

    DSP28377S -  ADC学习编程笔记 彭会锋 2016-08-04  20:19:52 1 ADC类型导致的配置区别 F28377S的ADC类型是Type 4类型,我的理解是不同类型的ADC采 ...

  4. Lync安装随笔

    使用域管理员权限扩展架构 1.iis角色安装 2.net3.5,消息队列服务器.目录服务集成.桌面体验.AD DS和AD LDS工具(远程服务管理工具中),启用WindowsFirewall服务 3. ...

  5. 自定义ORM框架(转转)

    ORM背景 在数据库界,主流的数据库都是关系型数据库,其采用的关系型数据结构模型,无论从数学上还是实践中都相当的成熟,得到非常广泛的应用.在关系型数据结构理 论中,所有的数据都组织成一个个相互独立的二 ...

  6. 《Hadoop》对于高级编程Hadoop实现构建企业级安全解决方案

    本章小结 ●    理解企业级应用的安全顾虑 ●    理解Hadoop尚未为企业级应用提供的安全机制 ●    考察用于构建企业级安全解决方式的方法 第10章讨论了Hadoop安全性以及Hadoop ...

  7. chrome切换hosts插件 hostsadmin

    chrome切换hosts插件 hostsadmin 时间 2013-07-16 10:49:09  网络进行时原文  http://www.netingcn.com/chrome-hostsadmi ...

  8. Redis设计与实现:读书笔记之一

    第一部分:数据结构与对象 Redis支持的数据类型 字符串对象 列表对象 Hash对象 集合对象 有序集合对象 2.数据结构 Redis的所有数据类型都是: key-value pair 对象 Red ...

  9. &lt&semi;转&gt&semi;jmeter(十五)函数助手

    jmeter作为一个开源的性能测试工具,作用还是蛮强大的,找到一篇对jmeter中函数助手解释蛮详细的一篇博客,感觉不错,转载过来,希望对大家有所帮助. 由于时间和版本问题,其中有些内容和排版我做了修 ...

  10. 2017 年 PHP 程序员未来路在何方

    PHP 从诞生到现在已经有20多年历史,从Web时代兴起到移动互联网退潮,互联网领域各种编程语言和技术层出不穷, Node.js . GO . Python 不断地在挑战 PHP 的地位.这些技术的推 ...