FeignAndHystrix
Feign:
Feign 是一个声明式的 HTTP 客户端,它使得编写 HTTP 客户端变得更加简单和优雅。通过 Feign,开发者可以使用注解的方式来定义 HTTP 请求的参数、路径、方法等信息,而无需手动编写 HTTP 请求的代码。 Feign 可以与 Spring Cloud 中的服务发现组件(如 Eureka)集成,使得微服务之间的调用更加方便和透明。使用feign可以实现微服务之间的调用, Feign 是一个很好的微服务间通信的工具,但在复杂的网络环境下,如果发生故障,可能会导致调用失败。这时候就需要一个能够提供容错机制的组件来保障系统的可用性。
Hystrix:
Hystrix 是 Netflix 提供的一个用于处理分布式系统的延迟和故障的库。它实现了断路器模式,可以在服务之间进行通信时提供容错和隔离机制。 Hystrix 可以通过定义 fallback 方法来处理调用失败时的情况,使得系统在发生故障时能够进行优雅降级,而不至于影响整个系统的稳定性。 Hystrix 可以与 Feign 集成,通过 FeignClient 的 fallback 属性来指定 Hystrix 的降级逻辑,从而在微服务间通信时提供了容错机制。 因此,Feign 和 Hystrix 可以结合使用,通过 Feign 发起微服务间的 HTTP 调用,同时通过 Hystrix 提供的容错机制来保障系统的可用性和稳定性。这样,就可以在微服务架构中实现更加健壮的服务调用和容错处理。
因此,Feign 和 Hystrix 可以结合使用,通过 Feign 发起微服务间的 HTTP 调用,同时通过 Hystrix 提供的容错机制来保障系统的可用性和稳定性。这样,就可以在微服务架构中实现更加健壮的服务调用和容错处理。
具体的代码实现是在添加FeignClient注解的接口中,通过指定fallback属性为对应的降级类来实现容错处理。在降级类中,可以根据具体情况进行相应的处理,比如返回默认值或者抛出异常等。1 |
|
Ribbon:
Ribbon 是 Netflix 提供的一个负载均衡组件,它用于在客户端进行负载均衡,以提高微服务之间的通信效率和可靠性。
Ribbon 可以根据一定的负载均衡策略(如轮询、随机、权重等)来选择合适的服务实例进行请求转发,从而实现了对服务提供者的负载均衡。
在微服务架构中,服务消费者可以通过 Ribbon 来发起对服务提供者的请求,并且 Ribbon 可以根据负载均衡策略选择合适的服务实例进行请求转发。
微服务相互访问,通讯的协议应该是”http”,目前有两种常用的调用:
1.ribbon+spring restTemplate这两种也就是对 apache httpClient 的封装,方便微服务的使用吧。2.feign(ribbon+hystrix) 声明式接口的形式
Ribbon+Hystrix方式
1 | <artifactId>spring-cloud-starter-netflix-ribbon</artifactId> |
配置eureka
注入 RestTemplate
1 |
|
服务调用
1 | //使用断路器 |
Feign方式
坐标(简版) feign引入ribbon+hystrix等
1 | <artifactId>spring-cloud-starter-netflix-hystrix</artifactId> |
配置eureka
启动类加上@EnableFeignClients
实现服务调用
1 |
|
声明式的接口,外部直接调用方法就可以了,这个加了一个断路器SponsorClientHystrix
1 |
|