Eureka集群版之服务注册与发现实战演练
整体流程介绍
准备工作
EurekaClient增加服务内容
-
Eureka Client8011增加Controller业务类
@RestController @Slf4j public class TestController { @Value("${server.port}") private String port; @GetMapping(value = "/eat") public String eat(){ return "吃饭喽!服务端口号是"+port; } }
-
Eureka Client8012增加Controller业务类
@RestController @Slf4j public class TestController { @Value("${server.port}") private String port; @GetMapping(value = "/eat") public String eat(){ return "吃饭喽!服务端口号是"+port; } }
新建EurekaClient消费者
-
修改端口号和服务名称
server: port: 80 #端口号 spring: application: name: eureka-client-consumption #服务名称(消费者) eureka: client: serviceUrl: defaultZone: http://eurekaServer8761.com:8761/eureka/,http://eurekaServer8762.com:8762/eureka/
-
注入RestTemplate实现远程调用
@Configuration public class BeanConfig { @Bean public RestTemplate getRestTemplate(){ return new RestTemplate(); } }
-
增加Controller业务类
@RestController @Slf4j public class TestController { /** * EUREKA-CLIENT-SERVICE:就是EUREKA-SERVER对外提供的服务名称 */ private static final String EUREKA_CLIENT_SERVICE = "http://EUREKA-CLIENT-SERVICE"; @Resource private RestTemplate restTemplate; @GetMapping(value = "/eat") public String eat(){ return restTemplate.getForObject(EUREKA_CLIENT_SERVICE+"/eat",String.class); } }
顺序启动服务
-
启动EurekaServer集群
-
启动EurekaClient(服务提供者)集群
-
启动EurekaClient消费者80访问
http://127.0.0.1/eat
Eureka Server集群没那么智能,因为EUREKA-CLIENT-SERVICE服务名称下有两个服务提供者,它不知道具体找哪个服务 -
解决方法:注入RestTemplate的时增加@LoadBalanced注解
@Configuration
public class BeanConfig {
@Bean
@LoadBalanced //开启负载均衡的功能
public RestTemplate getRestTemplate(){
return new RestTemplate();
}
}
- 再次访问
http://127.0.0.1/eat