feign整合sential,Feign中使用Sentinel熔断器防止服务雪崩
服務故障雪崩效應
在微服務架構中,根據業務來拆分成一個個的服務,服務與服務之間可以通過 RPC 相互調用,在 Spring Cloud 中可以用 RestTemplate + LoadBalanceClient 和 Feign 來調用。為了保證其高可用,單個服務通常會集群部署。由于網絡原因或者自身的原因,服務并不能保證 100% 可用,如果單個服務出現問題,調用這個服務就會出現線程阻塞,此時若有大量的請求涌入,Servlet 容器的線程資源會被消耗完畢,導致服務癱瘓。服務與服務之間的依賴性,故障會傳播,會對整個微服務系統造成災難性的嚴重后果,這就是服務故障的雪崩效應。
概念
服務熔斷:
一般是指軟件系統中,由于某些原因使得服務出現了過載現象,為防止造成整個系統故障,從而采用的一種保護措施,所以很多地方把熔斷亦稱為過載保護。很多時候剛開始可能只是系統出現了局部的、小規模的故障,然而由于種種原因,故障影響的范圍越來越大,最終導致了全局性的后果。
適用場景:防止應用程序直接調用那些很可能會調用失敗的遠程服務或共享資源
服務降級:
當服務器壓力劇增的情況下,根據當前業務情況及流量對一些服務和頁面有策略的降級,以此釋放服務器資源以保證核心任務的正常運行。
Feign 中使用 Sentinel
如果要在項目中引入 Sentinel,使用 group ID 為 org.springframework.cloud 和 artifact ID 為 spring-cloud-starter-alibaba-sentinel 的 starter。
org.springframework.cloud
spring-cloud-starter-alibaba-sentinel
Sentinel 適配了 Feign 組件。但默認是關閉的。需要在配置文件中配置打開它,在配置文件增加以下代碼:
feign:
sentinel:
enabled: true
在 Service 中增加 fallback 指定類
package com.dsy.spring.cloud.alibaba.nacos.consumer.feign.service;
import com.dsy.spring.cloud.alibaba.nacos.consumer.feign.service.fallback.EchoServiceFallback;
import org.springframework.cloud.openfeign.FeignClient;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.PathVariable;
/**
* @author sanya deng
* @version 1.0.0
* @Title: EchoService
* @ProjectName SpringCloud
* @Description: TODO
* @email forestsancy@163.com
* @date 2019-04-12 16:31
*/
//通過 @FeignClient("服務名") 注解來指定調用哪個服務
@FeignClient(value = "nacos-provider", fallback = EchoServiceFallback.class)
public interface EchoService {
@GetMapping(value = "/echo/{message}")
String echo(@PathVariable("message") String message);
}
創建熔斷器類并實現對應的 Feign 接口
package com.dsy.spring.cloud.alibaba.nacos.consumer.feign.service.fallback;
import com.dsy.spring.cloud.alibaba.nacos.consumer.feign.service.EchoService;
import org.springframework.stereotype.Component;
/**
* @author sanya deng
* @version 1.0.0
* @Title: EchoServiceFallback
* @ProjectName SpringCloud
* @Description: TODO
* @email forestsancy@163.com
* @date 2019-04-15 10:43
*/
@Component
public class EchoServiceFallback implements EchoService {
@Override
public String echo(String message) {
return "echo fallback";
}
}
測試熔斷器
圖片.png
圖片.png
創作挑戰賽新人創作獎勵來咯,堅持創作打卡瓜分現金大獎總結
以上是生活随笔為你收集整理的feign整合sential,Feign中使用Sentinel熔断器防止服务雪崩的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 传OpenAI秘密雇佣多位前谷歌AI研究
- 下一篇: 多信息源确认苹果今年将收窄 iPhone