feign返回null_109、Feign的服务降级和Turbine

一、信号量隔离

278e4867e306441c7548357acf7d7658.png

创建项目

7325ee5ae95457153f54b555e4035c1c.png

修改pom文件添加hystrix坐标

<dependency>
            

修改配置文件

spring.application.name=eureka-consumer-ribbon-semaphore
server.port=9010

eureka.client.serviceUrl.defaultZone=http://user:123456@eureka1:8761/eureka/,http://user:123456@eureka2:8761/eureka/

修改启动类

@EnableCircuitBreaker  

修改ProductService

@Service

3eb260b38a9db53849793f0d3eddaeb7.png

07b533b66f3095d5b3fa466afdcbf74e.png

信号量隔离参数

772513fe3a735d0114b8c6290724706c.png

二、线程池隔离和信号量隔离的区别

07a7373600b85675d6f39b0275f927c6.png

1.什么情况下,用线程池隔离?

请求并发量大,并且耗时长(请求耗时长一般是计算量大 ,或读数据库) : 采用线程隔离策略,这样的话,可以保证大量的容器(tomcat)线程可用,不会由于服务原因,- -直处于阻塞或等待状态,快速失败返回。

2.什么情况下,用信号量隔离?

请求并发量大,并且耗时短(请求耗时短可能是计算量小,或读缓存) : 采用信号量隔离策略,因为这类服务的返回通常会非常的快,不会占用容器线程太长时间,而且也减少了线程切换的一些开销,提高了缓存服务的效率。

三、Feign 的雪崩处理

1. Feign 的服务降级处理

创建项目

334d88477bd0bc5fbb2920003ec0a400.png

修改配置文件开启对 hystrix 的支持

spring.application.name=consumer-feign-fallback
server.port=9020

#设置服务注册中心地址,指向另一个注册中心
eureka.client.serviceUrl.defaultZone=http://user:123456@eureka1:8761/eureka/,http://user:123456@eureka2:8761/eureka/

#Feign 默认是不开启 Hystrix 的。默认为:false
feign.hystrix.enabled=true

修改 ProductConsumerService

@FeignClient

添加 ProductServiceFallback 类

@Component

修改 ProductController

/**

b95763281c15d973ae04c80e6db9a029.png

关闭provider,对服务进行降级返回fallback托底数据

befe360ff87b82c93f7da5d83f5c6582.png

2. 降级后的异常记录

创建项目

2373000ed796ff94ec6eb20c10959350.png

全局配置文件

spring.application.name=consumer-feign-fallbackfactory
server.port=9020

#设置服务注册中心地址,指向另一个注册中心
eureka.client.serviceUrl.defaultZone=http://user:123456@eureka1:8761/eureka/,http://user:123456@eureka2:8761/eureka/

#Feign 默认是不开启 Hystrix 的。默认为:false
feign.hystrix.enabled=true

添加 ProductServiceFallbackFactory 类

@Component

修改 ProductConsumerService

@FeignClient

5fa878091a88bef09f0e4245078ae924.png

四、可视化的数据监控 Hystrix-dashboard

1.可视化的数据监控 Hystrix-dashboard

Hystrix-dashboard 是一款针对 Hystrix 进行实时监控的工具,通过 Hystrix Dashboard 我们可以在直观地看到各 Hystrix Command 的请求响应时间, 请求成功率等数据。

创建项目

9b25b9327b696cd141835060ad327c0c.png

修改 pom 文件添加 Hystrix-dashboard 坐标

<?xml version="1.0" encoding="UTF-8"?>

修改启动类

@EnableCircuitBreaker  

c220dce6a12076a6e9eee15a5ded20d8.png

02c02f0f4c1ca6de6804c0e3d4a3fa88.png

2.Hystrix-dashboard 监控中心

创建项目

948b7b2d5138ebafe0c3d08c82522f81.png

修改 pom 文件添加 Hystrix-dashboard 坐标

<?xml version="1.0" encoding="UTF-8"?>

修改启动类

@EnableCircuitBreaker  

修改配置文件

spring.application.name=eureka-consumer-hystrix-dashboard
server.port=1001

eureka.client.serviceUrl.defaultZone=http://user:123456@eureka1:8761/eureka/,http://user:123456@eureka2:8761/eureka/

启动顺序

先启动服务,再启动监控中心。

访问监控中心

16804da3f7cd7964b446985060f4920a.png

首页介绍

c770d8687ce5c4e405d689bb11cc174f.png

63eb80fe138c323b302339a47af71cff.png

监控中心图解

a3a5351ad24bce6d521839bc9e8ecf90.png

五、使用Turbine在多个服务与集群情况下收集数据监控

98ea9490e1ed02661b79aba265d20064.png

Turbine是聚合服务器发送事件流数据的-一个工具,hystrix 的监控中,只能监控单个节点,实际生产中都为集群,因此可以通过turbine来监控集群服务。

1.创建Turbine项目

c4a4c5e4234e49fe44ecd4e78790a9d5.png

修改 pom 文件添加 turbine 坐标

<?xml version="1.0" encoding="UTF-8"?>

修改配置文件

spring.application.name=eureka-consumer-hystrix-turbine
server.port=1002

eureka.client.serviceUrl.defaultZone=http://user:123456@eureka1:8761/eureka/,http://user:123456@eureka2:8761/eureka/

#---------------------------------------turbine--------------------------
#配置 Eureka 中的 serviceId 列表,表明监控哪些服务
turbine.appConfig=eureka-consumer-ribbon-threadpool,springcloud-eureka-consumer-feign-fallback
#指定聚合哪些集群,多个使用","分割,默认为 default。可使用http://.../turbine.stream?cluster={clusterConfig 之一}访问
turbine.aggregator.clusterConfig= default
# 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
turbine.clusterNameExpression="default"

修改启动类

@SpringBootApplication

2.使用 Turbine 聚合多个服务

修改被聚合的项目的 pom 文件添加 dashboard 坐标

<?xml version="1.0" encoding="UTF-8"?>

修改被监控的服务的启动类

@EnableFeignClients

查看 turbine 整合服务后的监控数据地址

http://localhost:1001/hystrix

测试turbine的整合

676a22924d989a1b12431432cd598729.png

3.监控集群

f36042a50c696026ad92439bc31daeac.png

六、采用 RabbitMQ,收集监控数据

702d65f96536d8c4c0947a0a513bc9c0.png

1.创建 Consumer 服务

580c1d848d27936cb10d866528d2c3c8.png

修改 Consumer 服务的 pom 文件

<?xml version="1.0" encoding="UTF-8"?>

修改 Consumer 的配置文件

spring.application.name=eureka-consumer-ribbon-dashboard
server.port=9010

eureka.client.serviceUrl.defaultZone=http://user:123456@eureka1:8761/eureka/,http://user:123456@eureka2:8761/eureka/

spring.rabbitmq.host=192.168.226.128
spring.rabbitmq.port=5672
spring.rabbitmq.username=user
spring.rabbitmq.password=123456
spring.rabbitmq.virtualHost=/

修改启动类

@EnableCircuitBreaker  

2.创建Turbine项目

614d3c3ffc3ca6e84c9e38c412c5adb3.png

修改Turbine的pom文件

<?xml version="1.0" encoding="UTF-8"?>

修改Turbine的配置文件

spring.application.name=eureka-consumer-hystrix-turbine
server.port=1002

eureka.client.serviceUrl.defaultZone=http://user:123456@eureka1:8761/eureka/,http://user:123456@eureka2:8761/eureka/

spring.rabbitmq.host=192.168.226.128
spring.rabbitmq.port=5672
spring.rabbitmq.username=admin
spring.rabbitmq.password=1111
spring.rabbitmq.virtualHost=/

修改Turbine的启动类

@SpringBootApplication

82387e345e0a2b6a4a7c31f644791d77.png
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值