这篇文章,主要介绍微服务组件中Eureka常见的几个配置属性及其常见的几个概念【源代码地址】。
目录
一、Eureka常见配置属性
1.1、instance配置项
1.2、client配置项
1.3、server配置项
二、eureka常见概念
2.1、服务注册
2.2、服务发现
2.3、服务续约
2.4、服务剔除
2.5、自我保护机制
一、Eureka常见配置属性
这篇文章,主要介绍以下Eureka注册中心中常见的一些配置属性及其含义,Eureka注册中心大致可以分为三部分的配置属性,分别是:instance、client、server三部分,下面分别介绍三部分的配置属性。
1.1、instance配置项
instance中文意思是:实例,也就是说instance是对当前eureka实例的相关信息进行配置的,在eureka中会有一个【EurekaInstanceConfigBean】类专门用于记录instance相关的配置项信息,如下所示:
介绍其中几个常见的配置项:
# eureka配置
eureka:
instance:
# 当前实例的主机名称
hostname: localhost
# 实例的唯一ID
instance-id: id-20221331
# 注册到注册中心服务器上的应用名称
appname: demo-client-name
# 初始状态下,注册到eureka服务器上的状态,默认就是UP
initial-status: up
# 设置实例的IP地址
ip-address: 127.0.0.1
# 是否采用IP地址的格式显示在eureka服务器上
prefer-ip-address: true
# eureka客户端和eureka服务端进行服务续约的时间间隔,默认是30s
lease-renewal-interval-in-seconds: 30
# eureka服务端从可用服务列表剔除不可用服务的时间间隔,默认是90s,即:3个心跳检测间隔
lease-expiration-duration-in-seconds: 90
1.2、client配置项
client配置项是针对eureka客户端的,在eureka源代码中会有一个【EurekaClientConfigBean】类,这个类包含了所有client客户端相关的配置项信息,如下所示。
client客户端配置项常见的几个属性如下:
# eureka配置
eureka:
client:
# 是否将自己注册到eureka注册中心
register-with-eureka: true
# 是否从eureka注册中心获取注册信息
fetch-registry: true
# eureka服务端对外提供的服务地址
service-url:
defaultZone: http://localhost:8761/eureka/ # eureka服务端的地址
# 是否启用eureka客户端
enabled: true
# 是否开启eureka客户端的健康检查机制
healthcheck:
enabled: true
1.3、server配置项
server配置项只在eureka服务端才进行配置,并且这些配置项是依赖与【eureka-server】依赖,eureka中会有一个【EurekaServerConfigBean】类,专门用于保存server配置项,如下所示。
server配置项常见的几个属性如下所示:
# eureka配置
eureka:
server:
# 是否开启自我保护机制
enable-self-preservation: true
# 续约成功的阈值,当续约成功百分比低于85%,此时会自动开启自我保护机制
renewal-percent-threshold: 0.85
# 期望eureka客户端续约的时间间隔
expected-client-renewal-interval-seconds: 30
# 对于不可用服务间隔多久将其剔除,默认是0s,即:立即剔除
eviction-interval-timer-in-ms: 2000
二、eureka常见概念
2.1、服务注册
服务注册,是指:当一个微服务应用在启动的时候,会将自身的机器信息发送给eureka服务端,eureka服务端接收到信息之后会将其保存,这个过程叫做:服务注册。
简单来说,就是客户端发送一个请求给eureka服务端,让服务端将客户端的信息给保存起来。
2.2、服务发现
服务发现,是指:在所有微服务都启动之后,此时eureka服务端就已经保存了所有可用微服务的服务列表,当某个微服务需要调用其他微服务的时候,这个微服务只需要从eureka服务端的可用服务列表里面查找对应的微服务即可,这个过程叫做:服务发现。
简单理解,服务发现就是通过eureka服务端找到当前微服务需要调用的另一个微服务的可用服务地址。
2.3、服务续约
服务续约,是指:当某个微服务A在启动之后,它会将自身的信息注册到eureka服务端,那么在之后的运行过程中,eureka服务端需要知道微服务A是否还是可用的。一次服务续约,也可以叫做是一次心跳检测。
如何知道某个微服务是否可用???
- 要得知某个微服务是否可用,我们可以让客户端和eureka服务端进行一个续约操作,也就是说,eureka服务端需要让eureka客户端每间隔一定的时间就向Eureka服务端发起一个请求,这个请求是告诉eureka服务端,当前这个eureka客户端还活者。
- 这个【续约的时间间隔】默认是【30】秒,可以通过【lease-renewal-interval-in-seconds】属性自定义设置。
2.4、服务剔除
服务剔除,是指:当某个微服务不可用的时候,Eureka服务端会将那个不可用的微服务从所有的可用服务列表里面给删除掉,删除之后其他的微服务就不能够在进行服务的消费。
Eureka服务端剔除服务的机制:默认情况下,如果Eureka客户端和Eureka服务端超过3次没有进行服务续约,那么此时Eureka服务端就会认为客户端不可用,这个时候就会从可用服务列表剔除这个客户端服务。
- eureka默认情况下,是指定【90】秒内没有服务续约,就会剔除这个微服务。
- 也可以通过属性【lease-expiration-duration-in-seconds】自定义设置时间。
2.5、自我保护机制
前面说了,当Eureka服务端超过3个心跳没有进行服务续约,此时Eureka服务端就会将其剔除,但是不可能让你一直剔除,一直剔除那岂不是到最后都灭有可用服务了,所以Eureka设置了一个自我保护机制,这个自我保护机制是为了避免将所有的可用服务剔除。
什么时候会触发自我保护机制???
- 默认情况下,15分钟内,如果所有客户端的服务续约成功的次数占比低于85%,那么此时eureka服务端会进入自我保护模式。
- 处于自我保护模式下的eureka,不会再剔除可用服务,但是可以接收其他eureka客户端的服务注册信息。
到此,Eureka相关配置属性及其几个常见的概念术语介绍完啦。
综上,这篇文章结束了,主要介绍微服务组件中Eureka常见的几个配置属性及其常见的几个概念。