@author:QYX 最近在赶开源项目,随缘搬运~
对Feign的支持
引入依赖(feign中已经继承了Hystrix)
在feign中开启配置
feign: client: config: service-product: #需要调用的服务名称 loggerLevel: FULL
自定义一个接口的实现类,这个实现类就是熔断触发的降级逻辑
package com.qqq.fegin; import com.qqq.entity.Product; import org.springframework.stereotype.Component; @Component public class ProductFeignClientCallback implements ProductFeginClient { /** * 熔断降级方法 * @param id * @return */ @Override public Product findById(Long id) { Product product=new Product(); product.setProductName("feign调用触发熔断降级方法"); return product; } }
修改feignClient接口添加降级方法
package com.qqq.fegin; import com.qqq.entity.Product; import org.springframework.cloud.openfeign.FeignClient; import org.springframework.web.bind.annotation.PathVariable; import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.RequestMethod; /** * @FeginClient * name:服务提供者的名称 * fallback:配置熔断发送降级方法 * 实现类 * 声明需要调用的微服务名称 * */ @FeignClient(name = "service-product",fallback = ProductFeignClientCallback.class) public interface ProductFeginClient { /** * 配置需要调用的微服务接口 */ @RequestMapping(value = "/product/{id}",method = RequestMethod.GET) public Product findById(@PathVariable("id") Long id); }
Hystrix设置监控信息:
actuator
一、简介
引入坐标
<!--Hystrix的监控和dashborad控制台--> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-actuator</artifactId> </dependency> <dependency> <groupId>org.springframework.cloud</groupId> <artifactId>spring-cloud-starter-netflix-hystrix-dashboard</artifactId> </dependency>
在启动类上配置:
//激活hystrix @EnableCircuitBreaker
暴露所有actuator监控的端点
management: endpoints: web: exposure: include: '*'
在页面上进行访问:
http://localhost:9003/actuator/hystrix.stream
Hystrix Dashboard是什么:
Hystrix提供了对于微服务调用状态的监控信息,但是需要结合spring-boot-actuator模块一起使用。Hystrix Dashboard是Hystrix的一个组件,Hystrix Dashboard提供一个断路器的监控面板,可以使我们更好的监控服务和集群的状态,仅仅使用Hystrix Dashboard只能监控到单个断路器的状态,实际开发中还需要结合Turbine使用。
Hystrix Dashboard作用:
Hystrix Dashboard主要用来实时监控Hystrix的各项指标信息。通过Hystrix Dashboard反馈的实时信息,可以帮助我们快速发现系统中存在的问题。
Hystrix Dashboard使用:
eg:使用基于Hystrix的提供者访问数据库表数据,每访问一次都会记录是否成功以及最近10s错误百分比、超时数、熔断数、线程拒绝数、错误请求数、失败/异常数、服务请求频率等相关信息
使用dashborad监控平台监控
引入坐标:
<!--Hystrix的监控和dashborad控制台--> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-actuator</artifactId> </dependency> <dependency> <groupId>org.springframework.cloud</groupId> <artifactId>spring-cloud-starter-netflix-hystrix-dashboard</artifactId> </dependency>
在启动类上配置注解:
//激活hystrix的web监控平台 @EnableHystrixDashboard
输入网址:
localhost:9003/hystrix
在文本框中输入要监控的spring-boot-actuator模块的地址:即上面的http://localhost:9003/actuator/hystrix.stream
开始监控。
Hystrix Turbine简介
看单个的Hystrix Dashboard的数据并没有什么多大的价值,要想看这个系统的Hystrix Dashboard数据就需要用到Hystrix Turbine。Hystrix Turbine将每个服务Hystrix Dashboard数据进行了整合。Hystrix Turbine的使用非常简单,只需要引入相应的依赖和加上注解和配置就可以了。
配置一个turbineServer
引入坐标
<?xml version="1.0" encoding="UTF-8"?> <project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"> <parent> <artifactId>spring_cloud_demo</artifactId> <groupId>cn.qyx</groupId> <version>1.0-SNAPSHOT</version> </parent> <modelVersion>4.0.0</modelVersion> <artifactId>hystrix_turbine</artifactId> <dependencies> <!--引入hystrix--> <dependency> <groupId>org.springframework.cloud</groupId> <artifactId>spring-cloud-starter-netflix-hystrix</artifactId> </dependency> <!--Hystrix的监控和dashborad控制台--> <dependency> <groupId>org.springframework.cloud</groupId> <artifactId>spring-cloud-starter-netflix-turbine</artifactId> </dependency> <dependency> <groupId>org.springframework.cloud</groupId> <artifactId>spring-cloud-starter-netflix-hystrix-dashboard</artifactId> </dependency> </dependencies> </project>
配置turbine
server: port: 8031 eureka: client: service-uri: defaultZone: http://localhost:9000/eureka/ instance: prefer-ip-address: true turbine: #要监控的微服务列表用,多个用,分割 app-config: service-order # 1. clusterNameExpression指定集群名称,默认表达式appName;此时:turbine.aggregator.clusterConfig需要配置想要监控的应用名称 # 2. 当clusterNameExpression: default时,turbine.aggregator.clusterConfig可以不写,因为默认就是default # 3. 当clusterNameExpression: metadata['cluster']时,假设想要监控的应用配置了eureka.instance.metadata-map.cluster: ABC, #则需要配置,同时turbine.aggregator.clusterConfig: ABC cluster-name-expression: "'default'"
在启动类上使用@EnableHystrixDashboard和@EnableTurbine注解
package com.itcast.TurbinA; import org.springframework.boot.SpringApplication; import org.springframework.boot.autoconfigure.SpringBootApplication; import org.springframework.cloud.netflix.hystrix.dashboard.EnableHystrixDashboard; import org.springframework.cloud.netflix.turbine.EnableTurbine; @SpringBootApplication //开启turbine @EnableHystrixDashboard @EnableTurbine public class TurbinApplication { public static void main(String[] args) { SpringApplication.run(TurbinApplication.class,args); } }
访问之前配置的端口
localhost:8031/hystrix
输入localhost:8031/turbine.stream查看监控信息
来源:https://www.cnblogs.com/qyx66/p/12393200.html