Spring Cloud核心组件之 Hystrix

我们在实现服务间认识调用后,面临的又一个问题是当服务间存在传递依赖时,传递调用过程中某个服务不可用时引发的雪崩效应,雪崩效应是一种因‘服务提供者’的不可用导致的‘服务的消费者’不可用,并将不可用逐渐放大的过程。这个应当解决掉,解决的办法就是哪个服务不可用就将之从传递线上剔除出去。这里使用 Spring Cloud核心组件熔断器(Hystrix) 。

Hystrix 理解

*Hystrix中文意思是豪猪,因其背上长满了刺而拥有自我保护能力。*能够在系统出现依赖服务失效的时候,通过隔离系统所依赖的服务,防止服务级联失败,同时提供失败回退机制更优雅应对失效,从系统更快的从异常中恢复。

Hystrix是隔离熔断以及降级的一个框架,Hystrix会搞很多个小小的线程池,比如订单服务请求库存服务是一个线程池,请求仓储服务是一个线程池,请求积分服务是一个线程池。每个线程池里的线程就仅仅用于请求那个服务。

当积分服务挂掉,会导致订单服务里的用来调用积分服务的线程都卡死不能工作!但是由于订单服务调用库存服务、仓储服务的这两个线程池都是正常工作的,所以这两个服务不会受到任何影响。

此时如果别人请求订单服务,订单服务还是可以正常调用库存服务扣减库存,调用仓储服务通知发货。只不过调用积分服务的时候,每次都会报错。但是如果积分服务都挂了,每次调用都要去卡住几秒钟干啥呢?有意义吗?当然没有!所以我们直接对积分服务熔断不就得了,比如在5分钟内请求积分服务直接就返回了,不要去走网络请求卡住几秒钟,这个过程,就是所谓的熔断!

积分服务挂了就熔断,熔断后需要做些什么呢,不能什么都不干就直接返回吧?这个地方可以来个降级:每次调用积分服务,就在数据库里记录一条消息,说给某某用户增加了多少积分,因为积分服务挂了,导致没增加成功!这样等积分服务恢复了,可以根据这些记录手工加一下积分。这个过程,就是所谓的降级。
在这里插入图片描述

服务降级处理

需要在调用的微服务中,动态代理生成的接口处定义一个该接口的实现类,在@FeignClien 里添加fallback
@FeignClient(value=“cnooc-base”,fallback = LabelClientImpl.class)
在这里插入图片描述
熔断机制需要在配置文件中配置:

feign:
  hystrix:
    enabled: true
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值