Spring Cloud 集成 Hystrix

1. 前言

本节会为大家介绍,如何基于 Spring Cloud 框架集成 Hystrix 微服务组件。Spring Cloud 框架集成 Hystrix 微服务组件,是学习 Hystrix 基础中的基础,也是本门课程的开端,所以,希望各位同学都能掌握本节内容。

本节主要内容:

  • Spring Cloud 集成 Hystrix 主流方法介绍;

  • 集成成功与否的必要性测试。

希望同学们可以完全掌握本节内容。

2. Spring Cloud 集成 Hystrix 主流方法介绍

对于 Hystrix 微服务组件的集成,不同的微服务管理框架有着不同的集成方式,由于本套课程是采用 Spring Cloud 框架,所以我们就来看看针对与 Spring Cloud 框架,是如何集成 Hystrix 的。

下面我将对不同的集成实现方式做详细介绍,各位同学可以选择自己的方式进行集成,同时也希望各位同学体会其中的差异,以及适用的业务场景。

第一种方式 通过 Spring Cloud 官网实现

此种实现方式是一种“大而全”的实现方式,也就是说,通过此种方式进行的集成操作,会将所有辅助的依赖一次性集成。

第一步: 打开 Spring Cloud 的官网,并在官网中找到 Spring Quick Start 界面,出于方便考虑,我在这里直接给出地址,如下所示。

打开之后的界面,如下图所示:

Spring Quickstart 指引

在该界面中可以看到 Step 1 的标题,在该标题下放的第一句中,有个蓝色的网址,这个地址就是我们需要的集成界面,打开之后如下图所示:

初始化 Spring 项目

第二步: 配置 Hystrix 等其他依赖项。

在打开上述 spring initializr 界面之后,我们就可以在该界面上进行所需依赖项的配置就行了。

首先,我们需要对项目的基本信息进行配置:选择我们所使用的项目包管理工具,这里我们选择 Maven ,语言选择 Java ,Spring Boot 版本,出于稳定考虑,这里选择 2.1.16 版本。

最后,我们需要配置项目所使用的依赖包,在界面右侧的 Dependencies 区域,可以看到一个 ADD DEPENDENCIES 按钮,如下图红框处所示。

集成 Spring 项目依赖

我们点击即 ADD DEPENDENCIES 按钮,会出现一个选择依赖的弹框,我们可以在弹出界面上选择所需的依赖,这里我们选择 Hystrix ,如下图所示。

选择 Hystrix 依赖

Tips: 这里我们需要选择 Netflix 的 Hystrix 依赖,不要选错了。

在上述操作完成之后,我们就完成了 Hystrix 依赖的配置,配置完毕后,上述 spring initializr 界面如下图所示。

确认 Hystrix 依赖

第三步: 打包生成项目包文件

在我们完成 Hystrix 的依赖项配置之后,我们就可以从 Spring 官网将我们配置好的项目包下载下来使用了,我们只需要点击 spring initializr 界面下方的 generate 按钮,即可打包下载我们配置好的项目包,如下图所示。

打包项目

点击 generate 之后,我们只需要等待项目包下载完成即可使用了。

在项目包下载完成之后,我们需要将下载好的项目包导入到我们的本地环境。首先我们需要解压该项目包,在解压完成后,会得到如下图所示的项目结构。

项目文件结构

接着,我们使用自己的 IDE ,将项目包进行导入(以 IDEA 为例):

打开 IDEA ,找到 File 菜单栏,并选择 open , 如下图所示:

使用 IDEA 打开项目

在 open 弹出菜单中,选择我们项目包所在位置,并且选中 pom 文件,如下图所示:

项目目录选择

接着,在弹出的提示框中,选择 open as project , 如下图所示:

加载项目

最后,等待 IDEA 将项目包编译完成即可运行项目。

第二种方式 通过 Maven 包管理工具实现

通过 Maven 包管理工具实现的方法和第一种实现方式非常类似,我们需要将 Hystrix 工具对应的 Maven 坐标依赖复制到项目的 pom 文件中去就可以了。

Tips: 上述实现方式与本实现方式最大的区别在于:此种实现方式需要手动搜索 Hystrix 的依赖项,并手动导入;而上述实现方式不需要手动搜索依赖项,只需要通过手动配置即可,这一点需要同学们注意。

我们来看一下上述实现方式中所对应的 Maven 依赖:

<!-- Hystrix -->
<dependency>
	<groupId>org.springframework.cloud</groupId>
	<artifactId>spring-cloud-starter-netflix-hystrix</artifactId>
</dependency>

<!-- Hystrix-Dashboard -->
<dependency>
	<groupId>org.springframework.cloud</groupId>
	<artifactId>spring-cloud-starter-netflix-hystrix-dashboard</artifactId>
</dependency>

我们只需要将上述 Maven 依赖坐标复制到项目的 pom 文件中去即可。

Tips: 第一种方式适合接触过 Spring Boot 框架,但是没有接触过 Spring Cloud 框架的同学;第二种方式适合两种框架都接触过,但是没有使用过 Hystrix 工具的同学。

3. 集成成功与否的必要性测试

无论使用上述哪种方式,实现的效果都是一样的。在配置好之后,我们需要启动刚刚配置的项目,来检测我们的配置是否成功了。

单独的引入 Hystrix 依赖,我们是无法检测是否配置成功的,所以我们又引入了 Hystrix-Dashboard 微服务监控依赖,我们可以通过访问 Hystrix-Dashboard 微服务监控平台来检测 Hystrix 是否配置成功。

Hystrix 集成成功演示-Hystrix Dashboard

如果我们的 Hystrix 是配置成功的话,那么,可以通过输入应用实例地址加端口,且最后以 /hystrix 形式结尾的链接,即可看到我们的 Hystrix Dashboard 监控面板。

就我本机而言,我的应用访问地址是 http://localhost:8093/prefix/hystrix ,每个人的访问地址可能都不一样。

Tips: 我们可以查看项目的配置文件,来获取项目的 ip 地址、端口号信息,ip 地址 + 端口号就组成了项目地址,在项目地址最后,添加 /hystrix 后缀,即可访问 Hystrix Dashboard 监控面板。

如果当我们的项目运行之后,可以看到 Hystrix Dashboard 监控面板,就说明我们的 Hystrix 已经成功集成到了 Spring Cloud 框架中去,我们就可以愉快的来使用 Hystrix 了。

4. 小结

本节内容概览

本小节通过图文并茂的方式,为大家介绍了如何将 Hystrix 工具集成到 Spring Cloud 框架中去,通过介绍两种不同的实现方式,希望同学们能体会其中的区别,并根据自己实际情况选择合适的方法来实现。

本小节是本套课程的开端,是学习本套 Hystrix 课程的基础,如果同学们不能掌握本节的内容,那么后续 Hystrix 的学习都不能继续,所以,请各位同学务必掌握本节内容。