进阶配置项说明
在对 Eureka 的原理机制进行更深一步了解之后,我们可能会想,根据服务治理机制做一些个性化的调整,这个时候,就需要使用 Eureka 的配置。原本在前面介绍的内容可能不满足需求,这里进行深一步的介绍。
根据分类原则,Eureka 的配置可以分为四个部分,服务注册类、服务实例类、服务注册中心、服务注册中心仪表盘。在这里不仅会列举配置项,也会说明如何通过源码查找配置项。
服务注册类的配置
如何查看服务注册类的信息的源码呢?首先,需要知道在哪个类中查找,这个类就是 org.springframework.cloud.netflix.eureka.EurekaClientConfigBean。看一下部分源码,如下。
@ConfigurationProperties(EurekaClientConfigBean.PREFIX)
public class EurekaClientConfigBean implements EurekaClientConfig, Ordered {
public static final String PREFIX = "eureka.client";
public static final String DEFAULT_URL = "http://localhost:8761" +DEFAULT_PREFIX
+ "/";
public static final String DEFAULT_ZONE = "defaultZone";
private static final int MINUTES = 60;
……
}
在上面的源码中,我们可以看到注解的 PREFIX 是 eureka.client,这里说明客户端的配置项都是以 eureka.client 开头。
在搭建服务注册中心时,我们写过服务注册中心地址的配置项。如何看源码怎么确定呢?先看看 serviceUrl 的定义,下面是源码。
private Map<String, String> serviceUrl = new HashMap<>();
{
this.serviceUrl.put(DEFAULT_ZONE, DEFAULT_URL);
}
通过上面的源码可以知道 serviceUrl 是一个 Map 类型,然后 Map 中的 key 是 DEFAULT_ZONE,所以配置项的 key 也就出来了。
下面通过表格的方式,将源码中的所有配置项都列举出来,方便查阅,有兴趣的读者可以根据表10.2,查看源码。

服务实例类的配置
对于服务实例类的信息,如何查看源码?首先需要知道在哪个类中查找,这个类就是 org.springframework.cloud.netflix.eureka. EurekaInstanceConfigBean。看一下部分源码。
@ConfigurationProperties("eureka.instance")
public class EurekaInstanceConfigBean implements CloudEurekaInstanceConfig, EnvironmentAware {
private static final String UNKNOWN = "unknown";
private HostInfo hostInfo;
private InetUtils inetUtils;
……
}
通过上面的源码,可以知道所有的实例类的 PREFIX 都是 eureka.instance。
元数据信息
Eureka 的元数据主要分为两种类型,标准元数据和自定义元数据。其中标准元数据主要包括主机名、IP、端口号、状态页和健康检查等信息,这些信息直接注册到服务注册中心,以便客户端可以联系到服务。
所有的配置项通过 EurekaInstanceConfigBean 进行加载,但是在真正注册时则会包装成com.netflix.appinfo. InstanceInfo,然后发送给服务端。
自定义元数据时,使用 eureka.instance.metadataMap 的格式进行。在 EurekaInstanceConfigBean 中我们可以看下源码。
/**
* Gets the metadata name/value pairs associated with this instance. This information
* is sent to eureka server and can be used by other instances.
*/
private Map<String, String> metadataMap = new HashMap<>();
在上面源码中,可以知道这里的 metadataMap 使用的是 Map 类型。
服务注册中心配置
对于服务注册中心的配置,如何查看源码呢?首先需要知道在哪个类中查找,这个类就是 org.springframework.cloud.netflix.eureka.EurekaServerConfigBean。看一下部分源码。
@ConfigurationProperties(EurekaServerConfigBean.PREFIX)
public class EurekaServerConfigBean implements EurekaServerConfig {
public static final String PREFIX = "eureka.server";
private static final int MINUTES = 60 * 1000;
@Autowired(required = false)
PropertyResolver propertyResolver;
……
}
所有服务注册中心的配置项都是以 eureka.server 开头。这里的配置项特别多,建议读者直接看源码。为了说明服务注册中心的配置,这里只列举几个配置项做一些说明。
//开启自我保护
rivate boolean enableSelfPreservation = true;
//自我保护续约百分百
private double renewalPercentThreshold = 0.85;
//续约数阈值更新频率
private int renewalThresholdUpdateIntervalMs = 15 * MINUTES;
服务注册中心仪表盘配置
服务注册中心的仪表盘用于服务注册中心的可视化展示,同上面的几个配置一样,在这里也存在单独的源码,org.springframework.cloud.netflix.eureka.server.EurekaDashboardProperties 部分源码如下。
@ConfigurationProperties("eureka.dashboard")
public class EurekaDashboardProperties {
/**
* The path to the Eureka dashboard (relative to the servlet path). Defaults to "/".
*/
private String path = "/";
……
}
通过源码可以知道,配置项以 eureka.dashboard 开头。配置项如表10.4所示。
