请稍等 ...
×

采纳答案成功!

向帮助你的同学说点啥吧!感谢那些助人为乐的人

关于细粒度配置ribbon的问题

老师,您好
您在课程中提到,通过配置configuration 定义IRule的方式来实现细粒度的负载均衡,请问你在ShareService中,通过什么方式来请求user-center?是否按照以下的方式来请求的?如果是这样,那restTemplate上面加的@LoadBalanced与配置IRule的configuration有什么区别?
userDTO = this.restTemplate.getForObject(
http://user-center/users/{userId}”,
UserDTO.class,userId
);

正在回答 回答被采纳积分+3

1回答

大目 2023-11-08 11:27:26

@LoadBalanced本质上是利用RestTemplate的拦截器,为RestTemplate整合Ribbon的(相当于为RestTemplate赋予了负载均衡的能力)

而IRule是Ribbon的一个组件,用来实现自定义负载均衡规则的,负载均衡规则用来做“传给我一个实例列表,给你返回一个实例的工作,用来精准控制流量的。

这两者之间是搭配关系,IRule的使用前提,是你的RestTemplate(或Feign)整合了Ribbon

0 回复 有任何疑惑可以回复我~
  • 提问者 MichaelDuan #1
    好的,谢谢老师讲解,还有个问题 NacosSameClusterWeightedRule extends AbstractLoadBalancerRule,我看你讲解的时候,把这个类放到config下面,但是又没有加@configuration注解,它是怎么被spring注册的?
    回复 有任何疑惑可以回复我~ 2023-11-23 21:57:28
  • 大目 回复 提问者 MichaelDuan #2
    好问题,是这样的,ribbon在初始化时做了特殊处理,每个名称的ribbon client(也就是目标服务名称,例如user-center,都会创建一个独立的上下文,这个上下文是懒加载的,在目标服务首次被访问时会初始化,初始化时会加载配置类(即使这个类没有@Configuration注解))
    回复 有任何疑惑可以回复我~ 2024-01-04 20:14:25
问题已解决,确定采纳
还有疑问,暂不采纳
意见反馈 帮助中心 APP下载
官方微信