首页 慕课教程 Spring Cloud Hystrix Spring Cloud Hystrix Hystrix 服务快速失败概念讲解与实操(二)

Hystrix 服务快速失败概念讲解与实操(二)

1. 前言

在上述小节中,我们对 Hystrix 中基本的服务快速失败做了详细的介绍,通过对上述小节的学习,我们可以对基本的服务快速失败有所了解。Hystrix 还为我们提供了另一种实现方式的服务快速失败机制,那就是断路器版本。

在本节中,我将针对断路器版本的服务快速失败之概念做详细介绍,同时也会对 Hystrix 所提供的熔断思想做进一步的介绍,让我们继续来学习服务快速失败吧。

本节主要内容:

  • 服务快速失败之服务熔断机制;

  • Hystrix 应用熔断思想介绍。

2. 服务快速失败之服务熔断机制

服务熔断机制的服务快速失败所实现的目标,和我们在上述小节中所介绍的普通的服务快速失败所实现的目标相同,都是为了保证,在某一微服务发生故障时,不影响后续微服务的正常运行。

雪崩效应产生原理

在上述小节中,各位同学已经对什么是雪崩效应有所了解,如上图所示,我们所讲的服务熔断也是为了避免和解决雪崩现象的发生,只不过所采用的手段不同而已,那么接下来,就让我们来看一下基于服务熔断机制的服务快速失败的概念是什么吧。

针对服务熔断机制,我们先来介绍什么是熔断?

熔断这一名词,其实不是来源于计算机相关专业,而是来源于电子工程相关专业。熔断的核心是断路器,对于断路器来说,我们可以将断路器理解为一根保险丝,在日常生活中,当我们家庭用电超过负载时,保险丝就会迅速烧断,阻止由于电流过大而烧毁整个家庭电路。

同样地,熔断我们也可以像保险丝那样理解,即在计算机相关领域中,由于中断上游的故障服务,而保全整体的服务的措施就被称为熔断,而实现中断上游的故障服务所采取的核心措施就是我们的断路器。

服务熔断机制就是把这些概念都统一起来,然后封装到 Hystrix 中,且最终应用于我们的微服务项目中间,通过配置断路器,来保全我们整体的微服务项目,这就是 Hystrix 所提供的服务熔断机制。

Tips:
1. 在实际工作中,我们需要灵活的去配置微服务项目中,各个领域的微服务所对应的断路器配置,包括间隔时间、持续时间等关键属性,切记不要凭感觉去配置;
2. Hystrix 本身所提供的服务熔断机制并不是很好用,往往需要我们在项目中集成其他的微服务服务中间件来一起集成使用,单独使用 Hystrix 服务熔断机制的项目很少见。

3. Hystrix 应用熔断思想介绍

要想真正的实现服务熔断机制,我们需要在项目中集成 Open Feign 或其他微服务远程调用组件,来结合 Hystrix 实现,所以,在这里我们只介绍在 Hystrix 中如何简单的使用服务熔断机制,以及其中所包含的使用思想。

在 Hystrix 中使用服务熔断机制

我们还是以 hello 方法为例,首先在项目中启用 Hystrix 。

@SpringBootApplication
@EnableHystrix
public class DemoApplication {

	public static void main(String[] args) {
		SpringApplication.run(DemoApplication.class, args);
	}

}

接着,我们继续在项目启动类中添加启用 Hystrix 断路器的注解:

@SpringBootApplication
@EnableHystrix
@EnableCircuitBreaker
public class DemoApplication {

	public static void main(String[] args) {
		SpringApplication.run(DemoApplication.class, args);
	}

}

代码解释:

第 3 行,我们在启动类上添加了 EnableCircuitBreaker 的注解,表明该项目需要使用 Hystrix 断路器。

在添加完 EnableCircuitBreaker 注解之后,我们就可以使用 HystrixCommand 注解来配置 fallbackMethod 属性了,这样我们就实现了简单地服务熔断机制。

这种采用注解加分离属性配置的思维方式,是 Hystrix 实现服务熔断机制的核心,Hystrix 这种简单实现服务熔断机制的思想,我们可以拿出来应用到我们的实际工作中去,你会发现,其实熔断也就那么回事。

Tips:
1. EnableCircuitBreaker 注解,为 Hystrix 集成 Spring Cloud 的特定注解,且该注解中没有任何属性,如果我们想对 Hystrix 的断路器进行配置,那么我们可以参考官方资料中的配置属性,在项目的 yml 配置文件中进行配置;
2. 如果我们没有在启动类上添加 EnableCircuitBreaker 注解,即使我们配置了 HystrixCommand 注解,那也不能被称为使用了服务熔断机制,只能说明我们实现了服务容错与服务降级,这些概念不要混淆了。

4. 视频演示

5. 小结

本节内容概览

本小节详细介绍了基于服务熔断机制所实现的服务快速失败的概念,从什么是熔断开始,到最后的服务熔断机制简单实现,旨在帮助各位同学可以很清晰地理解 Hystrix 中地服务熔断机制,同时,Hystrix 实现服务熔断机制的这种思想,值得我们去学习和实践。

至此,Hystrix 中的服务快速失败的所有实现方式就已经全部介绍完毕了,服务快速失败作为辅助微服务项目正常运行的手段,在真实项目中必不可少,希望各位同学都能掌握该部分内容。