Springcloud的组件之Hystrix

本文介绍了SpringCloud Hystrix组件在微服务架构中的作用,详细阐述了服务雪崩、服务熔断和降级的概念,并提供了Hystrix的实现原理与实践方法,包括断路器的打开条件、熔断和降级的触发及恢复过程,旨在增强系统稳定性和容错性。
摘要由CSDN通过智能技术生成
springcloud是什么?

基于springboot的框架集合 利用了springboot的便利性,(自动配置)整合其他的流行分布式框架,提供一些注解,和起步依赖,就能实现使用。解决我们在分布式系统中开发的问题。

微服务架构

根据功能点 进行拆分成独立的微服务,独立的运行对外提供服务。微服务架构。

系统通信

使用RestTemplate来实现(基于http)

springcloud eureka

就是一个注册中心。实现服务的注册与管理,负载均衡,状态的统一管理。

springcloud Ribbon

实现系统负载均衡的中间件(组件—》jar)

Hystrix组件的使用

在这里插入图片描述
0.说明

在分布式环境中,许多服务依赖项不可避免地会失败。Hystrix是一个库,它通过添加延迟容忍和容错逻辑来帮助您控制这些分布式服务之间的交互。Hystrix通过隔离服务之间的访问点、停止它们之间的级联故障以及提供后备选项来实现这一点,所有这些都可以提高系统的整体弹性。

通俗定义: Hystrix是一个用于处理分布式系统的延迟和容错的开源库,在分布式系统中,许多依赖不可避免的会调用失败,超时、异常等,Hystrix能够保证在一个依赖出问题的情况下,不会导致整体服务失败,避免级联故障(服务雪崩现象),提高分布式系统的弹性。 一句话:是一个开源的 容错库 目的为了防止雪崩效应,防止产生级联失败。

服务雪崩

1.服务雪崩

在微服务之间进行服务调用是由于某一个服务故障,导致级联服务故障的现象,称为雪崩效应。雪崩效应描述的是提供方不可用,导致消费方不可用并将不可用逐渐放大的过程。

2.图解雪崩效应
在这里插入图片描述

而此时,Service A的流量波动很大,流量经常会突然性增加!那么在这种情况下,就算Service A能扛得住请求,Service B和Service C未必能扛得住这突发的请求。此时,如果Service C因为抗不住请求,变得不可用。那么Service B的请求也会阻塞,慢慢耗尽Service B的线程资源,Service B就会变得不可用。紧接着,Service A也会不可用,这一过程如下图所示
在这里插入图片描述

服务熔断

"熔断器"本身是一种开关装置,当某个服务单元发生故障之后,通过断路器的故障监控,某个异常条件被触发,直接熔断整个服务。向调用方法返回一个符合预期的、可处理的备选响应(FallBack),而不是长时间等待或者抛出调用方法无法处理的异常,就保证了服务调用方的线程不会长时间占用,避免故障在分布式系统中蔓延,乃至雪崩。如果目标服务情况好转则恢复调用。服务熔断是解决服务雪崩的重要手段。

服务熔断图示
在这里插入图片描述

服务降级

服务降级说明

服务压力剧增的时候根据当前的业务情况及流量对一些服务和页面有策略的降级,以此缓解服务器的压力,以保证核心任务的进行。同时保证部分甚至大部分任务客户能得到正确的相应。也就是当前的请求处理不了了或者出错了,给一个默认的返回(fallback)。

通俗的说:关闭系统中边缘服务 保证系统核心服务的正常运行 称之为服务降级

//12 淘宝 删除地址 确认收货 删除订单 取消支付 节省cpu 内存
//比如双11为了保证核心服务的运行,关闭边缘服务,删地址,删订单等等,直接返回fallback。对整个系统进行保护节省cpu 内存

服务降级图示
在这里插入图片描述

降级和熔断总结

1、共同点

  • 目的一致,都是从系统的可用性可靠性着想,为防止系统整体缓慢甚至崩溃,采用的技术手段;
  • 最终表现类似,对于两者来说,最终让用户体验到的是某些功能暂时不可达或不可用;
  • 粒度一般都是服务级别,当然,业界也有不少更细粒度的做法,比如做到数据持久层(允许查询,不允许增删改);
  • 自治性要求高,熔断模式一般都是服务基于策略的自动触发,降级虽说可人工干预,但在微服务架构下,完全靠人显然不可能,开关预置、配置中心都是必要手段;

2、异同点

  • 触发原因不太一样,服务熔断一般是某个服务(下游服务)故障引起,而服务降级一般是从整体负荷考虑;</
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值