在分析了Eureka的部分源码之后,相信大家对Eureka的服务治理机制已经有了进一步的理解。在本节中,我们从使用的角度对Eureka中的一些常用配置内容进行详细的介绍,以帮助我们根据自身环境与业务特点来进行个性化的配置调整。
在Eureka的服务治理体系中,主要分为服务端与客户端两个不同的角色,服务端为服务注册中心,而客户端为各个提供接口的微服务应用。当我们构建了高可用的注册中心之后,该集群中所有的微服务应用和后续将要介绍的一些基础类应用(如配置中心、API网关等)都可以视作该体系下的一个微服务(Eureka客户端)。服务注册中心也一样,只是高可用环境下的服务注册中心除了作为客户端之外,还为集群中的其他客户端提供了服务注册的特殊功能。所以,Eureka客户端的配置对象存在于所有Eureka服务治理体系下的应用实例中。在实际使用Spring Cloud Eureka 的过程中,我们所做的配置内容几乎都是对Eureka客户端配置进行操作,所以了解这部分的配置内容,对于用好Eureka非常有帮助。
Eureka客户端的主要配置分为以下两个方面。
- 服务注册相关的配置信息,包括服务注册中心的地址、服务获取的时间间隔、可用区域等。
- 服务实例相关的配置信息,包括服务实例的名称、IP地址,端口号,健康检查路径等。
而Eureka服务端更多地类似于一个现成产品,大多数情况下,我们不需要修改它的配置信息。所以在本书中,我们对此不进行过多的介绍,有兴趣的读者可以查看org.springframework.cloud.netflix.eureka.server.EurekaServerConfigBean类的定义来做进一步学习,这些参数均以eureka.server作为前缀。另外值得一提的是,我们在学习本书内容进行本地调试的时候,可以通过设置该类中的enableSelfPerservation参数来关闭注册中心的“自我保护”功能,以防止关闭的实例无法被服务注册中心剔除的问题,这一点我们在“服务治理机制”一节中也有所介绍。
服务注册配置
关于服务类的配置信息,我们可以通过查看org.springframework.cloud.netflix.eureka.EurekaClientConfigBean的源码来获得比官网文档更为详尽的内容,这些配置信息都以eureka.client为前缀,下面我们针对一些常用的配置信息做进一步的介绍和说明。
指定注册中心
在本章第1节的示例中,我们演示了如何将一个Spring Boot应用纳入Eureka的服务治理体系中,除了引入Eureka的依赖之外,就是在配置文件中指定注册中心,主要通过eureka.client.serviceUrl参数实现,该参数的定义如下所示,他的配置值存储在HashMap类型中,并且设有一组默认值,其默认值的key为DefaultZone、value为http://localhost:8761/eureka/。
private Map<String, String> serviceUrl = new HashMap<>();
{
this.serviceUrl.put(DEFAULT_ZONE, DEFAULT_URL);
}
public static final String DEFAULT_URL = "http://localhost:8761" + DEFAULT_PREFIX + "/";
public staitc final String DEFAULT_ZONE = "defaultZone";
由于之前实现的服务注册中心使用了1111端口,所以我们做了如下的配置,来讲应用注册到对应的Eureka服务端中。
eureka.client.serviceUrl.defaultZone=http://localhost:1111/eureka/
当我们构建了高可用服务注册中心集群时,我们可以为参数的value配置