springcloud之Hystrix熔斷器
雪崩效應
在分散式系統中,各個服務相互呼叫相互依賴,如果某個服務掛了,很可能導致其他呼叫它的一連串服務也掛掉
或者在不斷等待
中耗盡伺服器資源
,這種現象稱之為伺服器雪崩效應
;
熔斷機制
未來防止系統雪崩,熔斷機制必不可少,就是當一個服務掛掉後,呼叫它的服務能快速熔斷,不再耗費資源,快速失敗
並提供回退方案
;
Hystrix
Hystrix
是spring cloud
全家桶的Circuit Breaker
熔斷器元件,提供了熔斷器功能,能夠阻止聯動故障,並提供故障的解決方案,提供系統彈性;
maven依賴
<!-- https://mvnrepository.com/artifact/org.springframework.cloud/spring-cloud-starter-netflix-hystrix -->
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-netflix-hystrix</artifactId>
</dependency>
application.yml
在配置檔案中開啟熔斷器
#開啟熔斷器開關
feign:
hystrix:
enabled: true
@EnableHystrix啟動Hystrix
SpringBoot啟動類中增加 @EnableHystrix 註解和bean
@SpringBootApplication
@EnableEurekaClient
@EnableHystrix
@EnableFeignClients
public class SpringCloudApplication
{
public static void main(String[] args)
{
SpringApplication.run(application.class);
}
@Bean
public ServletRegistrationBean getServlet(){
HystrixMetricsStreamServlet streamServlet = new HystrixMetricsStreamServlet();
ServletRegistrationBean registrationBean = new ServletRegistrationBean(streamServlet);
registrationBean.setLoadOnStartup(1);
registrationBean.addUrlMappings("/actuator/hystrix.stream");
registrationBean.setName("HystrixMetricsStreamServlet");
return registrationBean;
}
}
熔斷器類
增加熔斷器類,實現Feign的介面
import org.springframework.stereotype.Component;
import org.springframework.web.bind.annotation.RequestMapping;
@Component
public class FUserServiceHystrix implements FUserService
{
@RequestMapping("/user/hello")
@Override
public String hello()
{
return "對不起,user服務不可達,請稍後再試!";
}
}
熔斷器配置類
增加熔斷器配置類FeignConfig
import feign.Retryer;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import java.util.concurrent.TimeUnit;
@Configuration
public class FeignConfig {
@Bean
public Retryer feignRetryer() {
/*
* 引數說明:
* 第一個> 重試間隔為100毫秒
* 第二個> 最大重試時間為1秒
* 第三個> 最大重試次數為5次
*/
return new Retryer.Default(100, TimeUnit.SECONDS.toMillis(1), 5);
}
}
增加fallback
在Feign介面註解中增加fallback,指向熔斷器類
import org.springframework.cloud.openfeign.FeignClient;
import org.springframework.web.bind.annotation.RequestMapping;
@FeignClient(name = "user",configuration = FeignConfig.class,fallback = FUserServiceHystrix.class)
public interface FUserService
{
@RequestMapping("/user/hello")
public String hello();
}
相關文章
- springcloud(四):熔斷器HystrixSpringGCCloud
- SpringCloud原始碼學習之Hystrix熔斷器SpringGCCloud原始碼
- springcloud之hystrix熔斷器-Finchley.SR2版SpringGCCloud
- 《SpringCloud專題17》-Hystrix熔斷器案例SpringGCCloud
- SpringCloud學習筆記:熔斷器Hystrix(5)SpringGCCloud筆記
- 跟我學SpringCloud | 第四篇:熔斷器HystrixSpringGCCloud
- (24)SpringCloud-Hystrix(熔斷器)介紹及使用SpringGCCloud
- springcloud(五):熔斷監控Hystrix DashboardSpringGCCloud
- 微服務SpringCloud之熔斷監控Hystrix Dashboard和Turbine微服務SpringGCCloud
- 微服務SpringCloud之熔斷器微服務SpringGCCloud
- SpringCloud-Hystrix 服務降級、熔斷SpringGCCloud
- Hystrix--熔斷
- 微服務熔斷限流Hystrix之Dashboard微服務
- SpringCloud(三)Hystrix斷路器SpringGCCloud
- SpringCloud Netflix (五) : Hystrix 服務熔斷和服務降級SpringGCCloud
- SpringCloud之斷路器聚合監控(Hystrix Turbine)SpringGCCloud
- Spring cloud(4)-熔斷(Hystrix)SpringCloud
- Spring Cloud實戰系列(四) - 熔斷器HystrixSpringCloud
- 跟我學SpringCloud | 第五篇:熔斷監控Hystrix Dashboard和TurbineSpringGCCloud
- 熔斷器 Hystrix 原始碼解析 —— 執行命令方式原始碼
- SpringCloud之HystrixSpringGCCloud
- 微服務熔斷限流Hystrix之流聚合微服務
- Java springcloud B2B2C o2o多使用者商城 springcloud架構(四):熔斷器HystrixJavaSpringGCCloud架構
- 使用springcloud gateway搭建閘道器(分流,限流,熔斷)SpringGCCloudGateway
- springcloud(六):熔斷監控TurbineSpringGCCloud
- 分散式服務防雪崩熔斷器,Hystrix理論+實戰。分散式
- 聊聊微服務:Hystrix熔斷機制和原理微服務
- 微服務元件之限流器與熔斷器微服務元件
- SpringCloud 2020.0.4 系列之Hystrix看板SpringGCCloud
- 五. SpringCloud服務降級與熔斷SpringGCCloud
- java spring cloud 版b2b2c社交電商-熔斷器HystrixJavaSpringCloud
- SpringCloud基礎之斷路器SpringGCCloud
- SpringCloud 2020.0.4 系列之服務降級的其他用法與熔斷SpringGCCloud
- 業餘草 SpringCloud教程 | 第四篇:斷路器(Hystrix)(Finchley版本)SpringGCCloud
- 史上最簡單的 SpringCloud 教程 | 第四篇: 斷路器(Hystrix)SpringGCCloud
- 微服務11:熔斷、降級的Hystrix實現(附原始碼)微服務原始碼
- Hystrix斷路器介紹
- Spring Cloud中Hystrix、Ribbon及Feign的熔斷關係是什麼?SpringCloud