Spring Cloud 系列之 Netflix Hystrix 服务容错 (2)

Apache JMeter 应用程序是开源软件,100% 纯 Java 应用而设计的负载测试功能行为和测量性能。它最初是为测试 Web 应用程序而设计的,但此后已扩展到其他测试功能。

Apache JMeter 可用于测试静态和动态资源,Web 动态应用程序的性能。它可用于模拟服务器,服务器组,网络或对象上的繁重负载,以测试其强度或分析不同负载类型下的整体性能。

安装

官网:https://jmeter.apache.org/ 本文安装 Windows 版本。

Spring Cloud 系列之 Netflix Hystrix 服务容错

Spring Cloud 系列之 Netflix Hystrix 服务容错

解压 apache-jmeter-5.2.1.zip,进入 bin 目录运行 jmeter.bat 即可。不过运行之前我们先来修改一下配置文件,方便大家更友好的使用。

修改配置

进入 bin 目录编辑 jmeter.properties 文件,修改 37 行和 1085 行两处代码(不同的电脑可能行数不一致,不过上下差距不大)。

language=zh_CN 界面显示中文

sampleresult.default.encoding=UTF-8 编码字符集使用 UTF-8

#language=en language=zh_CN #sampleresult.default.encoding=ISO-8859-1 sampleresult.default.encoding=UTF-8 运行

运行 bin/jmeter.bat 文件,界面显示如下。

Spring Cloud 系列之 Netflix Hystrix 服务容错

大家可以通过 选项 → 外观 选择自己喜欢的界面风格。

Spring Cloud 系列之 Netflix Hystrix 服务容错

基本使用 添加线程组

Spring Cloud 系列之 Netflix Hystrix 服务容错

Spring Cloud 系列之 Netflix Hystrix 服务容错

添加 HTTP 请求

Spring Cloud 系列之 Netflix Hystrix 服务容错

HTTP 请求配置为服务消费者的 :9090/order/1/product/list

Spring Cloud 系列之 Netflix Hystrix 服务容错

添加结果数

我们可以添加结果数来查看请求响应的结果数据。

Spring Cloud 系列之 Netflix Hystrix 服务容错

下图是执行请求以后所显示的效果。

Spring Cloud 系列之 Netflix Hystrix 服务容错

执行请求

如下图所示,点击启动按钮即可开始执行请求。STOP 按钮则为停止请求。

Spring Cloud 系列之 Netflix Hystrix 服务容错

Spring Cloud 系列之 Netflix Hystrix 服务容错

测试请求

浏览器请求 :9090/order/1/product 统计耗时如下。请求耗时:235ms

Spring Cloud 系列之 Netflix Hystrix 服务容错

通过 JMeter 开启 50 线程循环 50 次请求服务消费者 :9090/order/1/product/list 然后浏览器再次请求 :9090/order/1/product 统计耗时如下。请求耗时:9.12s

Spring Cloud 系列之 Netflix Hystrix 服务容错

通过以上测试我们可以发现,/product/list 服务如果出现故障或延迟整个系统的资源会被耗尽从而导致影响其他服务的正常使用,这种情况在微服务项目中是非常常见的,所以我们需要对服务做出容错处理。接下来我们就一个个学习服务容错的解决方案。

请求缓存

Hystrix 为了降低访问服务的频率,支持将一个请求与返回结果做缓存处理。如果再次请求的 URL 没有变化,那么 Hystrix 不会请求服务,而是直接从缓存中将结果返回。这样可以大大降低访问服务的压力。

安装 Redis

Hystrix 自带缓存有两个缺点:

本地缓存,集群情况下缓存无法同步。

不支持第三方缓存容器,如:Redis,MemCache。

本文使用 Spring 的缓存集成方案,NoSql 使用 Redis 来实现,Redis 使用的是 5.0.7 版本。

添加依赖

内容版权声明:除非注明,否则皆为本站原创文章。

转载注明出处:https://www.heiqu.com/zyfwzj.html