SpringCloud Netflix Ribbon源码解析(推荐)
@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 子类如下所示。
用户评论