负载轮询

来源:11-12 实现轮训负载均衡【eureka】

慕斯卡2532047

2021-04-28

老师:
第一个问题:
您看下面的代码,这是参考您的课程所讲的,一模一样,【RestTemplate没有添加注解:@LoadBalanced】,然后我的疑问是:【这种方式好像不是轮询,他会一直把请求发给一个服务提供方,然后再一直发给另外的一个服务提供方,不是一个个的平均分发的,而是一段时间给a服务提供者,一段时间再给b服务提供者;还有种情况就是一直给其中一个服务提供者发送,另外一个服务提供者接受不到请求,就是我的实际测试和您的视频讲解上的演示不同,这是为什么】

   String serviceId = "SERVICE-USER";
//微服务【这种方式好像不是轮询,他会一直把请求发给一个服务提供方,然后再一直发给另外的一个服务提供方,不是一个个的平均分发的,而是一段时间间隔的】
List<ServiceInstance> instanceList = discoveryClient.getInstances(serviceId);
ServiceInstance userService = instanceList.get(0);
String userServerUrlExecute
        = "http://" + userService.getHost() + ":" + userService.getPort() + "/user/queryByIds?userIds=" + JsonUtils.objectToJson(idSet);

第二个问题:
如果RestTemplate添加注解:@LoadBalanced,使用serviceId 构建请求地址测试确实是一个个的平均分发的。【然后我的疑问是@LoadBalanced的作用?RestTemplate只是一个http请求工具类,应该是向目标url发送请求即可,他怎么会有负载的功能?负载的功能应该是eureka提供的,那既然是eureka提供负载为什么要把@LoadBalanced注解写在RestTemplate上?然道是eureka和RestTemplate他们有整合的地方,eureka可以接受来自RestTemplate的指示?】

写回答

3回答

风间影月

2021-04-28

//img.mukewang.com/szimg/602290b10854529f15000719.jpg
参考这里加群噢~

0
1
慕斯卡2532047
非常感谢!
2021-04-28
共1条回复

zhuodongLi

2021-05-16

使用了这个注解以后 ,会在  restTemplate 里面 通过 restTemplate.setInterceptors 放入  LoadBalancerInterceptor ,这个过滤器会在 请求远程成接口的时候 动态判断请求的域是不是  负载 负载均衡支付的服务的地址,如果是,那么就会代理 使用 这个负载均衡器 来调用。

0
0

风间影月

2021-04-28

额,这个想的方向错了,这个注解加了就可以提供负载均衡的功能。eureka只是注册中心哈~ 和负载均衡没关系的。负载均衡就是请求转发,其实就是和restTemplate有关系的~

0
5
慕斯卡2532047
回复
风间影月
哪个群啊,劳驾您告知下。
2021-04-28
共5条回复

Spring Cloud 进阶 Alibaba 微服务体系自媒体实战

一课收获分布式系统开发,微服务核心技术和中间件企业生产落地

1113 学习 · 896 问题

查看课程