Eureka元数据
    标准元数据:主机名、ip地址、端口号等信息
    自定义元数据:可以使用eureka.instance.metadata-map在yml文件中配置,符合key-value形式,这些元数据可以远程客服端访问

    Eureka客服端
    服务注册
    1.当我们导入了eureka-client依赖坐标时,配置Eureka服务注册中心地址
    2.服务在启动时会向注册中心发起注册请求,携带服务元数据信息
    3.Eureka注册中心会把服务的信息保存在Map中
    服务续约
    服务每隔30秒就会向注册中心续约(心跳一次)也成为报活,如果没有续约,租约在90秒后到期,然后服务会被失效。每隔30秒的续约操作我们称之为心跳检测
    Eureka Client:30s续约一次,在Eureka Server更新自己的状态(Client进行配置)
    Eureka Server:90s还没有续约,将该微服务实力从服务注册表(Map)剔除(Client进行配置)
    Eureka Client:30s拉取服务最新的注册表并缓存到本地(Client进行配置)

    1. #向Eureka服务中心集群注册服务--默认不用配置
    2. eureka:
    3. instance: # 租约续约间隔时间,默认30秒
    4. lease-renewal-interval-in-seconds: 30
    5. # 租约到期,服务时效时间,默认值90秒,服务超过90秒没有发生心跳,
    6. EurekaServer会将服务从列表移除
    7. lease-expiration-duration-in-seconds: 90

    获取服务列表(服务注册表)(服务消费者)
    每隔30s服务会从注册中心拉取一份服务列表,这个时间可以通过配置修改。往往不需要我们调整

    1. #向Eureka服务中心集群注册服务
    2. erueka:
    3. client:
    4. #每隔多杰拉取一次服务列表
    5. registry-fatch-interval-seconds: 30

    1.服务消费者启动时,从Eureka Server服务列表获取只读备份,缓存到本地
    2.每隔30s,会重新获取并跟新数据
    3.每隔30s的时间可以通过配置eureka.client.registry-fetch-interval-seconds修改
    Eureka服务端
    服务下线
    1.当服务正常关闭操作时,会发送服务下线的REST请求给Eureka Server
    2.服务中心接收请求后,将该服务置为下线状态
    失效剔除
    Eureka Server会定时(间隔值默认为为60s,eureka.server.eviction-interval-timer-in-ms)进行检查,如果发现实例在一定时间(此值由客服端设置,默认为90s)内没有收到心跳,则会注销此实例。
    自我保护机制
    自我保护机制模式是一种针对网络异常波动的安全保护措施,使用自我保护模式能使Eureka集群更加的健壮、稳定的运行。
    自我保护机制的工作机制:如果15分钟内超过85%的客服端节点都没有正常心跳,那么Eureka就认为客服端与注册中心出现了网络故障,Eureka Server自动进入自我保护机制,此时有以下几种情况:
    1.Eureka Server不在注册列表中移除因为长时间没收到心跳检测而应该过期的服务
    2.Eureka Server仍然能够接收新服务的注册和查询请求,但是不会被同步到其他节点上,保证当前节点依然可用。
    3.当网络稳定时,当前Eureka Server新的注册信息会被同步到其它节点中
    所以Eureka Server可以很好的应对网络故障,不像zookeeper那样的半数机制(瘫痪一半以上,整个集群就不可用
    为什么会有自我保护机制?
    默认情况下,如果Eureka Server在一定时间内(默认90秒)没有接收到某个微服务实例的心跳,
    Eureka Server将会移除该实例。但是当网络分区故障发生时,微服务与Eureka Server之间无法正常通
    信,而微服务本身是正常运行的,此时不应该移除这个微服务,所以引入了自我保护机制。

    1. eureka:
    2. server: enable-self-preservation: false # 关闭自我保护模式(缺省为打开)
    3. #虽然关闭后不会被及时的剔除不可用的服务,但是不推荐