SpringCloud--Eureka--配置

   对于Eureka客户端的配置,主要分为两个部分:

    服务注册相关配置:包括注册中心地址、服务获取间隔、可用区域等内容

    服务实例相关配置:实例名称、IP地址、端口号、健康检查路径等

  而对于Eureka服务端的配置,基本上不用怎么处理,类似于一个线程的产品(这些参数均以eureka.server开头)。

  1、服务注册相关配置

  全量配置可以参照org.springframework.cloud.netflix.eureka.EurekaClientConfigBean类的属性,该类配置均已eureka.client开头,下面是一些主要的配置信息

参数名 说明 默认值
private Map<String, String> serviceUrl 注册中心地址  
private int registryFetchIntervalSeconds = 30; 从Eureka服务端获取注册信息的时间间隔,单位:秒 30
private int instanceInfoReplicationIntervalSeconds = 30; 更新实例信息变化到Eureka服务端的时间,单位:秒 30
private int eurekaServiceUrlPollIntervalSeconds = 5 * MINUTES 轮询Eureka服务端地址更改的时间间隔,单为:秒;当我们与Spring Cloud Config配合,动态刷新Eureka的注册中心地址时,需要关注此参数 300
private int eurekaServerReadTimeoutSeconds = 8; 读取Eureka server信息超时时间,单为:秒 8
private int eurekaServerConnectTimeoutSeconds = 5; 连接Eureka server的超时时间,单为:秒 5
private int eurekaServerTotalConnections = 200; 从Eureka客户端到所有Eureka服务端的连接总数 200
private int eurekaServerTotalConnectionsPerHost = 50; 从Eureka客户端到一个Eureka服务端的连接总数 50
private int eurekaConnectionIdleTimeoutSeconds = 30; Eureka服务端连接的空闲关闭时间,单为:秒 30
private int heartbeatExecutorThreadPoolSize = 2; 心跳线程池的核心线程数 2
private int heartbeatExecutorExponentialBackOffBound = 10; 心跳超时重试延迟时间的最大乘数 10
private int cacheRefreshExecutorThreadPoolSize = 2; 缓存刷新线程池核心线程数 2
private int cacheRefreshExecutorExponentialBackOffBound = 10; 缓存刷新超时重试延迟时间的最大乘数 10
private boolean useDnsForFetchingServiceUrls = false; 使用DNS来获取Eureka服务端的serviceUrl false
private boolean registerWithEureka = true; 自身是否注册到注册中心 true
private boolean preferSameZoneEureka = true; 是否偏好使用同一zone的Eureka server true
private boolean filterOnlyUpInstances = true; 获取实例时是否过滤,仅保留UP状态的实例 true
private boolean fetchRegistry = true; 是否从注册中心获取注册信息 true

  2、服务实例相关配置

全量配置可以参照org.springframework.cloud.netflix.eureka.EurekaInstanceConfigBean类的属性,该类配置均已eureka.instance开头。

(1)元数据

  元数据是指Eureka客户端在向服务端发送注册请求时,用来描述客户端服务信息的对象。Eureka客户端的配置都是通过org.springframework.cloud.netflix.eureka.EurekaInstanceConfigBean配置并加载的,其中就包含元数据,而Eureka客户端真正发送请求时,则是使用的com.netflix.appinfo.InstanceInfo进行请求的,在该类中,详细定义了原生Eureka对元数据的定义,同时还有一个Map<String, String> metadata来表示自定义的元数据。

  对于元数据原生属性的配置为eureka.instance.key = value,其中key为EurekaInstanceConfigBean中定义的属性,而自定义属性的配置为eureka.instance.metadata.key = value,其中key为自定义的属性,具体样例如下:

  instance:
    hostname: lcl-pc2
    # 心跳检测频率
    lease-renewal-interval-in-seconds: 30
    # 服务失效时间
    lease-expiration-duration-in-seconds: 90
    metadata-map: 
      mykey: 12345

(2)实例名配置

  实例名配置即InstanceInfo中的instanceId属性,在Eureka原生的配置中,该属性默认值是主机名,这就导致一个主机上只能运行一个Eureka服务实例,所以在Spring Cloud Eureka中,默认使用了 "主机名:项目名:实例id:端口号"   这样一组来作为最终的实例名

${spring.cloud.client.hostname}:${spring.application.name}:${spring.application.instance_id:${server.port}}

  在之前测试的时候,由于在本地,所以改了项目的端口号,因此实例名是不一样的,但是有的时候,我们不会固定写一个端口号,而是使用server.port=${random.int}来随机获取一个端口号,如果不想使实例名中的id与项目实际端口号保持一致,我们可以对instanceId做配置,样例如下:

eureka:
  instance:
    instance-id: ${spring.application.name}:${random.int}
server:
  port: ${random.int[1111,9999]}

  对客户端的两个项目重新按照此配置后,重新访问注册中心:http://localhost:1111/,可以发现,两个实例名是不一样的

(3)端点配置

  在InstanceInfo中,存在一些url的配置信息,例如应用主页地址:homePageUrl、状态页地址:statusPageUrl、健康检查地址healthCheckUrl等,其中健康检查url和状态页url都是通过spring-boot-actuator模块提供的/health端点和/info端点来访问的。例如点击注册中心中已注册的实例,访问的就是actuator中的/indo端点。

  开启这些端点,要做的就是在pom文件中引入actuator依赖

        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-actuator</artifactId>
        </dependency>
posted @ 2020-07-02 16:04  李聪龙  阅读(269)  评论(0编辑  收藏  举报