Eureka的自我保护以及其他小细节
服务名称修改
-
修改之前
-
修改之后
-
如何修改呢?先参考官网然后修改YAML文件
/** * 在向Eureka注册时可以设置该属性的值为实例的唯一ID */ private String instanceId;
eureka: client: serviceUrl: defaultZone: http://eurekaServer8761.com:8761/eureka/,http://eurekaServer8762.com:8762/eureka/ instance: instance-id: service8012 #修改实例名称
显示服务IP地址
-
修改之前鼠标移上去是这样
-
修改之后
-
如何修改呢?先参考官网然后修改YAML文件
/** * 标记服务器的IP地址,默认为false */ private boolean preferIpAddress = false;
eureka: client: serviceUrl: defaultZone: http://eurekaServer8761.com:8761/eureka/,http://eurekaServer8762.com:8762/eureka/ instance: instance-id: service8012 #修改实例名称 prefer-ip-address: true #显示IP和端口号
服务发现DiscoveryClient
-
在Client端的Controller上增加如下代码
/** * DiscoveryClient:为客户端提供简单的API */ @Resource private DiscoveryClient discoveryClient; @GetMapping(value = "serviceUrl") public void serviceUrl() { /** * 获取所有对外提供服务的实例 */ List<String> services = discoveryClient.getServices(); for (String service : services) { log.info("#####"+service+"#####"); } /** * 获取某一服务实例 */ List<ServiceInstance> list = discoveryClient.getInstances("EUREKA-CLIENT-SERVICE"); if (list != null && list.size() > 0 ) { for (ServiceInstance instance : list) { log.info("#####"+instance.getHost()+":"+instance.getPort()+"#####"); } } }
使用org.springframework.cloud.client.discovery.DiscoveryClient,为发现客户端提供简单的API(非Netflix专用):切记不要导错包
-
访问
http://127.0.0.1:8011/serviceUrl
Eureka的自我保护
-
什么是自我保护
默认情况下EurekaClient会定时向EurekaServer端发送心跳包(
默认30秒一次
)如果EurekaServer端在指定时间内(
默认90秒内
)没有收到EurekaClient端发送的心跳包,会在服务列表中删除该服务如果在90秒内因为网络故障或者其他原因引导致与EurekaServer无法进行通信,此时EurekaServer会自动进入保护模式(
默认是开启的
)自我保护模式是一种应对网络异常的安全保护措施,可以有效的避免因为网络问题而出现的误删除操作(
EurekaClient端没有问题但网络出现异常了,此时不应该也绝不能注销该服务
) -
触发自我保护机制的时机:点此链接
-
开启和关闭自我保护
erver: port: 8761 eureka: server: enable-self-preservation: false #false关闭,true开启