Hystrix 容错机制
在不改变各个服务器调用关系的前提下,针对错误情况进行预先处理。
设计原则:
1)服务隔离机制
2)服务降级机制
3)熔断机制
4)提供实时的监控和报警功能
5)提供实时的配置修改功能
Hystrix数据监控需要结合Spring Cloud Actuator来使用,Actuator提供了
对服务的健康监控、数据统计,可以通过hystrix.stream节点获取监控的请求数据,
提供了可视化的监控界面。
创建maven模块
pom.xml
>>>org.springframework.cloud>>spring-cloud-starter-netflix-eureka-client>>2.0.2.RELEASE>>>>org.springframework.cloud>>spring-cloud-starter-openfeign>>2.0.2.RELEASE>>>>org.springframework.boot>>spring-boot-starter-actuator>>2.0.7.RELEASE>>>>org.springframework.cloud>>spring-cloud-starter-netflix-hystrix>>2.0.2.RELEASE>>>>org.springframework.cloud>>spring-cloud-starter-netflix-hystrix-dashboard>>2.0.2.RELEASE>>
>
创建配置文件 application.yml
server:port: 8060
spring:application:name: hystrix
eureka:client:service-url:defaultZone: http://localhost:8761/eureka/instance:prefer-ip-address: true
feign:hystrix:enabled: true
management:endpoints:web:exposure:include: 'hystrix.stream'
创建启动类
package com.shuang;import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.cloud.client.circuitbreaker.EnableCircuitBreaker;
import org.springframework.cloud.netflix.hystrix.dashboard.EnableHystrixDashboard;
import org.springframework.cloud.openfeign.EnableFeignClients;@SpringBootApplication
@EnableFeignClients
@EnableCircuitBreaker
@EnableHystrixDashboard
public class HystrixApplication {public static void main(String[] args) {SpringApplication.run(HystrixApplication.class,args);}
}
注解说明:
@EnableCircuitBreaker:声明启用数据监控
@EnableHystrixDashboard:声明启用可视化数据监控
Handler
package com.shuang.controller;import com.shuang.entity.Student;
import com.shuang.feign.FeignProviderClient;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;import java.util.Collection;@RestController
@RequestMapping("/hystrix")
public class HystrixHandler {&#64;Autowiredprivate FeignProviderClient feignProviderClient;&#64;GetMapping("/findAll")public Collection<Student> findAll(){return feignProviderClient.findAll();}&#64;GetMapping("/index")public String index(){return feignProviderClient.index();}
}
启动成功后&#xff0c;访问http://localhost:8060/actuator/hystrix.stream 可以监控到请求数据
访问 http://localhost:8060/hystrix&#xff0c;可以看到可视化的监控界面&#xff0c;输入要监控的地址节点&#xff0c;
即可看到该节点的可视化数据监控。
feign提供了服务熔断&#xff0c;与笔记7相同&#xff0c;这里就不啰嗦了