feign返回null_109、Feign的服务降级和Turbine
一、信號量隔離
創建項目
修改pom文件添加hystrix坐標
<dependency>修改配置文件
spring.application.name=eureka-consumer-ribbon-semaphore server.port=9010eureka.client.serviceUrl.defaultZone=http://user:123456@eureka1:8761/eureka/,http://user:123456@eureka2:8761/eureka/修改啟動類
@EnableCircuitBreaker修改ProductService
@Service信號量隔離參數
二、線程池隔離和信號量隔離的區別
1.什么情況下,用線程池隔離?
請求并發量大,并且耗時長(請求耗時長一般是計算量大 ,或讀數據庫) : 采用線程隔離策略,這樣的話,可以保證大量的容器(tomcat)線程可用,不會由于服務原因,- -直處于阻塞或等待狀態,快速失敗返回。
2.什么情況下,用信號量隔離?
請求并發量大,并且耗時短(請求耗時短可能是計算量小,或讀緩存) : 采用信號量隔離策略,因為這類服務的返回通常會非常的快,不會占用容器線程太長時間,而且也減少了線程切換的一些開銷,提高了緩存服務的效率。
三、Feign 的雪崩處理
1. Feign 的服務降級處理
創建項目
修改配置文件開啟對 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
/**關閉provider,對服務進行降級返回fallback托底數據
2. 降級后的異常記錄
創建項目
全局配置文件
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四、可視化的數據監控 Hystrix-dashboard
1.可視化的數據監控 Hystrix-dashboard
Hystrix-dashboard 是一款針對 Hystrix 進行實時監控的工具,通過 Hystrix Dashboard 我們可以在直觀地看到各 Hystrix Command 的請求響應時間, 請求成功率等數據。
創建項目
修改 pom 文件添加 Hystrix-dashboard 坐標
<?xml version="1.0" encoding="UTF-8"?>修改啟動類
@EnableCircuitBreaker2.Hystrix-dashboard 監控中心
創建項目
修改 pom 文件添加 Hystrix-dashboard 坐標
<?xml version="1.0" encoding="UTF-8"?>修改啟動類
@EnableCircuitBreaker修改配置文件
spring.application.name=eureka-consumer-hystrix-dashboard server.port=1001eureka.client.serviceUrl.defaultZone=http://user:123456@eureka1:8761/eureka/,http://user:123456@eureka2:8761/eureka/啟動順序
先啟動服務,再啟動監控中心。
訪問監控中心
首頁介紹
監控中心圖解
五、使用Turbine在多個服務與集群情況下收集數據監控
Turbine是聚合服務器發送事件流數據的-一個工具,hystrix 的監控中,只能監控單個節點,實際生產中都為集群,因此可以通過turbine來監控集群服務。
1.創建Turbine項目
修改 pom 文件添加 turbine 坐標
<?xml version="1.0" encoding="UTF-8"?>修改配置文件
spring.application.name=eureka-consumer-hystrix-turbine server.port=1002eureka.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"修改啟動類
@SpringBootApplication2.使用 Turbine 聚合多個服務
修改被聚合的項目的 pom 文件添加 dashboard 坐標
<?xml version="1.0" encoding="UTF-8"?>修改被監控的服務的啟動類
@EnableFeignClients查看 turbine 整合服務后的監控數據地址
http://localhost:1001/hystrix
測試turbine的整合
3.監控集群
六、采用 RabbitMQ,收集監控數據
1.創建 Consumer 服務
修改 Consumer 服務的 pom 文件
<?xml version="1.0" encoding="UTF-8"?>修改 Consumer 的配置文件
spring.application.name=eureka-consumer-ribbon-dashboard server.port=9010eureka.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=/修改啟動類
@EnableCircuitBreaker2.創建Turbine項目
修改Turbine的pom文件
<?xml version="1.0" encoding="UTF-8"?>修改Turbine的配置文件
spring.application.name=eureka-consumer-hystrix-turbine server.port=1002eureka.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總結
以上是生活随笔為你收集整理的feign返回null_109、Feign的服务降级和Turbine的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: git clone github_Git
- 下一篇: 存储过程提示data truncatio