Feign-Ribbo-Hystrix三者的关系是什么

在微服务架构的应用中, Feign、Hystrix,Ribbon三者都是必不可少的,可以说已经成为铁三角。 

Feign

在Spring Cloud微服务中用于实现微服务之间的声明式调用

Spring Cloud为Feign添加了Spring MVC的注解支持,并整合了RibbonEureka来为使用Feign时提供负载均衡

Ribbon

Ribbon是一个客户端负载均衡器.Ribbon在Spring Cloud中对于支持微服之间的通信发挥着非常关键的作用,其主要功能包括客户端负载均衡器及用于中间层通信的客户端。在基于Feign的微服务通信中无论是否开启Hystrix,Ribbon都是必不可少的

工作时分为两步:

    第一步:先选择 Eureka Server, 它优先选择在同一个Zone且负载较少的Server;

    第二步:再根据用户指定的策略,在从Server取到的服务注册列表中选择一个地址。其中Ribbon提供了多种策略,例如轮询随机根据响应时间加权等。

Hystrix

在Spring Cloud微服务体系中Hystrix主要被用于实现微服务之间网络调用故障的熔断、过载保护及资源隔离等功能。

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


三者之间的关系图

如果微服务项目加上了spring-cloud-starter-netflix-hystrix依赖,那么,feign会通过代理模式, 自动将所有的方法用 hystrix 进行包装

在Spring Cloud微服务体系下,微服务之间的互相调用可以通过Feign进行声明式调用,在这个服务调用过程中Feign会通过Ribbon从服务注册中心获取目标微服务的服务器地址列表,之后在网络请求的过程中Ribbon就会将请求以负载均衡的方式打到微服务的不同实例上,从而实现Spring Cloud微服务架构中最为关键的功能即服务发现及客户端负载均衡调用。

另一方面微服务在互相调用的过程中,为了防止某个微服务的故障消耗掉整个系统所有微服务的连接资源,所以在实施微服务调用的过程中我们会要求在调用方实施针对被调用微服务的熔断逻辑。而要实现这个逻辑场景在Spring Cloud微服务框架下我们是通过Hystrix这个框架来实现的。

调用方会针对被调用微服务设置调用超时时间,一旦超时就会进入熔断逻辑,而这个故障指标信息也会返回给Hystrix组件,Hystrix组件会根据熔断情况判断被调微服务的故障情况从而打开熔断器,之后所有针对该微服务的请求就会直接进入熔断逻辑,直到被调微服务故障恢复,Hystrix断路器关闭为止。

在这里插入图片描述

FeignHystrix是两个常用的工具,用于构建分布式系统中的微服务。Feign是一个声明式的Web服务客户端,通过简单的接口注解来定义和绑定服务之间的通信。而Hystrix是一个用于处理分布式系统中的故障和延迟问题的库。 要使用FeignHystrix,首先需要在配置文件中进行一些基础配置。根据引用和引用的内容,可以参考之前的配置方法,在配置文件中添加如下代码: ``` feign: hystrix: enabled: true ``` 这样就启用了Feign中的Hystrix支持。 在使用FeignHystrix的组合时,通常的做法是将Hystrix作为请求端的设置。这是一种经典的使用方式,可以通过在Feign客户端接口上添加`@FeignClient`注解,并在该注解中设置`fallback`属性来指定Hystrix的回退逻辑。这样当服务提供端发生故障或延迟时,Hystrix会根据预设的策略执行回退逻辑。 具体来说,在使用Feign时,可以通过在接口上添加`@FeignClient`注解,并设置`fallback`属性来指定Hystrix的回退逻辑。例如: ```java @FeignClient(name = "service-name", fallback = MyFallback.class) public interface MyFeignClient { // 定义服务之间的接口 } ``` 在上述例子中,`MyFallback`是一个实现了`MyFeignClient`接口的回退逻辑类。当服务提供端发生故障或延迟时,Hystrix会调用`MyFallback`中定义的方法来执行回退逻辑。 总结一下,使用FeignHystrix可以通过在配置文件中启用Hystrix支持,并在Feign客户端接口上添加`@FeignClient`注解来设置Hystrix的回退逻辑。这样就可以提高分布式系统的可靠性和容错能力。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值