OpenFeign学习(十):Spring Cloud OpenFeign 集成 Ribbon,Eureka 实现请求负载均衡流程解析

说明

通过之前的博文,我简单介绍了 Spring Cloud OpenFeign 的使用方式及加载配置原理,以及在脱离 Eureka 的情况下使用 Ribbon 以及 Spring Cloud Ribbon 的加载配置原理。通过这些内容我们简单了解到了 OpenFeign 和 Ribbon 的使用方式以及 Spring Cloud 是如何对这些组件进行集成加载配置的。

本篇博文,我将继续通过源码来简单介绍 Spring Cloud OpenFeign 在集成 Eureka,Ribbon 后如何实现自动请求负载。

正文

NamedContextFactory

先回忆下Spring Cloud OpenFeign 相关内容,通过 @FeignClient 和 @EnableFeignClients 注解配置 FeignClient,再通过 FeignContext 获取对应 clientName 的应用上下文。详看《OpenFeign学习(七):Spring Cloud OpenFeign的使用》《OpenFeign学习(九):Spring Cloud OpenFeign的加载配置原理 II》

在使用 Ribbon时,通过 @RabbionClient 注解配置 RibbonClient,再通过 SpringClientFactory 获取对应 clientName 的应用上下文。详看《Ribbon 学习(一):脱离 Eureka 使用 Ribbon》《Ribbon 学习(二):Spring Cloud Ribbon 加载配置原理》

通过源码我们可以发现,SpringClientFactory 和 FeignContext 都继承自 NamedContextFactory 抽象类。
在这里插入图片描述

FeignRibbonClientAutoConfiguration

针对该类,我在之前的博文《OpenFeign学习(九):Spring Cloud OpenFeign的加载配置原理 II》中,提到该类是 RibbonClient 的支持类,通过引入不同的配置类,根据配置创建不同的 feignClient。默认创建的为 LoadBalancerFeignClient 类型。在之前我们忽略了其作为配置类,在其内部定义的 Bean。

@Bean
@Primary
@ConditionalOnMissingBean
@ConditionalOnMissingClass({"org.springframework.retry.support.RetryTemplate"})
public CachingSpringLoadBalancerFactory cachingLBClientFactory(SpringClientFactory factory) {
    return new CachingSpringLoadBalancerFactory(factory);
}

可以看到,在内部定义配置了 CachingSpringLoadBalancerFactory ,同时在创建生成时注入了 Ribbon 的 SpringClientFactory。从名称可以看出,该类用来创建缓存 feignClient 对应的负载均衡器。

对于 SpringClientFactory 类,我在《Ribbon 学习(二):Spring Cloud Ribbon 加载配置原理》一文中提到,该类是创建 Ribbon 客户端,负载均衡器,客户端配置实例的工厂,

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值