@RibbonClient还会导入 RibbonClientConfigurationRegistrar 类来动态注册Ribbon 相关的BeanDefinition。与OpenFeign 的集成FeignCJientFactoryBean 是创造FeignClient 的工厂LoadBalancerFeignClient#execute 方法会将普通的Request 对象转化为RibbonRequest , 并使用FeignLoadBalancer 实例来发送RibbonRequest。lbClientFactory 的参数是CachingSpringLoadBalancerFactory 的实例, 它是带有缓存机制的FeignLoadBalancer 的工厂类。ILoadBalancerILoadBalancer 是Ribbon 的关键类之二, 它是定义负载均衡操作过程的接口。根据Ribbon 的组件实例化机制, ILoadBalnacer 实例是在RibbonAutoConfiguration 中被创建生成的。SpringClientFactory 中的实例都是RibbonClientConfiguration 或者自定义C onfiguration配置类创建的Bean 实例。Rule 的默认实例,Rule 接口的choose 方法就是从一堆服务器中根据一定规则选出一个服务器。Rule 有很多默认的实现类,这些实现类根据不同的算法和逻辑来进行负载均衡。在大多数情况下, 这些默认的实现类是可以满足需求的,如果有特殊需求,可以自己实现。Ribbon 内置的Rule 子类如下所示。

SpringCloud Netflix Ribbon源码解析(推荐)

SpringCloud Netflix Ribbon源码解析(推荐)

SpringCloud Netflix Ribbon源码解析(推荐)

SpringCloud Netflix Ribbon源码解析(推荐)

SpringCloud Netflix Ribbon源码解析(推荐)