服务容错保护库Hystrix

一、什么是Hystrix

熔断机制是解决微服务架构中因等待出现故障的依赖方响应而形成任务挤压,最终导致自身服务瘫痪的一种机制,它的功能类似电路的保险丝,其目的是为了阻断故障,从而保护系统稳定性。Hystrix作为Spring Cloud中实现了熔断机制的组件,具有服务容错保护功能。

在分布式系统中,服务与服务之间的依赖错综复杂,某些服务会出现故障,导致依赖于它们的其他服务出现远程调度的线程阻塞。

Hystrix 是 Netflix 公司开源的一个项目,它提供了熔断器的功能,能够阻止分布式系统中出现的联动故障。

Hystrix 是通过隔离服务的访问点阻止联动故障的,并提供了故障的解决方案,从而提高了整个分布式系统的弹性。

二、Hystrix简介

在微服务架构中,服务与服务之间通过远程调用的方式进行通信,一旦某个被调用的服务发生了故障,其依赖服务也会发生故障,此时就会发生故障的蔓延,最终导致系统瘫痪。

Hystrix实现了断路器模式,当某个服务发生故障时,通过断路器的监控,给调用方返回一个错误响应,而不是长时间的等待,这样就不会使得调用方由于长时间得不到响应而占用线程,从而防止故障的蔓延。

Hystrix具备服务降级、服务熔断、线程隔离、请求缓存、请求合并及服务监控等强大功能。

三、Hystrix的设计原则

(1)防止任何单独的依赖耗尽资源(线程),过载立即切断并快速失败,防止排队。
(2)尽可能提供回退以保护用户免受故障。
(3)使用隔离技术(例如隔板、泳道和断路器模式)来限制任何一个依赖的影响。
(4)通过近实时的指标,监控和告警,确保故障被及时发现。
(5)通过动态修改配置属性,确保故障及时回复。
(6)防止整个依赖客户端执行失败,而不仅仅是网络通信。

四、Hystrix的工作原理

(1)使用命令模式将所有对外部服务(或依赖关系)的调用包装在HystrixCommand或HystrixObservableCommand对象中,并将该对象放在单独的线程中执行。
(2)每个依赖都维护着一个线程池(或信号量),线程池被耗尽则拒绝请求(而不是让请求排队)。
(3)记录请求成功,失败,超时和线程拒绝。
(4)服务错误百分比超过了阈值,熔断器开关自动打开,一段时间内停止对该服务的所有请求。
(5)请求失败,被拒绝,超时或熔断时执行降级逻辑。
(6)近实时地监控指标和配置的修改。

五、搭建服务容错保护库Hystrix

1.搭建Eureka Server
使用之前已经搭建好的server端并启动
在这里插入图片描述
2.创建服务提供者
在服务提供者中eureka-provider中创建controller包,controller包下定义controller类(eureka-provider->controller包->controller类)(改进后)
在这里插入图片描述
3.创建Feign
(1)使用Spring Intializr方式创建一个名称为eureka-feign-client的Spring Boot项目,添加eureka Client、web和feign依赖(feign依赖包含在client依赖中)
(2)修改配置文件(改进后)
在这里插入图片描述
(3) 在项目启动类EurekaFeginClientApplication上添加@EnableEurekaClient注解,开启EurekaClient功能,添加EurekaFeignClient注解,开启FeignClient功能
在这里插入图片描述
(4)在eureka-feign-client中创建service包,并创建接口FeignService(改进后)
在这里插入图片描述
4.参数绑定
(1)改造服务提供者
在这里插入图片描述
(2)新增三个不同类型的hello()方法
在这里插入图片描述
(3)在eureka-feign-client 中创建entity包并创建实体类
在这里插入图片描述
(4)在FeignServer中新增加接口的绑定声明。
在这里插入图片描述
(5)在FeignController中新增HelloUser()方法,处理 /helloUser请求
在这里插入图片描述
5.启动并测试
在这里插入图片描述

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值