1.首先启动一个eureka-server
本次测试为了方便选择使用单机配置
application.yml
- #单机
- server:
- port: 8761 #eureka��Ĭ�϶˿�
- spring:
- application:
- name: eureka-server #Ӧ������
- #eureka的配置分为3类,server client 实例的 eureka-server既是服务端又是客户端
- eureka:
- server:
- eviction-interval-timer-in-ms: 1000 #服务端间隔多少毫秒做定期删除的操作
- renewal-percent-threshold: 0.85 #续约百分比,超过85%的应用没有和你续约,那么eureka会保护服务,不会提出任何一个
- instance: #实例的配置
- instance-id: ${eureka.instance.hostname}:${spring.application.name}:${server.port} #主机名称:应用名称:端口号
- hostname: localhost #主机名称或则服务的ip
- prefer-ip-address: true #以ip的形式显示具体的服务信息
- lease-renewal-interval-in-seconds: 5 #服务实例的续约时间间隔
-
- #集群
- #server:
- # port: 8761
- #spring:
- # application:
- # name: eureka-server
- #eureka:
- # client:
- # service-url:
- # defaultZone: http://peer2:8762/eureka,http://peer3:8763/eureka
- # instance:
- # instance-id: ${eureka.instance.hostname}:${spring.application.name}:${server.port}
- # hostname: peer1
- # prefer-ip-address: true
- # lease-renewal-interval-in-seconds: 5
-
- #集群的终极方案
- #server:
- # port: 8761
- #spring:
- # application:
- # name: eureka-server
- #eureka:
- # client:
- # service-url:
- # defaultZone: http://peer1:8761/eureka,http://peer2:8762/eureka,http://peer3:8763/eureka
- # instance:
- # instance-id: ${spring.application.name}:${server.port}
- # prefer-ip-address: true
- # lease-renewal-interval-in-seconds: 5
-
2.编写eureka-client-b的配置
application.yml
- server:
- port: 8081
- spring:
- application:
- name: eureka-client-b
- eureka:
- client:
- service-url:
- defaultZone: http://localhost:8761/eureka
- instance:
- prefer-ip-address: true
- instance-id: ${eureka.instance.hostname}:${spring.application.name}:${server.port}
- hostname: localhost
- lease-renewal-interval-in-seconds: 10
3.编写eureka-client-a的配置文件
- #单机
- server:
- port: 8080 #�ͻ��˵Ķ˿�û��Ҫ��
- spring:
- application:
- name: eureka-client-a
- #ע��
- eureka:
- client:
- service-url: #ע���ַ
- defaultZone: http://localhost:8761/eureka
- register-with-eureka: true #可以不往eureka-server注册
- fetch-registry: true #应用是否去拉取服务列表到本地
- registry-fetch-interval-seconds: 10 #为了缓解服务列表的脏读问题
- instance:
- hostname: localhost #应用的主机名称 最好写主机ip
- instance-id: ${eureka.instance.hostname}:${spring.application.name}:${server.port}
- prefer-ip-address: true #显示ip
- lease-renewal-interval-in-seconds: 10 #实例续约的时间
-
-
- #集群
- #server:
- # port: 8080 #�ͻ��˵Ķ˿�û��Ҫ��
- #spring:
- # application:
- # name: eureka-client-a
- ##ע��
- #eureka:
- # client:
- # service-url: #ע���ַ
- # defaultZone: http://peer1:8761/eureka
- # register-with-eureka: true #可以不往eureka-server注册
- # fetch-registry: true #应用是否去拉取服务列表到本地
- # registry-fetch-interval-seconds: 10 #为了缓解服务列表的脏读问题
- # instance:
- # hostname: localhost #应用的主机名称 最好写主机ip
- # instance-id: ${eureka.instance.hostname}:${spring.application.name}:${server.port}
- # prefer-ip-address: true #显示ip
- # lease-renewal-interval-in-seconds: 10 #实例续约的时间
-
-
-
4.在eureka-client-a的model里面创建DiscoveryController
里面编写方法,通过服务eureka-client-b的应用名,找到服务eureka-client-b的具体信息。
- package com.it.controller;
-
- import org.springframework.beans.factory.annotation.Autowired;
- import org.springframework.cloud.client.ServiceInstance;
- import org.springframework.cloud.client.discovery.DiscoveryClient;
- import org.springframework.web.bind.annotation.GetMapping;
- import org.springframework.web.bind.annotation.RestController;
-
- import java.util.List;
-
- @RestController
- public class DiscoveryController {
-
- @Autowired
- private DiscoveryClient discoveryClient;
-
- @GetMapping("test")
- public String doDiscovery(String serviceName){
- // 这就是服务发现,通过服务的应用名,找到服务的具体信息
- List
instances = discoveryClient.getInstances(serviceName); - //
- instances.forEach(System.out::println);
- //这里去找b的ip和port
- return instances.get(0).toString();
-
- }
-
- }
5.先运行eureka-server,再运行eureka-client-b,最后运行eureka-client-a
进入localhost:8761进行查看,发现应用实例都已经注册了

通过eureka-client-a中编写的方法,用eureka-client-b作为参数进行查询eureka-client-b的具体信息,并遍历打印出来。
http://localhost:8080/test?serviceName=eureka-client-b
