Hystrix服务容错

什么是Hystrix

    Hystrix 源自 Netflix 团队于 2011 年开始研发。2012年 Hystrix 不断发展和成熟,Netflix 内部的许多团队都采用了它。如今,每天在 Netflix 上通过 Hystrix 执行数百亿个线程隔离和数千亿个信号量隔离的调用。极大地提高了系统的稳定性。

  在分布式环境中,不可避免地会有许多服务依赖项中的某些服务失败而导致雪崩效应。Hystrix 是一个库,可通过添加等待时间容限和容错逻辑来帮助您控制这些分布式服务之间的交互。Hystrix 通过隔离服务之间的访问点,停止服务之间的级联故障并提供后备选项来实现此目的,所有这些都可以提高系统的整体稳定性。

雪崩效应:

在微服务架构中,一个请求需要调用多个服务是非常常见的。如客户端访问 A 服务,而 A 服务需要调用 B 服务,B 服务需要调用 C 服务,由于网络原因或者自身的原因,如果 B 服务或者 C 服务不能及时响应,A 服务将处于阻塞状态,直到 B 服务 C 服务响应。此时若有大量的请求涌入,容器的线程资源会被消耗完毕,导致服务瘫痪。服务与服务之间的依赖性,故障会传播,造成连锁反应,会对整个微服务系统造成灾难性的严重后果,这就是服务故障的“雪崩”效应。

发起的原因:

    1.服务提供者不可用(硬件故障,程序bug,缓存击穿,用户的大量请求等)

    2.重试加大流量(用户重试刷新,代码逻辑重试)

    3.服务消费者不可用(同步等待造成的资源耗尽)

最终的结果就是:一个服务不可用,导致的一系列服务不可用。

解决方案:

    1.请求缓存:就是支持将一个请求(还有其中的地址URL)与它的返回结果存入缓存,当下次在查询的时候,我们因为储存了请求,就可以根据请求直接返回结果,这就无需再浪费资源了。

    2.请求合并:就是我们将相同的请求进行合并吗,然后调用批处理接口。我的理解就是车站排队,去同一个地方的在一个站口上车,而不合并就是一个大大的站口,势必会造成拥挤,也浪费人力资源来进行维护。

    3.服务隔离:限制调用分布式服务的资源,某一个调用的服务出现问题不会影响其他服务调用;

这里的服务隔离分为线程池隔离和信息量隔离:

线程池隔离:就是一条服务开启一条线程,每个线程之间互不相关,就算有个出错了也无需影响到整个进程。

信息量隔离:每次调用线程,当前请求通过计数信号量进行限制,当信号量大于最大请求数时,进行限制,后面的请求全部调用fallback接口快速返回。(后面的都不要了)

4.服务熔断:一般是指软件系统中,犹豫某些因素是的服务出现了过载现象,为防止整个系统故障,从而采用的一种保护措施。,也被称为过载保护(感觉和电路的短路蛮像的,出问题了,那条线断开,过一会再开)

5.服务降级:只要出问题就直接托底处理。

安装JMeter

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

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

安装:在https://jmeter.apache.org/官网中安装windows版本:

解压一个apache-jmeter-5.3.zip,进入其中的bin目录下,登入cmd控制台,输入命令:

jmeter.bat

但是在此之前我们还需要修改一些配置才能使用这个软件: 在bin中,打开jmter.properties文件,修改两处代码,可以通过编辑->查找,快速锁定。

我们修改完这两处就可以了,第一个更改编码机为UTF-8,第二个修改完把英文改为中文。

现在我们就可以进入控制台使用了。

 

 这样就可以了。点击上方的那个开始按钮就可以使用了。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值