栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Java

SpringCloud知识点梳理 - 4.2 Hystrix组件实现服务熔断

Java 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

SpringCloud知识点梳理 - 4.2 Hystrix组件实现服务熔断

1.如何通过Hystrix组件实现服务熔断?

1.引入Hystrix依赖


	org.springframework.cloud
	spring-clout-start-netflix-hystrix

2.开启断路器

@SpringBootApplication
@EnableCircuitBreaker //开启断路器
public class DemoApplication {

    public static void main(String[] args) {
        SpringApplication.run(DemoApplication.class, args);
    }

}

3.HystrixCommon注解实现断路

@GetMapping("/product/break")
@HystrixCommon(fallbackMethod = "testBreakFall")
public String testBreak(int id){
	log.info("接收的id为: "+ id);
	if(id < 0){
		throw new RuntimeException("数据不合法!")
	}
	return "当前id为:" + id;
}

4.熔断方法

//熔断方法
public String testBreakFall(int id){
   log.info("当前的id为: "+ id);
	
	return "当前传入的id为:" + id +",不是有效ID,触发熔断。";
}

断路器的半开与全开

当一个服务(或接口)
单位时间内被请求失败次数达到阈值(默认10s内超过20次请求失败),
或
单位时间内被请求失败率达到一定阈值(默认10s内超过50%的请求失败),
断路器将会开启,所有针对此服务(或接口)的请求都不会被转发;

一段时间之后(默认为5s),断路器转为半开状态并放行一个请求进行转发,
若成功,断路器会关闭,若失败则继续开启,5s之后重复此操作。

2.默认的服务FallBack方法

若为每一个服务接口开发一个熔断方法可能会出现大量的代码冗余,这时就需要加入默认的服务熔断处理方法

@GetMapping("/product/break")
@HystrixCommon(defaultFallback = "testBreakFall")
//在每一个接口上可以用defaultFallback 参数设置一个共同的返回
public String testBreak(int id){
	log.info("接收的id为: "+ id);
	if(id < 0){
		throw new RuntimeException("数据不合法!")
	}
	return "当前id为:" + id;
}

PS:个人觉得这所谓默认的服务FallBack方法没什么卵用,完全可以还用fallbackMethod属性,都指定同一个返回方法就好了跟使用defaultFallback 一个效果,先留着,以后有时间了找找资料再补充。

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/678032.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号