千家信息网

Spring Cloud 中Hystrix有什么用

发表于:2026-11-02 作者:千家信息网编辑
千家信息网最后更新 2026年11月02日,本篇文章给大家分享的是有关Spring Cloud 中Hystrix有什么用,小编觉得挺实用的,因此分享给大家学习,希望大家阅读完这篇文章后可以有所收获,话不多说,跟着小编一起来看看吧。断路器简介Ne
千家信息网最后更新 2026年11月02日Spring Cloud 中Hystrix有什么用

本篇文章给大家分享的是有关Spring Cloud 中Hystrix有什么用,小编觉得挺实用的,因此分享给大家学习,希望大家阅读完这篇文章后可以有所收获,话不多说,跟着小编一起来看看吧。

断路器简介

Netflix has created a library called Hystrix that implements the circuit breaker pattern. In a microservice architecture it is common to have multiple layers of service calls.

Netflix创建了一个名为Hystrix的库,该库实现了断路器模式。在微服务架构中,通常有多个服务调用层。

较底层的服务如果出现故障,会导致连锁故障。当对特定的服务的调用的不可用达到一个阀值(Hystric 是5秒20次) 断路器将会被打开。

断路打开后,可用避免连锁故障,fallback方法可以直接返回一个固定值。

准备工作

在之前工程的基础上, 启动eureka-server,端口为9090;启动eureka-client, 端口为8040。

在Ribbon中使用断路器

改造rebbon-service工程的代码,首先在pox.xml文件中加入spring-cloud-starter-netflix-hystrix的起步依赖:

    org.springframework.cloud    spring-cloud-starter-netflix-hystrix

在项目启动类上注解@EnableHystrix, 开启断路器能力:

@EnableEurekaClient@SpringBootApplication@EnableHystrixpublic class RibbonServiceApplication {    public static void main(String[] args) {        SpringApplication.run(RibbonServiceApplication.class, args);    }    @Bean    @LoadBalanced    public RestTemplate restTemplate() {        return new RestTemplate();    }}

改造HelloController类, 在hello方法加上@HystrixCommand注解。 该注解给方法低通了熔断器的能力, 指定fallbackMethod熔断方法, 当远程服务调用时候后执行熔断方法:

@RestControllerpublic class HelloController {    private final RestTemplate restTemplate;    @Autowired    public HelloController(RestTemplate restTemplate) {        this.restTemplate = restTemplate;    }    @HystrixCommand(fallbackMethod = "helloError")    @GetMapping("/hello")    public String hello(@RequestParam("name") String name) {        return restTemplate.getForObject("http://HELLO-ERUEKA-CLIENT/hello?name=" + name, String.class);    }    public String helloError(String name) {        return String.format("Hello, %s! Access remote service fail!", name);    }}

启动ribbon-service项目,在浏览器访问 http://localhost:8050/hello?name=Mars:

Hello, My name is Mars, I'm from port: 8040

这时候我们关闭eureka-service项目, 再次访问 http://localhost:8050/hello?name=Mars:

Hello, Mars! Access remote service fail!

这就说明eureka-service服务不可达时, ribbon-service调用接口会快速失败, 直接调用熔断方法, 而不是等待响应超时, 这很好的控制了容器的线程阻塞。

Feign中使用断路器

Feign已经集成了断路器, 基于feign-service项目进行改造, 只需要在@FeignClient注解中加上fallback的指定类就行:

@FeignClient(value = "hello-eureka-client", fallback = FeignServiceHystrix.class)public interface FeignService {    @GetMapping(value = "/hello")    String hello(@RequestParam(value = "name") String name);}

FeignServiceHystrix需要实现FeignService接口,并注入到Ioc容器中:

@Componentpublic class FeignServiceHystrix implements FeignService {    @Override    public String hello(String name) {        return String.format("Hello, %s! Access remote service fail!", name);    }}

先启动eureka-client和eureka-server项目, 然后再启动feign-service项目,在浏览器访问 http://localhost:8080/hello?name=Mars:

Hello, My name is Mars, I'm from port: 8040

这时候我们关闭eureka-service项目, 再次访问 http://localhost:8080/hello?name=Mars:

Hello, Mars! Access remote service fail!

以上就是Spring Cloud 中Hystrix有什么用,小编相信有部分知识点可能是我们日常工作会见到或用到的。希望你能通过这篇文章学到更多知识。更多详情敬请关注行业资讯频道。

断路器 项目 方法 服务 注解 故障 改造 再次 容器 工程 接口 更多 浏览器 知识 端口 篇文章 能力 中加 工作 浏览 数据库的安全要保护哪些东西 数据库安全各自的含义是什么 生产安全数据库录入 数据库的安全性及管理 数据库安全策略包含哪些 海淀数据库安全审计系统 建立农村房屋安全信息数据库 易用的数据库客户端支持安全管理 连接数据库失败ssl安全错误 数据库的锁怎样保障安全 互联网通讯科技 互联网中国科技 上海挚品互联网科技 有木互联网科技 融贸通互联网科技 四个字互联网科技公司取名 科技大学互联网专业好不好 广西拼得多互联网科技有限公司 深圳前海聚择互联网科技有限公司 福州新华互联网科技学校 知乎 崇明区互联网教育科技售后服务 未来五年的互联网科技 互联网科技和信息 健康食品互联网创新科技园项目 银川新华互联网科技学校联系电话 互联网保险科技创业 浙南科技城互联网大厦建设工程 锡山区互联网智能科技产品供应 互联网第三次科技革命特征 银川新华互联网科技学校是国营吗 互联网络科技 互联网的科技创新 广州宏创互联网科技 万达互联网科技 字节跳动和互联网科技 港股科技和互联网 知域互联网科技有限公司大骗子 科技类公司包括互联网吗 南通创西澳互联网科技有限公司 互联网与数字科技关系
0