配置eureka服务id
未配置之前
配置
eureka:
instance:
hostname: localhost
#配置服务id
instance-id: payment8002
配置后
服务改为自定义id,更方便管理,可以根据地区,ip来做细化
配置显示ip
未配置前
配置
eureka:
instance:
hostname: localhost
instance-id: payment8002
#显示ip
prefer-ip-address: true
配置后
显示变为ip,更好区分
Discovery配置
客户端想获取注册中心中有那些注册好的服务,如何才能做到?这时候就需要 Discovery(服务发现)
1. 引入DiscoveryClient
@Resource
private DiscoveryClient discoveryClient;
2.编写获取配置代码
@GetMapping("/getDiscovery")
public Object getDiscovery(){
List<String> services = discoveryClient.getServices();
//获取所有服务名
for (String service : services) {
log.info("================:" + service);
}
//获取单个服务的注册信息
List<ServiceInstance> instances = discoveryClient.getInstances("cloud-payment-service");
for (ServiceInstance instance : instances) {
log.info("*******************"+instance.getHost() + "\t" + instance.getPort() + "\t" + instance.getUri());
}
return this.discoveryClient;
}
3.启动类添加注解
@EnableDiscoveryClient
public class PaymentMain8001 {
public static void main(String[] args) {
SpringApplication.run(PaymentMain8001.class,args);
log.info("=========================启动完成==============================");
}
}
3.重启,并测试 http://127.0.01:8001/Payment/getDiscovery
可以看到界面输出
打开控制台
测试成功
eureka自我保护
如果看到这段提示,那就是eureka进入了自我保护模式,只要进入了自我保护,euaeka将不会注销任何微服务
默认情况下 eurekaserver端在一定时间内(90s) 没有收到客户端的心跳就会将服务剔除,但在短时间内(90s)突然失去大量客户端,eureka就会进入自我保护模式
如何让关闭自我保护机制
服务端配置
eureka:
server:
#关闭自我保护机制
enable-self-preservation: false
##剔除服务时间 ms
eviction-interval-timer-in-ms: 2000
为了快速显示效果,配置客户端剔除时间以及心跳时间
eureka:
instance:
hostname: localhost
instance-id: payment8002
#显示ip
prefer-ip-address: true
#客户端定时像服务端发送心跳时间间隔 秒
lease-renewal-interval-in-seconds: 1
#服务的收到最后一次心跳等待时间上限 超市剔除
lease-expiration-duration-in-seconds: 2
测试