老师:
第一个问题:
您看下面的代码,这是参考您的课程所讲的,一模一样,【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的指示?】
一课收获分布式系统开发,微服务核心技术和中间件企业生产落地
了解课程