【SpringCloud】(十一):超時機制和斷路器及 Hystrix簡單實踐
上篇文章我們配置了Eureka叢集,實現了高可用。在微服務框架中,一個服務消費者可能是其他服務消費者的提供者,而當低層次的服務提供者出現問題時,會導致系統資源被耗盡。出現雪崩效應。
Hystrix是解決解決方案的實踐。
消費者服務:microservice-comsumer-movie-ribbon-withhystrix
1.POM.xml中加入依賴
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-hystrix</artifactId>
</dependency>
2.在啟動來上加入註解:
@EnableCircuitBreaker
3.Controller中加入註解和失敗呼叫方式
package com.dynamic.cloud.controller;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.cloud.client.ServiceInstance;
import org.springframework.cloud.client.loadbalancer.LoadBalancerClient;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.PathVariable;
import org.springframework.web.bind.annotation.RestController;
import org.springframework.web.client.RestTemplate;
import com.dynamic.cloud.entity.User;
import com.netflix.hystrix.contrib.javanica.annotation.HystrixCommand;
@RestController
public class MovieController {
@Autowired
private RestTemplate restTemplate;
@GetMapping("/movie/{id}")
@HystrixCommand(fallbackMethod = "findByIdFallback")
public User findById(@PathVariable Long id) {
return this.restTemplate.getForObject("http://microservice-provider-user/simple/" + id, User.class);
}
public User findByIdFallback(Long id) {
User user = new User();
user.setId(0L);
return user;
}
}
4.配置檔案 application.yml
server:
port: 7901
spring:
application:
name: microservice-comsumer-movie-ribbon
eureka:
client:
serviceUrl:
defaultZone: http://user:pass123@localhost:8761/eureka
instance:
prefer-ip-address: true
instance-id: ${spring.application.name}:${spring.application.instance_id:${server.port}}
#hystrix.command.default.execution.isolation.thread.timeoutInMilliseconds: 5000
啟動Eureka,使用者微服務,電影微服務。
直接訪問,出現資料訪問成功,而當我們把使用者微服務停掉的時候,再次訪問就會走我們的fallbackMethod配置的方法。
相關文章
- Hystrix超時機制
- SpringCloud(三)Hystrix斷路器SpringGCCloud
- 史上最簡單的 SpringCloud 教程 | 第四篇: 斷路器(Hystrix)SpringGCCloud
- springcloud之Hystrix熔斷器SpringGCCloud
- springcloud(四):熔斷器HystrixSpringGCCloud
- SpringCloud之斷路器聚合監控(Hystrix Turbine)SpringGCCloud
- (24)SpringCloud-Hystrix(熔斷器)介紹及使用SpringGCCloud
- springcloud之hystrix原理和實踐總結SpringGCCloud
- 業餘草 SpringCloud教程 | 第十一篇: 斷路器監控(Hystrix Dashboard)(Finchley版本)SpringGCCloud
- 史上最簡單的SpringCloud教程 | 第十二篇: 斷路器監控(Hystrix Dashboard)(Finchley版本)SpringGCCloud
- SpringCloud微服務系列(5): 服務容錯斷路器HystrixSpringGCCloud微服務
- 《SpringCloud專題17》-Hystrix熔斷器案例SpringGCCloud
- HBase最佳實踐-客戶端超時機制客戶端
- springcloud微服務實戰 學習筆記五 Hystrix服務降級 Hystrix依賴隔離 斷路器SpringGCCloud微服務筆記
- SpringCloud原始碼學習之Hystrix熔斷器SpringGCCloud原始碼
- SpringCloud學習筆記:熔斷器Hystrix(5)SpringGCCloud筆記
- 熔斷器 Hystrix 原始碼解析 —— 斷路器 HystrixCircuitBreaker原始碼UI
- springcloud(五):熔斷監控Hystrix Dashboard和TurbineSpringGCCloud
- 微服務斷路器模式實現:Istio vs Hystrix微服務模式
- 跟我學SpringCloud | 第四篇:熔斷器HystrixSpringGCCloud
- 業餘草 SpringCloud教程 | 第四篇:斷路器(Hystrix)(Finchley版本)SpringGCCloud
- springcloud之hystrix熔斷器-Finchley.SR2版SpringGCCloud
- spring cloud之斷路器hystrix(五)SpringCloud
- 簡單電路實踐——電路與二進位制運算
- springcloud(五):熔斷監控Hystrix DashboardSpringGCCloud
- 微服務SpringCloud之熔斷監控Hystrix Dashboard和Turbine微服務SpringGCCloud
- Spring Cloud入門教程-Hystrix斷路器實現容錯和降級SpringCloud
- SpringCloud-Hystrix 服務降級、熔斷SpringGCCloud
- Spring Cloud:使用Hystrix實現斷路器原理詳解(下)SpringCloud
- SpringCloud分散式微服務雲架構 第四篇:斷路器(Hystrix)(Finchley版本)SpringGCCloud分散式微服務架構
- OpenGL簡單介紹及實踐
- SpringCloud基礎之斷路器SpringGCCloud
- 【C#入門超簡單】簡單的專案實踐C#
- SpringCloud分散式微服務雲架構 | 第十一篇: 斷路器監控SpringGCCloud分散式微服務架構
- 業餘草 SpringCloud教程 | 第十二篇: 斷路器聚合監控(Hystrix Turbine)(Finchley版本)SpringGCCloud
- Spring Cloud(五)斷路器監控(Hystrix Dashboard)SpringCloud
- Golang利用select實現超時機制Golang
- 跟我學SpringCloud | 第五篇:熔斷監控Hystrix Dashboard和TurbineSpringGCCloud