Ribbon和@LoadBalanced 分析和负载均衡实现

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 中可以看到
在这里插入图片描述
所以在设置任何策略的情况下,默认的事轮询算法

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值