Spring Eureka功能介绍

参考

Spring Cloud针对服务注册与发现,进行了一层抽象,并提供了三种实现:Eureka(支持得最好)、Consul、Zookeeper。本文详细讲解Eureka的用法。

服务注册与发现
1、服务注册

2、服务发现
读取服务缓存:分为只读缓存、读写缓存
首次注册时获取全量服务信息,此后根据信息抓取频率从缓存(最近租约变更记录队列)中获取增量信息

3、服务续约
发送心跳

4、自我保护机制:默认情况下Eureka Server在一定时间内没有收到某个微服务实例的心跳,Eureka Server会将该实例注销(默认90S但是当发生网络故障时,微服务与Eureka Server之间无法正常通信,以上行为会变得非常危险——因为微服务实例本身是健康的,此时不应该注销这个微服务。Eureka通过“自我保护机制”类解决这个问题——当Eureka Server结点在短时间内丢失过多客户端时(可能发生网络故障),那么这个结点就会进入自我保护模式。一旦进入该模式,Eureka Server就会保护服务注册表的信息,不再删除服务注册表中的数据(也不会注销如何微服务)。当网络故障恢复后,该Eureka Server结点自动退出自我保护模式。保存措施:宁可保留错误的服务注册信息,也不盲目的清除服务实例。

Eureka client配置

#============================服务实例自身相关配置========================
#服务端口
server.port=8001
#server.servlet.context-path=/consumer
#注册到eureka服务端的微服务名称,相同的服务部署多个服务名要一致
spring.application.name=micro-consumer
#点击具体的微服务,左下角是否显示ip
eureka.instance.prefer-ip-address=true
#显示微服务的名称
eureka.instance.instance-id=micro-consumer-8001

#============================服务注册相关配置========================
#是否将自己注册为服务,默认为true
eureka.client.register-with-eureka=true
#注册到Eureka服务端的地址
#eureka.client.service-url.defaultZone=http://landiss7001.com:7001/eureka/,http://landiss7002.com:7002/eureka/,http://landiss7003.com:7003/eureka/
eureka.client.service-url.defaultZone=http://landiss7001.com:7001/eureka/

#============================服务发现相关配置========================
# 是否从 Eureka-Server 拉取服务实例注册信息,默认值为true
eureka.client.fetch-registry: true
# 从 Eureka-Server 拉取注册服务实例信息频率,默认:30 秒
eureka.client.registry-fetch-interval-seconds: 30 
        
#================================续约配置============================
# 心跳,租约续约频率,单位:秒
eureka.instance.lease-renewal-interval-in-seconds: 30
#  eureka server多久没有收到心跳,则表示对应的实例过期,单位:秒。
eureka.instance.lease-expiration-duration-in-seconds: 90
# Eureka Server端服务实例租约过期定时任务执行频率
eureka.server.eviction-interval-timer-in-ms: 60s 
# 开启健康检查(依赖spring-boot-starter-actuator)
#eureka.client.healthcheck.enabled=true

Eureka server配置

server.port=7001
#主机名
eureka.instance.hostname=landiss7001.com
#是否将自己注册为服务,默认为true,本实例是Eureka server服务端不把把自己注册到注册中心
eureka.client.register-with-eureka=false
#表示是否从Eureka Server获取注册信息,默认为true。
eureka.client.fetch-registry=false
#对外发布的注册中心地址
#eureka默认空间的地址http://${eureka.instance.hostname}:${server.port}/eureka/
#eureka.client.service-url.defaultZone=http://landiss7002.com:7002/eureka/,http://landiss7003.com:7003/eureka/
eureka.client.service-url.defaultZone=http://landiss7001.com:7001/eureka/
eureka.client.healthcheck.enabled=true
#eureka.client.service-url.defaultZone=http://localhost:7002/eureka/
#关闭自我保护(生产时打开该选项)
#eureka.server.enable-self-preservation=false
#扫描失效服务的间隔时间(缺省为60*1000ms)
#eureka.server.eviction-interval-timer-in-ms=5000
—转载请注明出处
原文地址:https://www.cnblogs.com/landiss/p/14607343.html