Spring Cloud Eureka配置详解

目录

1 instance:当前Eureka Instance实例信息配置

2 client:Eureka Client客户端特性配置

3 server:Eureka Server注册中心特性配置

4 dashboard:Eureka Server注册中心仪表盘配置

5 Spring Cloud Eureka常用配置清单

介绍

Eureka包含四个部分的配置

instance:当前Eureka Instance实例信息配置; client:Eureka Client客户端特性配置; server:Eureka Server注册中心特性配置; dashboard:Eureka Server注册中心仪表盘配置。

1 Eureka Instance实例信息配置

Bean类:org.springframework.cloud.netflix.eureka.EurekaInstanceConfigBean进行加载。包装成com.netflix.appinfo.InstanceInfo对象发送的Eureka服务端。

开头:eureka.instance

1.1 元数据

Eureka客户端在想服务注册中心发送注册请求时的自身服务信息描述对象。主要包含服务名称、实例名称、实例IP、实例端口等,以及一些负载均衡策略或者自定义其他特殊用途元素信息。

格式:eureka.instance.metadatamap.< key >=< value >

如:eureka.instance.metadatamap.zone = shanghai

1.2 实例名称配置

用于区分同一服务中不同实例的标识。(即服务名称相同,主机或者端口不同),避免启动时选择端口的麻烦。

如:eureka.instance.instanceId=${spring.application.name}:${random.int}

1.3 端点配置

在InstanceInfo中,可以看到一些URL的配置信息,比如homePageUrl、statusPageUrl、healthCheckUrl。它们分别代表了应用主页的URL、状态页的URL、健康检查的URL。其中,状态页和监控检查的URL在Spring Cloud Eureka中默认使用了spring-boot-actuator模块提供的/info端点和/health端点。为了服务的正常运作,必须确认Eureka客户端的/health端点在发送元数据的时候,是一个能够被注册中心访问的地址,否则服务注册中心不会根据应用的健康状态来更改状态(仅当开启了healthcheck功能时,以该端点信息作为健康检查标准)。而/info端点如果不正确的话,会导致在Eureka面板单击服务实例时,无法访问到服务实例提供的信息接口。

在一些特殊的情况下,比如,为应用设置了context-path,这时,所有spring-boot-actuator模块的监控端点都会增加一个前缀。所以,我们就需要做类似如下的配置,为/info和/health端点也加上类似的前缀:

management.context-path=/hello
eureka.instance.statusPageUrlPath=${management.context-path}/info
eureka.instance.healthCheckUrlPath=${management.context-path}/health

另外,有时候为了安全考虑,也有可能会修改/info和/health端点的原始路径。这个时候,我们也需要做一些特殊配置,例如:

endpoints.info.pah=/appinfo
endpoints.health.path=/cheakHealth
eureka.instance.statusPageUrlPath=/${endpoints.info.pah}
eureka.instance.healthCheckUrlPath=/${endpoints.health.path}

上面实例使用的是相对路径。

由于Eureka的服务注册中心默认会以HTTP的方式来访问和暴露这些端点,因此当客户端应用以HTTPS的方式来暴露服务和监控端点时,相对路径的配置方式就无法满足要求了。所以,Spring Cloud Eureka还提供了绝对路径的配置参数,例如:

eureka.instance.homePageUrl=https://${eureka.instance.homename}
eureka.instance.statusPageUrlPath=https://${eureka.instance.homename}/info
eureka.instance.healthCheckUrlPath=https://${eureka.instance.homename}/health

1.4 健康检测

默认情况下,Eureka中各个服务实例的健康检查并不是通过spring-boot-actuator模块的/health端点来实现的,而是依靠客户端心跳的方式保持服务实例的存活,在Eureka的服务续约与剔除机制下,客户端的监控状态从注册到注册中心开始都会处于UP状态,除非心跳终止一段时间之后,服务注册中心将其剔除。默认的心跳实现方式可以有效检查客户端进程是否正常运作,但却无法保证客户端应用能够正常提供服务。由于大多数的应用都会有一些其他的外部资源依赖,比如数据库。缓存、消息代理等,如果应用与这些外部资源无法联通的时候,实际上已经不能提供正常的对外服务了,但此时心跳依然正常,所以它还是会被服务消费者调用,而这样的调用实际上并不能获得预期的结果。

在Spring Cloud Eureka中,我们可以通过简单的配置,把Eureka客户端的监控检查交给spring-boot-actuator模块的/health端点,以实现更加全面的健康状态维护。

详细步骤如下:

1 在pom.xml中加入spring-boot-starter-actuator模块的依赖。

2 在application.properties中增加参数配置eureka.client.healthcheck.enabled=true

3如果客户端/health端点做了特殊处理,需要参照1.3中的端点配置。

1.5 其他配置

其他配置附于后面的表清单中。

2 Eureka Client客户端特性配置

Eureka Client客户端特性配置是对作为Eureka客户端的特性配置,包括Eureka注册中心,本身也是一个Eureka Client。

Eureka Client特性配置全部在org.springframework.cloud.netflix.eureka.EurekaClientConfigBean中,实际上它是com.netflix.discovery.EurekaClientConfig的实现类,替代了netxflix的默认实现。

开头:eureka.client

3 server:Eureka Server注册中心特性配置

Eureka Server注册中心端的配置是对注册中心的特性配置。Eureka Server的配置全部在org.springframework.cloud.netflix.eureka.server.EurekaServerConfigBean里,实际上它是com.netflix.eureka.EurekaServerConfig的实现类,替代了netflix的默认实现。

Eureka Server的配置全部以eureka.server.xxx的格式进行配置。

4 Eureka Server注册中心仪表盘配置

注册中心仪表盘的配置主要是控制注册中心的可视化展示。以eureka.dashboard.xxx的格式配置。

5 Spring Cloud Eureka常用配置清单

清单来源:https://www.cnblogs.com/li3807/p/7282492.html(致谢)

配置名称 

默认值 

默认值

说明 

说明

服务注册中心配置

  

Bean类:org.springframework.cloud.netflix.eureka.server.EurekaServerConfigBean

eureka.server.enableSelfPreservation

false

关闭注册中心的保护机制,Eureka 会统计15分钟之内心跳失败的比例低于85%将会触发保护机制,不剔除服务提供者,如果关闭服务注册中心将不可用的实例正确剔除

服务实例类配置

  

Bean类:org.springframework.cloud.netflix.eureka.EurekaInstanceConfigBean

eureka.instance.preferIpAddress

false

不使用主机名来定义注册中心的地址,而使用IP地址的形式,如果设置了

eureka.instance.ip-address 属性,则使用该属性配置的IP,否则自动获取除环路IP外的第一个IP地址

eureka.instance.ipAddress

  

IP地址

eureka.instance.hostname

  

设置当前实例的主机名称

eureka.instance.appname

  

服务名,默认取 spring.application.name 配置值,如果没有则为 unknown

eureka.instance.leaseRenewalIntervalInSeconds

30

定义服务续约任务(心跳)的调用间隔,单位:秒

eureka.instance.leaseExpirationDurationInSeconds

90

定义服务失效的时间,单位:秒

eureka.instance.statusPageUrlPath

/info

状态页面的URL,相对路径,默认使用 HTTP 访问,如果需要使用 HTTPS则需要使用绝对路径配置

eureka.instance.statusPageUrl

  

状态页面的URL,绝对路径

eureka.instance.healthCheckUrlPath

/health

健康检查页面的URL,相对路径,默认使用 HTTP 访问,如果需要使用 HTTPS则需要使用绝对路径配置

eureka.instance.healthCheckUrl

  

健康检查页面的URL,绝对路径

服务注册类配置

  

Bean类:org.springframework.cloud.netflix.eureka.EurekaClientConfigBean

eureka.client.serviceUrl.

  

指定服务注册中心地址,类型为 HashMap,并设置有一组默认值,默认的Key为 defaultZone;默认的Value为 http://localhost:8761/eureka ,如果服务注册中心为高可用集群时,多个注册中心地址以逗号分隔。

如果服务注册中心加入了安全验证,这里配置的地址格式为:http://<username>:<password>@localhost:8761/eureka 其中 <username> 为安全校验的用户名;<password> 为该用户的密码

eureka.client.fetchRegistery

true

检索服务

eureka.client.registeryFetchIntervalSeconds

30

从Eureka服务器端获取注册信息的间隔时间,单位:秒

eureka.client.registerWithEureka

true

启动服务注册

eureka.client.eurekaServerConnectTimeoutSeconds

5

连接 Eureka Server 的超时时间,单位:秒

eureka.client.eurekaServerReadTimeoutSeconds

8

读取 Eureka Server 信息的超时时间,单位:秒

eureka.client.filterOnlyUpInstances

true

获取实例时是否过滤,只保留UP状态的实例

eureka.client.eurekaConnectionIdleTimeoutSeconds

30

Eureka 服务端连接空闲关闭时间,单位:秒

eureka.client.eurekaServerTotalConnections

200

从Eureka 客户端到所有Eureka服务端的连接总数

eureka.client.eurekaServerTotalConnectionsPerHost

50

从Eureka客户端到每个Eureka服务主机的连接总数

注册中心仪表盘配置

  

Bean类:org.springframework.cloud.netflix.eureka.server.EurekaDashboardProperties

eureka.dashboard.path

 

仪表盘访问路径

eureka.dashboard.enabled

true

是否启用仪表盘

 

 

  • 1
    点赞
  • 13
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
### 回答1: Spring Cloud Eureka 是一款服务注册和发现的组件,它可以让开发人员更方便地创建分布式系统。下面是 Spring Cloud Eureka 配置的详细解释: 1. 引入依赖 在项目的 pom.xml 文件中,需要添加以下依赖: ``` <dependency> <groupId>org.springframework.cloud</groupId> <artifactId>spring-cloud-starter-netflix-eureka-server</artifactId> <version>2.2.3.RELEASE</version> </dependency> ``` 2. 配置文件 在配置文件中需要添加以下内容: ``` spring: application: name: eureka-server server: port: 8761 eureka: instance: hostname: localhost client: register-with-eureka: false fetch-registry: false service-url: defaultZone: http://${eureka.instance.hostname}:${server.port}/eureka/ ``` 这里定义了服务的名称和端口,以及 Eureka Server 的配置。其中,`register-with-eureka` 和 `fetch-registry` 的值都设置为 false,表示该服务既不需要注册到 Eureka 服务器上,也不需要从 Eureka 服务器上获取服务注册表信息。 3. 启动 Eureka Server 在 Spring Boot 应用程序中添加 `@EnableEurekaServer` 注解即可启动 Eureka Server。例如: ``` @SpringBootApplication @EnableEurekaServer public class EurekaServerApplication { public static void main(String[] args) { SpringApplication.run(EurekaServerApplication.class, args); } } ``` 4. 注册服务 在需要注册到 Eureka 服务器上的服务中,需要添加以下依赖: ``` <dependency> <groupId>org.springframework.cloud</groupId> <artifactId>spring-cloud-starter-netflix-eureka-client</artifactId> <version>2.2.3.RELEASE</version> </dependency> ``` 在服务的配置文件中添加以下内容: ``` spring: application: name: service-hello eureka: client: service-url: defaultZone: http://localhost:8761/eureka/ ``` 其中,`application.name` 的值为服务的名称,`eureka.client.service-url.defaultZone` 的值为 Eureka Server 的地址。 5. 启动服务 在服务的主类中添加 `@EnableDiscoveryClient` 注解,表示该服务需要注册到 Eureka 服务器上。例如: ``` @SpringBootApplication @EnableDiscoveryClient public class ServiceHelloApplication { public static void main(String[] args) { SpringApplication.run(ServiceHelloApplication.class, args); } } ``` 通过以上步骤,就可以使用 Spring Cloud Eureka 实现服务注册和发现了。 ### 回答2: SpringCloud EurekaSpringCloud的核心组件之一,它提供了一种服务治理的解决方案。在分布式系统中,服务之间的相互调用是不可避免的,Eureka可以管理服务之间的依赖关系,确保服务间的通信和服务的高可用性。本文将介绍SpringCloud Eureka配置详解。 一、Eureka Server配置 1. 引入Eureka Server依赖 ```xml <dependency> <groupId>org.springframework.cloud</groupId> <artifactId>spring-cloud-starter-eureka-server</artifactId> </dependency> ``` 2. 配置application.yml ```yaml server: port: 8761 spring: application: name: eureka-server profiles: active: dev eureka: instance: hostname: localhost client: serviceUrl: defaultZone: http://localhost:8761/eureka/ server: enable-self-preservation: false eviction-interval-timer-in-ms: 30000 response-cache-update-interval-ms: 30000 registry-fetch-interval-seconds: 5 prefer-same-zone-eureka: true ``` 注释: 1. serviceUrl.defaultZone 是 Eureka Server 上的服务 URL,这里是设置为本地的 URL。 2. server.enable-self-preservation 为是否开启自我保护模式,开启后会自动将当前实例加入到Eureka Server的服务列表中。 3. eviction-interval-timer-in-ms:清理失效节点的时间间隔,默认为 60 秒。 4. registry-fetch-interval-seconds:Eureka Server 获取注册表数据的间隔时间,默认为 30 秒。 5. prefer-same-zone-eureka:是否优先选择同一个 Zone 的实例。 二、Eureka Client配置 1. 引入Eureka Client依赖 ```xml <dependency> <groupId>org.springframework.cloud</groupId> <artifactId>spring-cloud-starter-eureka</artifactId> </dependency> ``` 2. 配置application.yml ```yaml server: port: 8080 spring: application: name: service-one profiles: active: dev eureka: instance: instance-id: ${spring.application.name}:${random.int} prefer-ip-address: true # 避免hostname无法访问 client: serviceUrl: defaultZone: http://localhost:8761/eureka/ fetch-registry: true register-with-eureka: true healthcheck: enabled: true server: wait-time-in-ms-when-sync-empty: 0 ``` 注释: 1. instance.instance-id:实例的名称,建议加上随机数,避免实例名冲突。 2. client.fetch-registry:是否从 Eureka Server 获取注册表。 3. client.register-with-eureka:是否将服务注册到 Eureka Server。 4. healthcheck.enabled:是否开启健康检查,开启后Eureka Server能够监测到服务是否存活。 5. 实际开发中常用的还有其他的配置参数,例如eureka.instance.ip-address,eureka.instance.non-secure-port等。 三、实现服务注册 1. 实现服务接口 ```java @Service public class UserServiceImpl implements IUserService { @Override public User getUserById(int id) { return new User(id, "Tom"); } } ``` 2. 添加@EnableDiscoveryClient注解 ```java @EnableDiscoveryClient @SpringBootApplication public class ServiceOneApplication { public static void main(String[] args) { SpringApplication.run(ServiceOneApplication.class, args); } } ``` 3. 在Controller中使用RestTemplate调用其他服务 ```java @RestController public class UserController { @Autowired private RestTemplate restTemplate; @GetMapping("/user/{id}") public User getUserById(@PathVariable int id) { String url = "http://service-two/user/" + id; return restTemplate.getForObject(url, User.class); } } ``` 四、小结 本文简要介绍了 SpringCloud Eureka 的基本配置,包括Eureka Server和Eureka Client的配置,以及服务注册的实现。在实际开发中,我们根据具体需要进行更加详细的配置和实现。SpringCloud Eureka作为SpringCloud微服务体系的核心组件之一,是服务治理的不二选择。 ### 回答3: Spring Cloud Eureka是一个开源的服务注册中心,用来解决微服务系统中服务的注册与发现问题。在微服务架构中,由于服务数量庞大,需要有一个中心化的服务注册与发现机制来协调各个服务之间的调用关系。Spring Cloud Eureka就是这样一个核心组件,它可以帮助我们管理和调度微服务。下面,我们就来详细了解一下Spring Cloud Eureka配置。 在Spring Boot中,我们可以使用@EnableEurekaServer注解来启用Eureka Server。具体配置如下: ```java @SpringBootApplication @EnableEurekaServer public class EurekaApplication { public static void main(String[] args) { SpringApplication.run(EurekaApplication.class, args); } } ``` @EnableEurekaServer注解用来启用Eureka Server功能。Spring Boot应用启动后,Eureka Server也会自动启动。默认情况下,Eureka Server的端口号为8761。 接下来,我们需要在application.yml配置文件中添加如下配置: ```yaml server: port: 8761 # 指定Eureka Server的端口号 eureka: instance: hostname: localhost # Eureka Server的主机名,默认为localhost client: register-with-eureka: false # 是否向Eureka Server注册自己,默认为true fetch-registry: false # 是否检索服务列表,默认为true service-url: defaultZone: http://${eureka.instance.hostname}:${server.port}/eureka/ ``` 在配置文件中,我们可以指定Eureka Server的端口号、主机名、服务注册与检索等参数。其中,register-with-eureka参数表示是否向Eureka Server注册自己,默认为true,如果我们不想在Eureka Server上注册自己,可以将该参数设置为false。fetch-registry参数表示是否检索服务列表,默认为true,如果我们不想从Eureka Server上检索服务列表,可以将该参数设置为false。service-url参数是Eureka Server的服务地址,可以指定多个服务地址,以逗号分隔。 在服务提供者中,我们也需要添加Eureka Client依赖,并进行相关配置。在build.gradle文件中添加如下依赖: ```gradle dependencies { implementation 'org.springframework.cloud:spring-cloud-starter-netflix-eureka-client' } ``` 在application.yml配置文件中添加如下配置: ```yaml eureka: client: service-url: defaultZone: http://localhost:8761/eureka/ # 指定Eureka Server的服务地址 spring: application: name: service-hello # 服务名称,必须唯一 ``` 在服务启动时,会通过Eureka Client向Eureka Server注册自己,并提供服务。service-hello就是服务的名称,必须唯一。在客户端中,我们只需要使用服务名称来调用服务,Eureka Client会帮我们负责服务的发现和负载均衡。 以上就是Spring Cloud Eureka的基本配置。通过对Eureka Server和Eureka Client的配置,我们可以实现服务的注册、发现和负载均衡功能。在实际应用中,服务治理是微服务架构中不可或缺的一部分,Spring Cloud Eureka为我们提供了很好的解决方案。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值