SpringCloud Hystrix

本文介绍Hystrix在微服务架构中的应用,包括服务熔断、服务降级及服务监控等功能,通过实例展示了如何在Spring Cloud中配置并使用这些功能。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

HyStrix

Hystrix是一个用于处理分布式系统的延迟和容错的开源库,在分布式系统里,许多依赖不可避免的会调用失败,比如超时,异常等,Hystrix能够保证在一个依赖出问题的情况下,不会导致整体服务失败,避免级联故障,以提高分布式的弹性。

1、服务熔断

熔断机制是对应雪崩效应的一种微服务链路保护机制。

当扇出链路的某个微服务不可用或者响应时间太长时,会进行服务的降级,进而熔断该节点微服务的调用,快速返回错误的响应信息。当检测到该节点微服务调用响应正常后恢复调用链路。在SpringCloud框架里熔断机制遇过Hystrix实现。Hystrix会监控微服务间调用的状况,当失败的调用到一定阈值,缺省是5秒内20次调用失败就会启动熔断机制。熔断机制的注解是@HystrixCommand,用于服务端

创建cloud-hystrix-9100项目
在这里插入图片描述
导入依赖pom.xml

        <dependency>
            <groupId>org.springframework.cloud</groupId>
            <artifactId>spring-cloud-starter-hystrix</artifactId>
            <version>1.4.6.RELEASE</version>
        </dependency>

在主启动类加入注解@EnableCircuitBreaker
在这里插入图片描述
添加熔断方法
在这里插入图片描述

    @GetMapping("queryByName/{name}")
    @HystrixCommand(fallbackMethod = "hystrixByName")
    public User queryByName(@PathVariable("name") String name){
        User user = userService.queryByName(name);
        if(user == null){
            throw new RuntimeException();
        }
        return user;
    }
public User hystrixByName(@PathVariable("name") String name){
        return new User().setName(name+"-没有该人员");
    }

测试结果
在这里插入图片描述
在这里插入图片描述
2、服务降级
服务降级,当服务器压力剧增的情况下,根据当前业务情况及流量对一些服务和页面有策略的降级,以此释放服务器资源以保证核心任务的正常运行,用于客户端

在cloud-api项目里创建类实现FallbackFactory

@Component
public class UserHystrixClientFactory implements FallbackFactory {

    @Override
    public UserFeignClient create(Throwable cause) {
        return new UserFeignClient() {
            @Override
            public User queryByName(String name) {
                return new User().setName(name+"没有对应实体,服务降级");
            }
        };
    }
}

在feign客户端调用加fallbackFactor属性值

@FeignClient(value = "PROVIDER-8000",fallbackFactory = UserHystrixClientFactory.class)
public interface UserFeignClient {

    @GetMapping("user/queryByName/{name}")
    public User queryByName(@PathVariable("name") String name);
}

先访问eureka,发现服务有注册进来
在这里插入图片描述
调用服务接口,正常
在这里插入图片描述
关闭服务,测试
在这里插入图片描述
3、服务监控
Hystrix提供了 准实时的服务调用监控项目Dashboard,能够实时记录通过Hystrix发起的请求执行情况,可以通过图表的形式展现给用户看

创建cloud-comsume-hystrix-dashboard项目
在这里插入图片描述
pom.xml加入依赖

		<dependency>
            <groupId>org.springframework.cloud</groupId>
            <artifactId>spring-cloud-starter-hystrix</artifactId>
            <version>1.4.6.RELEASE</version>
        </dependency>
        <dependency>
            <groupId>org.springframework.cloud</groupId>
            <artifactId>spring-cloud-starter-hystrix-dashboard</artifactId>
            <version>1.4.6.RELEASE</version>
        </dependency>

application.yml

server:
  port: 9001

主启动类加监控注解@EnableHystrixDashboard

@SpringBootApplication
@EnableHystrixDashboard //开启监控
public class Dashboard9001 {
    public static void main(String[] args) {
        SpringApplication.run(Dashboard9001.class,args);
    }
}

配置被监控的服务
在这里插入图片描述

 	@Bean
    public ServletRegistrationBean registrationBean(){
        ServletRegistrationBean registrationBean = new ServletRegistrationBean(new HystrixMetricsStreamServlet());
        registrationBean.addUrlMappings("/actuator/hystrix.stream");
        return registrationBean;
    }

访问http://localhost:9001/hystrix在这里插入图片描述
在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值