05 Hystrix

1. 服务熔断和服务降级

​ 服务雪崩:在微服务架构中服务之间会相互调用和依赖,如果某个服务发生故障,可能会导致多个服务故障,从而导致整个系统故障

​ 解决服务雪崩的方式:

  • 服务熔断

    当服务出现不可用或响应超时时,为了防止整个系统出现雪崩, 暂时停止对该服务的调用,直接返回一个结果,快速释放资源。

    如果检测到目标服务情况好转,则恢复对目标服务的调用。

  • 服务降级

    为了防止核心业务功能出现负荷过载或者响应慢的问题,将非核心服务进行降级,暂时性的关闭或延迟使用,保证核心服务的正常运行

2. 简介

​ Hystrix就是用来实现服务熔断的,其实就是一种机制,当某个服务不可用时,可以阻断故障的传播,称为断路器或熔断器

  • Hystrix负责监控服务之间的调用情况,当出现连续多次调用失败的情况时会进行熔断保护
  • 该服务的断路器就会打开,直接返回一个由开发者设置的fallback(退路)信息
  • Hystrix会定期再次检查故障的服务,如果故障服务恢复,将继续使用服务

3. 用法

​ 断路器是安装在服务消费者上的,我们需要做的是在服务消费者上开启断路器并配置。

​ 在Feign中使用Hystrix是非常简单的,已经包含了整合Hystrix的依赖

​ 步骤:

  1. 编辑application.yml文件,启用断路器

    # 启用断路器
    feign:
      hystrix:
        enabled: true
    
  2. 设置fallback信息

    在@FeignClient注解中指定fallback参数

    // 调用的服务名,到Eureka中寻找对应的微服务,找到的是:微服务的ip:port
    @FeignClient(value = "user-provider",fallback = UserServiceFallback.class)
    public interface UserService {
    

    创建UserService接口的实现类,并配置返回的信息

@Service
public class UserServiceFallback implements UserService {
    @Override
    public ResponeResult userList() {
        return ResponeResult.createServerErrorResult();
    }

    @Override
    public ResponeResult user(Integer id) {
        return ResponeResult.createServerErrorResult();
    }

    @Override
    public ResponeResult addForm(User user) {
        return ResponeResult.createServerErrorResult();
    }

    @Override
    public ResponeResult addJson(User user) {
        return ResponeResult.createServerErrorResult();
    }

    @Override
    public ResponeResult delete(Integer id) {
        return ResponeResult.createServerErrorResult();
    }

    @Override
    public ResponeResult update(User user) {
        return ResponeResult.createServerErrorResult();
    }
}
  1. 测试
    当服务提供者不可用或出现异常时,会暂时停止对该服务的调用。修改生产者获取列表接口的实现,使它报出异常。
@GetMapping("/{id}")
public ResponeResult user(@PathVariable("id")Integer id){
    int a = 1/0;
    return ResponeResult.createSuccessResult(userMap.get(id));
}

调用消费者接口访问生产者接口,经过断点调试,会 发现接口最终访问UserServiceFallback 中的实现,并输出。

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值