Hystrix支持的降级逻辑实现

第一步:

Feign默认也有对Hystix的集成,只不过,默认情况下是关闭的。我们需要通过下面的参数来开启:(在消费端consumer中yml文件中加配置)

feign:
  hystrix:
    enabled: true

注意:(实现方法多种这里先介绍一种)

第二步:在controller中开放接口

@Autowired
private UserFeign userFeign;

@GetMapping("/user/{id}")
public User getUserById(@PathVariable("id") Long id) {
    User user = userFeign.getById(id);
    return user;
}

第三步:导入依赖

<!--Feign可以把Rest的请求进行隐藏,伪装成类似Spring MVC的Controller一样。你不用再自己拼接url,拼接参数等等操作-->
<dependency>
    <groupId>org.springframework.cloud</groupId>
    <artifactId>spring-cloud-starter-openfeign</artifactId>
</dependency>

第四步:定义一个类作为fallback的处理类

import com.itheima.consumer.entity.User;
import org.springframework.stereotype.Service;

import java.util.Date;

@Service
public class UserFeignImpl implements UserFeign {
    @Override
    public User getById(Long id) {
        //降级逻辑
        return new User(id, "我是feign降级策略,C计划", 108, new Date());
    }
}

第五步:然后在UserFeign中,指定刚才编写的实现类

import com.itheima.consumer.entity.User;
import org.springframework.cloud.openfeign.FeignClient;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.PathVariable;

// http://localhost:8001/user/123
@FeignClient(value = "user-service",fallback = UserFeignImpl.class)// 替换http://localhost:8001
public interface UserFeign {

    @GetMapping("/user/{id}")
    public User getById(@PathVariable("id") Long id);
}

最后测试:

注意:要在feign中value指定的服务中制造异常,然后访问当前服务,否则页面出错

制造异常

//模拟异常
if (id == 1L) {
    int i = 1/0;
}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Spring Cloud Hystrix是一个开源的熔断器框架,它能够帮助开发者有效地处理服务依赖中的延迟和故障。熔断器的主要目的是在出现故障时提供一种优雅的降级机制,以避免整个系统的崩溃。 熔断和降级Hystrix中两个重要的概念。 熔断(Circuit Breaker)指的是在服务出现故障或错误率过高时,自动地切换到指定的备用服务或返回事先定义好的错误结果,起到保护系统免受故障传播的影响的作用。当服务不可用或响应时间过长时,熔断器会打开,拒绝后续请求的访问,并尝试通过执行降级逻辑来快速响应客户端。一旦后续请求不再出现故障,熔断器将会进入半开状态,允许少量的请求通过以检测服务是否恢复正常。 降级(Degradation)指的是在系统资源不足或者高访问量时,服务降级会关闭一些不重要的功能,以保证系统核心功能的可用性和稳定性。降级可以通过阻止非必要的调用、减少资源的消耗以及返回默认值或缓存结果来实现降级需要提前定义好一些备用的逻辑,一旦系统资源紧张,就可以立即启用降级逻辑来保障系统的可用性。 总而言之,熔断和降级都是为了保护系统免受故障的影响。熔断主要是针对服务故障和错误率过高的情况,通过切换到备用服务或返回错误结果来保护系统。降级主要是在系统资源紧张或高访问量的情况下,关闭一些不重要的功能来保证核心功能的可用性和稳定性。两者都是通过提前定义备用逻辑来保障系统的正常运行。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值