我是靠谱客的博主 勤恳铃铛,最近开发中收集的这篇文章主要介绍微服务feignclient_17,微服务熔断器Hystrix,防雪崩利器,觉得挺不错的,现在分享给大家,希望可以做个参考。

概述

1,什么是服务雪崩?

在微服务架构中,根据业务来拆分成一个个的服务,服务与服务之间可以相互调用。
为了保证其高可用,单个服务通常会集群部署。
由于网络原因或者自身的原因,服务并不能保证100%可用,
如果单个服务出现问题,调用这个服务就会出现线程阻塞,
此时若有大量的请求涌入,容器的线程资源会被消耗完毕,导致服务瘫痪。
服务与服务之间的依赖性,故障会传播,会对整个微服务系统造成灾难性的严重后果,
这就是服务故障的“雪崩”效应。
为了解决这个问题,业界提出了断路器模型。

2,什么是Hystrix?

Hystrix是由Netflix开源的一个延迟和容错库,Hystrix主要通过以下几点实现延迟和容错。

【1】包裹请求:使用HystrixCommand包裹对依赖的调用逻辑,每个命令在独立线程中执行。这使用了设计模式中的“命令模式”。

【2】跳闸机制:当某服务的错误率超过一定的阈值时,Hystrix可以自动或手动跳闸,停止请求该服务一段时间。

【3】资源隔离:Hystrix为每个依赖都维护了一个独立的线程池(或者信号量)。如果该线程池已满, 发往该依赖的请求就被立即拒绝,而不是排队等待,从而加速失败判定。

【4】监控:Hystrix可以近乎实时地监控运行指标和配置的变化,例如成功、失败、超时、以及被拒绝的请求等。

【5】回退机制:当请求失败、超时、被拒绝,或当断路器被打开时,会自动执行回退逻辑。回退逻辑由开发人员自行提供,例如返回一个缺省值。

【6】自我修复:断路器打开一段时间后,会自动进入“半开”状态。

3,工作模式概览图

8f260376163e52091defa7b34e400a65.png

4,Feign模式如何实现熔断机制?

1,引入hystrix熔断器依赖

<dependency>
   <groupId>org.springframework.cloud</groupId>
   <artifactId>spring-cloud-starter-netflix-hystrix</artifactId>
</dependency>

2,为启动类,添加注解@EnableCircuitBreaker

3,常用的方式,我们会结合FeignClient来配置熔断

feign:
  hystrix:
    enabled: true

4,编码实现熔断处理逻辑,其实就是一种降级处理

@FeignClient(name = "PRODUCT-SERVICE",fallback = ProductService.ProductServiceFallback.class)
public interface IProductService {
​
    //这个主要跟通过 @GetMapping来进行匹配的
    @GetMapping("product/list")
    public List<Product> list();
​
    @Component
    static class ProductServiceFallback implements ProductService{
​
        @Override
        public List<Product> list() {
            System.out.println("进入Hystrix熔断处理逻辑...");
            return new ArrayList<>();
        }
    }
}

5,默认是1秒时间,没有收到服务端的反馈,就认为超时了,进入熔断处理逻辑

5,总结梳理

1,隔离,Hystrix会创建多个线程池,每个线程池仅仅服务于某个服务的调用,
这样就将多个服务的调用隔离开来,避免相互的影响
​
2,熔断,为了避免所有线程卡死,熔断就是让服务不要傻等,减少线程卡死的情况
​
3,降级,熔断之后,正常的业务服务没有正常调用,所以需要有一个补偿处理机制,
比如记录日志信息,然后后续人工跟进恢复数据,这就是降级

最后

以上就是勤恳铃铛为你收集整理的微服务feignclient_17,微服务熔断器Hystrix,防雪崩利器的全部内容,希望文章能够帮你解决微服务feignclient_17,微服务熔断器Hystrix,防雪崩利器所遇到的程序开发问题。

如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(60)

评论列表共有 0 条评论

立即
投稿
返回
顶部