关于细粒度配置ribbon的问题

来源:6-6 细粒度配置自定义01-Java代码方式

MichaelDuan

2023-10-31

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

写回答

1回答

大目

2023-11-08

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

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

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

0
2
大目
回复
MichaelDuan
好问题,是这样的,ribbon在初始化时做了特殊处理,每个名称的ribbon client(也就是目标服务名称,例如user-center,都会创建一个独立的上下文,这个上下文是懒加载的,在目标服务首次被访问时会初始化,初始化时会加载配置类(即使这个类没有@Configuration注解))
2024-01-04
共2条回复

Spring Cloud Alibaba微服务从入门到进阶

面向未来微服务:熟练掌握Spring Cloud Alibaba

3091 学习 · 1324 问题

查看课程