“Eureka 集群原理”的版本间的差异
Jihongchang(讨论 | 贡献) (→解释说明) |
Jihongchang(讨论 | 贡献) (→关闭自我保护) |
||
(未显示同一用户的2个中间版本) | |||
第18行: | 第18行: | ||
如果重新启动 Eureka Server,会销毁所有实例。 | 如果重新启动 Eureka Server,会销毁所有实例。 | ||
+ | |||
+ | |||
+ | |||
+ | |||
+ | === 自我保护机制 === | ||
+ | Eureka 中有一种自我保护机制。 | ||
+ | |||
+ | 当15分钟内超过85%的 Eureka Client 都没有正常的心跳包时,Eureka 认为 Server 和 Client 之间出现了网络问题。 | ||
+ | |||
+ | 这个时候将不在因为没有收到心跳而销毁实例。 | ||
+ | |||
+ | Eureka Client 依然可以访问 Server,但是 Server 不会把内容同步到其他 Server 中。 | ||
+ | |||
+ | 当网络稳定后,Server 会把注册的信息同步到其他 Server 中。 | ||
+ | |||
+ | 在 Eureka 中自我保护机制默认是开启的: | ||
+ | |||
+ | <code>eureka.server.enable-self-preservation=true</code> | ||
+ | |||
+ | |||
+ | |||
+ | |||
+ | |||
+ | === 关闭自我保护 === | ||
+ | <syntaxhighlight lang="yaml"> | ||
+ | eureka: | ||
+ | server: | ||
+ | enable-self-preservation: false | ||
+ | eviction-interval-timer-in-ms: 10000 | ||
+ | </syntaxhighlight> |
2023年3月11日 (六) 03:16的最新版本
https://www.bilibili.com/video/BV1eU4y187zE/?p=12
解释说明
所有 Eureka Server 通过 Replicate 进行数据同步。
无论 Eureka Client 向哪个 Eureka Server 中注册信息,最终所有 Eureka Server 中都会存储注册信息,这些信息都缓存到 Eureka Server 的本地。
每个 Eureka Server 中同步后的数据都是完全相同的。
Eureka Client 向 Eureka Server 注册信息的时候我们称它为 Application Service,当获取注册的信息时称为 Application Client,由于可能出现某个 Eureka Client 既需要注册服务,又需要获取其他服务,所以很多 Eureka Client 既是 Application Service 又是 Application Client。
Eureka Client 启动后,每隔30秒向 Eureka Server 发送一次心跳,证明自己的可用,可通过 eureka.instance.lease-renewal-interval-in-seconds
修改心跳的时间间隔(默认值 30)。
当 Eureka Server 超过90秒没有收到提供者的心跳后,会认为这个提供者已经宕机,销毁实例。
可以通过 eureka.instance.lease-expiration-duration-in-seconds
修改时间(默认值 90)。
如果重新启动 Eureka Server,会销毁所有实例。
自我保护机制
Eureka 中有一种自我保护机制。
当15分钟内超过85%的 Eureka Client 都没有正常的心跳包时,Eureka 认为 Server 和 Client 之间出现了网络问题。
这个时候将不在因为没有收到心跳而销毁实例。
Eureka Client 依然可以访问 Server,但是 Server 不会把内容同步到其他 Server 中。
当网络稳定后,Server 会把注册的信息同步到其他 Server 中。
在 Eureka 中自我保护机制默认是开启的:
eureka.server.enable-self-preservation=true
关闭自我保护
eureka:
server:
enable-self-preservation: false
eviction-interval-timer-in-ms: 10000