java1234开源博客系统
博客信息

Hystrix服务熔断服务降级@HystrixCommand fallbackMethod

0
发布时间:『 2018-10-07 17:58』  博客类别:SpringCloud  阅读(89)

Hystrix服务熔断服务降级@HystrixCommand fallbackMethod


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

当某个服务不可用或者响应时间超时,会进行服务降级,进而熔断该节点的服务调用,快速返回自定义的错误影响页面信息。


我们写个项目来测试下;


我们写一个新的带服务熔断的服务提供者项目 microservice-student-provider-hystrix-1004

把 配置和 代码 都复制一份到这个项目里;


然后修改;


1,pom.xml加下 hystrix支持

<dependency>

<groupId>org.springframework.cloud</groupId>

<artifactId>spring-cloud-starter-hystrix</artifactId>

</dependency>


2,application.yml修改下端口和实例名称

port: 1004

 instance-id: microservice-student-hystrix:1004 #客户端实例名称


3,启动类名称改成StudentProviderHystrixApplication_1004

以及加下注解支持 @EnableCircuitBreaker


4,我们新增方法getInfo

 /**
 * 获取信息
 * @return
 * @throws InterruptedException 
 */
@ResponseBody
@GetMapping(value="/getInfo")
@HystrixCommand(fallbackMethod="getInfoFallback")
public Map<String,Object> getInfo() throws InterruptedException{
	Thread.sleep(2000);
	Map<String,Object> map=new HashMap<String,Object>();
	map.put("code", 200);
	map.put("info", "业务数据xxxxx");
	return map;
}

public Map<String,Object> getInfoFallback() throws InterruptedException{
	Map<String,Object> map=new HashMap<String,Object>();
	map.put("code", 500);
	map.put("info", "系统出错,稍后重试");
	return map;
}

这里我正常访问 返回的是 200  业务数据xxxxx 

但是我们这里Thread.sleep(2000) 模拟超时;

这里的话 我们加上@HystrixCommand注解 以及 fallbackMethod

表明这个方法我们再 没有异常以及没有超时(hystrix默认1秒算超时)的情况,才返回正常的业务数据;

否则,进入我们fallback指定的本地方法,我们搞的是500  系统出错,稍后重试,有效的解决雪崩效应,以及返回给用户界面

很好的报错提示信息;



============================


microservice-student-consumer-80项目也要对应的加个方法

/**
 * 根据id删除学生信息
 * @return
 */
@SuppressWarnings("unchecked")
@GetMapping(value="/getInfo")
@ResponseBody
public Map<String,Object> getInfo(){
	return restTemplate.getForObject(PRE_HOST+"/student/getInfo/", Map.class);
}


然后我们来测试下;

先启动三个eureka,再启动带hystrix的provider,最后启动普通的consumer;


浏览器:http://localhost/student/getInfo

返回:

QQ鎴浘20181007174956.jpg


因为 Hystrix默认1算超时,所有 sleep了2秒 所以进入自定义fallback方法,防止服务雪崩;


我们这里改sleep修改成100毫秒;


QQ鎴浘20181007175230.jpg


返回了正常的业务数据;


关键字:   Hystrix服务熔断     服务降级  
Powered by Java1234 V3.0 Copyright © 2012-2016 Java知识分享网 版权所有