1.创立Discovery Server服务
//导入包,理论是通过Spring Initializr导入的,Eureka Server,DevTools,Actuactorspring-boot-devtoolsspring-cloud-starter-netflix-eureka-serverspring-boot-starter-actuator//配置启动类注解EnableEurekaServer@EnableEurekaServer@SpringBootApplicationpublic class DiscoveryServerApplication { public static void main(String[] args) { SpringApplication.run(DiscoveryServerApplication.class, args); }}//此时启动会报错,须要配置spring.application.name=discovery-servereureka.client.register-with-eureka=falseeureka.client.fetch-registry=falseserver.port=8761
2.创立Service服务
//导入包,理论是通过Spring Initializr导入的,Eureka Discovery,DevTools,Actuactorspring-cloud-starter-netflix-eureka-clientspring-boot-starter-actuatorspring-boot-devtools//配置启动类注解EnableDiscoveryClient@EnableDiscoveryClient@SpringBootApplication@RestControllerpublic class ServiceApplication { @Value("${service.instance.name}") private String instance; public static void main(String[] args) { SpringApplication.run(ServiceApplication.class, args); } @RequestMapping("/") public String message(){ return "Hello from " + instance; }}//配置文件spring.application.name=serviceeureka.client.service-url.defaultZone=http://localhost:8761/eureka
3.别离配置两个启动服务,每个配置端口以及节点名称,第一个为instance1 8081,第二个为instance2 8082
//第一个节点配置service.instance.name= instance 1server.port=8081//第二个节点配置service.instance.name= instance 2server.port=8082
4.启动后,两个servic日志中会显示204,示意注册胜利
2020-04-11 21:51:03.000 INFO 964 --- [nfoReplicator-0] com.netflix.discovery.DiscoveryClient : DiscoveryClient_SERVICE/localhost:service:8081: registering service...2020-04-11 21:51:03.072 INFO 964 --- [nfoReplicator-0] com.netflix.discovery.DiscoveryClient : DiscoveryClient_SERVICE/localhost:service:8081 - registration status: 204
5.server端会显示两个节点注册胜利
2020-04-11 21:51:03.070 INFO 899 --- [nio-8761-exec-5] c.n.e.registry.AbstractInstanceRegistry : Registered instance SERVICE/localhost:service:8081 with status UP (replication=false)2020-04-11 21:51:03.595 INFO 899 --- [nio-8761-exec-6] c.n.e.registry.AbstractInstanceRegistry : Registered instance SERVICE/localhost:service:8081 with status UP (replication=true)2020-04-11 21:52:11.887 INFO 899 --- [nio-8761-exec-3] c.n.e.registry.AbstractInstanceRegistry : Registered instance SERVICE/192.168.31.76:service:8082 with status UP (replication=false)2020-04-11 21:52:12.408 INFO 899 --- [nio-8761-exec-5] c.n.e.registry.AbstractInstanceRegistry : Registered instance SERVICE/192.168.31.76:service:8082 with status UP (replication=true)
6.创立Client服务
//导入包,理论是通过Spring Initializr导入的,Eureka Discovery,DevTools,Actuactorspring-cloud-starter-netflix-eureka-clientspring-boot-starter-actuatorspring-boot-devtools//配置启动类注解EnableDiscoveryClient,以及后去eureka服务中注册的servic地址@EnableDiscoveryClient@SpringBootApplication@RestControllerpublic class ClientApplication { @Autowired private EurekaClient eurekaClient; @Autowired private RestTemplateBuilder restTemplateBuilder; public static void main(String[] args) { SpringApplication.run(ClientApplication.class, args); } @RequestMapping("/") public String callService(){ RestTemplate restTemplate = restTemplateBuilder.build(); InstanceInfo instanceInfo = eurekaClient.getNextServerFromEureka("service",false); String baseUrl = instanceInfo.getHomePageUrl(); ResponseEntity<String> reponse = restTemplate.exchange(baseUrl,HttpMethod.GET,null,String.class); return reponse.getBody(); }}//配置文件,其中设置不被发现所以设置为falsespring.application.name=clienteureka.client.service-url.defaultZone=http://localhost:8761/eurekaeureka.client.register-with-eureka=false//启动服务调用http://localhost:8080/能够每次拜访到不同的两个service节点