Hystrix 简介

Hystrix 官网介绍:防御你的APP

大家好,今天我们开始一个新专题 — Hystrix。关于 Hystrix ,想必使用过 Spring Cloud 框架的同学都有所耳闻,它的知识点相对来说还是比较庞大的,如果单靠本专题是介绍不完的。

本专题我们重点讲解针对 Hystrix 在基于 Spring Cloud 框架中的基本概念和基本用法,在介绍完基本使用之后,会带领大家从 0 到 1 的来搭建一款基于 Spring Cloud 框架的微服务 Demo 项目。

本文我们主要先介绍一下 Hystrix 是什么?有哪些特性?优缺点在哪?为什么我们需要在项目开发中应用 Hystrix ?

1. 什么是 Hystrix ?

什么是 Hystrix 呢?在 Hystrix 官网中是这么介绍的:

对于分布式系统的延迟和容错. —官网

上述定义是官网的抽象描述,同学们可能不太理解,下面我对定义进行一些必要的解释。

通俗来讲,我们可以这样理解:Hystrix 是针对与分布式系统中所产生的延迟问题和容错问题的一种解决方案,也就是说,Hystrix 就是为了解决在分布式系统中出现的系统间延迟问题,以及服务间容错问题所诞生的一款微服务组件。

2. 为什么要使用 Hystrix

那么我们为什么要使用 Hystrix 呢?

2.1 配置简单,容易上手

由于 Hystrix 是 Spring Cloud 框架中的一款组件,又因为 Spring Cloud 框架的运行是依赖于 Spring Boot 框架,所以,我们在使用 Hystrix 时,只需要将 Hystrix 的依赖交给 Spring 去管理就好了,我们只需要将 Hystrix 的依赖引入到项目中去即可。

在将 Hystrix 依赖引入到项目中后,由于 Spring Boot 框架的特性,我们不需要进行繁琐的 xml 文件的配置,只需要将和 Hystrix 相关的配置项以一个配置类的形式,或直接将其配置到配置源文件中去即可。

2.2 功能强大,持久稳定

Hystrix 针对与分布式系统,其提供了服务容错、服务降级、服务反馈、服务快速失败,快速恢复、延迟降低、服务实时监控等功能,经过近 6 年的发展,Hystrix 已经形成了较为稳定的生态社区以及服务支撑,目的就是为了保证我们的分布式系统能够安全平稳的运行。

总结:

Hystrix 其实就是为了解决在分布式系统中出现的延迟问题、服务间问题而来的一款微服务组件,其依赖于 Spring Cloud 框架,通过提供一系列保障措施,来保证我们的分布式系统可以安全平稳的运行。

3. Hystrix 的版本说明

Hystrix 从 2012 年诞生,到现在已经有 8 个年头了,其中,持续发展了 6 年,在这中间已经迭代升级了很多版本,目前,最新的版本是 v1.5.18,每个版本都有不同的特性,下面介绍一个主要使用的版本和新版本的特性。

  • V1.0.0 - 1.2.X:自 Hystrix 诞生而演变的阶段版本,也可以称为最初发布版本,现在基本已经很少使用了;

  • V1.3.X - 1.4.X: 目前使用较多的版本,也是基本稳定的版本;

  • V1.5.X: 目前发布的最新版本,于 2018 年 9 月 17 日发布,主要是优化了 Hystrix 之前版本中不稳定的因素,以及其中的一些 Bug 项,最新版本较之前发布的版本更好用、更稳定、配置更灵活。

Tips: 鉴于此,本套课程采用 V1.5.12 版本进行讲解,请同学们务必和老师所使用的版本保持一致,以避免后续因为版本而引起的不必要的问题,以及一些兼容性问题。

4. Hystrix 的优点

  • 配置灵活 : 支持通过配置类、yml 配置源文件的形式来对 Hystrix 进行配置。

  • 功能强大 : 提供了丰富的保障措施,例如,服务降级、服务容错等,很大力度上保证了我们的分布式项目的平稳运行。

5. Hystrix 的缺点

  • 有一定的不稳定性 : 经过长时间的使用可以得出,Hystrix 有时会出现丢数据、节点宕机问题,但这不是经常发生的。

  • 可能会有意料之外的 Bug : 一般而言,Hystrix 就是对分布式微服务进行管理,所以一般不会出现由 Hystrix 管理的节点所宕机的情况,但是这个问题也有一定频率出现。

6. 学习基础

  1. 学习本门课程,首先需要对 Java 的 Spring Boot 框架有较为熟练的使用经验,以及对 Spring Cloud 框架有初步的了解和基本认知;

  2. 对 Spring Cloud 框架感兴趣以及对 Spring Cloud 生态体系中各组件,比如:Hystrix 感兴趣的同学。

7. 总结

本节内容概览

本小节详细介绍了 Hystrix 这一微服务辅助工具,从 Hystrix 的定义开始,到 Hystrix 不同版本间特性差异的阐述,再到最后 Hystrix 的优缺点总结对比。

希望没有接触过 Hystrix 的同学,通过对本节内容的学习可以简单了解什么是 Hystrix ,以及它能为我们做哪些事情,本篇是整套课程的开端,希望各位同学能够持续关注,谢谢。