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";

}

}

测试熔断器

579d95847fd3

图片.png

579d95847fd3

图片.png

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值