负载轮询
来源: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回答
-
参考这里加群噢~012021-04-28 -
zhuodongLi
2021-05-16
使用了这个注解以后 ,会在 restTemplate 里面 通过 restTemplate.setInterceptors 放入 LoadBalancerInterceptor ,这个过滤器会在 请求远程成接口的时候 动态判断请求的域是不是 负载 负载均衡支付的服务的地址,如果是,那么就会代理 使用 这个负载均衡器 来调用。
00 -
风间影月
2021-04-28
额,这个想的方向错了,这个注解加了就可以提供负载均衡的功能。eureka只是注册中心哈~ 和负载均衡没关系的。负载均衡就是请求转发,其实就是和restTemplate有关系的~
052021-04-28
相似问题