1.spring cloud 构建体系中一般没有直接依赖ribbon的自动装配,
一般是由三个组件的底层依赖:分别是:
eureka-client 的starter
fegin
hystrix
2.为什么restTemplate加上@LoadBalanced 能够跟着服务名称走?
restTemplate 是spring-web中的一个封装http的类
结合eureka-client 便可以实现根据名称路由服务,断点可以发现,在restTemplate真正访问的时候还是实现了
Ip访问,其原理便是在restTemplate发起请求之前,在
@Qualifier 实现了按照类型分组bean的效果
LoadBalancerAutoConfiguration 这个类中获取所有分组的bean 同时 LoadBalancerInterceptorConfig 添加了拦截器
LoadBalancerInterceptor # intercept 方法实现转换
/**
* Annotation to mark a RestTemplate bean to be configured to use a LoadBalancerClient
* @author Spencer Gibb
*/
@Target({ ElementType.FIELD, ElementType.PARAMETER, ElementType.METHOD })
@Retention(RetentionPolicy.RUNTIME)
@Documented
@Inherited
@Qualifier
public @interface LoadBalanced {
3.ribbon负载均衡的默认实现
在BaseLoadBalancer 中可以看到
所以在设置任何策略的情况下,默认的事轮询算法