系列4-springCloud微服务-Hystrix熔断器

1.添加服务端的熔断器
步骤1:修改服务端pom文件,添加对Hystrix组件的引用。
org.springframework.cloud
spring-cloud-starter-hystrix
步骤2:修改服务端Controller类中的方法,在方法上添加 @HystrixCommand(fallbackMethod="getUserInfoFallBack")注解,fallbackMethod的值是在该方法出现异常后,要调用的方法名称, 注意,回调防范的参数列表应与本方法一致
@RequestMapping("/dept/user")
@HystrixCommand(fallbackMethod="getUserInfoFallBack")
public UserBean getUserInfo(){
UserBean bean = null;//new UserBean();
if(bean==null){
throw new RuntimeException("对象不存在");
}
//bean.setUserId("8809");
//bean.setUserName("我是8809服务的用户");
return bean;
}
public UserBean getUserInfoFallBack(){
UserBean bean = new UserBean();
bean.setUserId("fallback");
bean.setUserName("我是fallback服务的用户");
return bean;
}
步骤3:在服务端的启动类上添加注解 @EnableCircuitBreaker,启动服务即可。
@SpringBootApplication
@EnableEurekaClient
@EnableDiscoveryClient
@EnableCircuitBreaker
public class UtralServiceApplication {

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

}

2.添加feign的熔断器(服务降级)

步骤1:在feign的service组件中增加对于接口的回调类。实现FallbackFactory接口,并添加上 @Component注解 ,实现 FallbackFactory接口的方法,并在方法中创建匿名的服务接口对象,并添加上降级服务的方法实现,当服务端无法访问时,会降级调用此方法
@Component
public class IDeptClientServiceFallBack implements FallbackFactory {

@Override
public IDeptClientService create(Throwable arg0) {
return new IDeptClientService(){

@Override
public String getSessionId() {
return "feign9999";
}

@Override
public UserBean getUser() {
UserBean bean = new UserBean();
bean.setUserId("feignfallbackID9999");
bean.setUserName("feignfallbackName");
return bean;
}
};
}

}
步骤2:修改service组件中的服务接口,在注解@FeignClient中添加上面创建的类
@FeignClient(value="SPRINGCLOUD-ULTRASERVICE",configuration=FeignClientConfig.class,
fallbackFactory=IDeptClientServiceFallBack.class )
public interface IDeptClientService {
@RequestMapping(method=RequestMethod.GET,value="/dept/sessionId")
public String getSessionId();
@RequestMapping(method=RequestMethod.GET,value="/dept/user")
public UserBean getUser();
}

步骤3:修改feign组件中的启动类的注解 @ComponentScan("com.ultrapower.service,com.ultrapower.idaa")添加对这两个包的扫描,第一个包是扫描service接口,第二个包是扫描feign组件自己的服务。
@SpringBootApplication
@EnableEurekaClient
@ComponentScan("com.ultrapower.service,com.ultrapower.idaa")
@EnableFeignClients(basePackages={"com.ultrapower.service"})
public class FeignApplication {
public static void main(String[] args) {
SpringApplication.run(FeignApplication.class,
args);
}
}
步骤4:修改feign组件中的application.yml文件,追加feign对于熔断器的启用,注意:此处设置仅适用与springCloud-Dalston以上版本,以下版本不需要此设置即可以启动,由于现在版本原因,在设置如下配以以后,编译器会有告警提示,但是可以忽略。
feign:
hystrix: #由于版本原因,此处会报告警
enabled: true

3.添加dashboard监控组件
步骤1:创建一个dashboard组件做监控,pom文件中添加如下引用:
org.springframework.cloud
spring-cloud-starter-hystrix-dashboard
org.springframework.cloud
spring-cloud-starter-hystrix
步骤2:创建dashboard组件的启动类,并在启动类上添加@EnableHystrixDashboard注解,实现dashboard监控
@SpringBootApplication
@EnableHystrixDashboard
public class HystrixDashboardApplication {
public static void main(String[] args) {
SpringApplication.run(HystrixDashboardApplication.class,
args);
}
}
步骤3:修改所有的服务端pom,追加上监控组件包
org.springframework.boot
spring-boot-starter-actuator
步骤4:修改dashboard组件的application.yml配置文件,添加上启动端口
server:
port: 9001
步骤5:启动所有的服务,访问dashboard界面
http://192.168.36.213:9001/hystrix
根据自己的微服务地址,替换成如下格式,填入页面的地址框中,会得到如下信息
http://java:[email protected]:8809/hystrix.stream

4.添加turbine聚合监控组件
步骤1:创建turbine的模块,修改pom文件
org.springframework.cloud
spring-cloud-starter-turbine
org.springframework.cloud
spring-cloud-starter-hystrix-dashboard
org.springframework.cloud
spring-cloud-starter-hystrix
步骤2:修改application.yml文件,设置端口,及进行Eureka注册,并设置turbine监控的服务列表,以及监控表达式。
server:
port: 9100
eureka:
client:
serviceUrl:
defaultZone: http://ejava:[email protected]:8000/eureka/
turbine:
app-config: SPRINGCLOUD-IDAASERVICE,SPRINGCLOUD-ULTRASERVICE #定义要监控的微服务的名称,特别多的时候可以用“*”
cluster-name-expression: new String("default") #设置监控表达式,根据表达式获取监控信息名称
步骤3:修改turbine模块启动类,添加对turbine和dashboard支持的注解
@SpringBootApplication
@EnableHystrixDashboard
@EnableTurbine
public class HystrixDashboardApplication {
public static void main(String[] args) {
SpringApplication.run(HystrixDashboardApplication.class,
args);
}
}
步骤4:启动所有的服务,将turbine的监控地址放到dashboard中,就可以进行所有的服务监控。
如果监控服务使用的安全认证,则需要进行服务放行
步骤5:修改安全认证模块的安全认证类,追加如下操作,访问即可
@Override
public void configure(WebSecurity web) throws Exception {
//设置可放行服务,对监控程序放行
web.ignoring().antMatchers("/hystrix.stream","turbine.stream");
}

你可能感兴趣的:(springCloud学习笔记)