springboot搭建eureka服务
springboot配置阿里云镜像:https://start.aliyun.com
1、单体eureka配置
1 |
|
2、集群eureka配置
1 |
|
3、 eureka自我保护:
自我保护模式正是一种针对网络异常波动的安全保护措施,使用自我保护模式能使Eureka集群更加的健壮、稳定的运行。默认情况下,如果在15分钟内超过85%的客户端节点都没有正常的心跳,那么Eureka就认为客户端与注册中心出现了网络故障(比如网络故障或频繁的启动关闭客户端),Eureka Server自动进入自我保护模式。不再剔除任何服务,当网络故障恢复后,该节点自动退出自我保护模式。
- eureka如果不配置eureka.server.enable-self-preservation为false,则默认开启自我保护机制。
- 当心跳检测有超过一定阈值的结点停止心跳时,eureka会触发自我保护机制。
- 自我保护机制开启后,停止心跳的服务不会被eureka直接剔除,这样会防止因为网络故障导致的心跳检测不到,但是结点依旧运行正常的情况下结点被剔除。
- eureka依旧可以正常注册新的服务,但是不会同步到心跳停止的服务上去。
- 在间隔一段时间后,eureka会重新向停止心跳的服务发送心跳检测,如果恢复正常会同步注册表相关的信息。
4、eureka优化配置
4.1 server端优化
通过设置自我保护优化
- 如果服务少的话不开启自我保护,因为服务太少,如果只是故障两三个节点也会占比很大,很容易达到eureka自我保护阈值。
- 如果服务多的话可以开启自我保护,这样可以有效防止网络波动带来的大面积心跳检测失败。
- 开启true关闭false:
enable-self-preservation: false
- 自我保护阈值设定:
renewal-percent-threshold: 0.85
剔除服务时间间隔
- 清理无效节点,默认60*1000毫秒,即60秒
- 自定义无效服务剔除间隔:eviction-interval-timer-in-ms: 1000
关闭从readOnly读注册表
- use-read-only-response-cache: false
readWrite 和 readOnly 同步时间间隔。
- response-cache-update-interval-ms: 1000
4.2 client端优化
- 拉取注册表间隔
- 表示eureka client间隔多久去拉取服务器注册信息,默认为30秒
- 可以自定义注册表拉取间隔:registry-fetch-interval-seconds: 5
- 心跳续约间隔
- eureka客户端需要多长时间发送心跳给eureka服务器,表明他仍然或者,默认30秒
- 自定义心跳续约间隔:lease-renewal-interval-in-seconds: 10
- 心跳过期时间
- eureka服务器在接受到实力的最后一次发出的心跳后,需要等待多久才可以将此实力删除
- 自定义心跳过期时间:lease-expiration-duration-in-seconds: 10
4.3 集群搭建
- service-url配置url时,将所有url打乱配置,即不同的server中的url配置顺序不要一样,这样可以让节点被均匀访问。
5、分区
eureka提供了region和zone两个概念来进行分区,这两个概念均来自于亚马逊的AWS:
- region:可以简单理解为地理上的分区,比如亚洲地区,或者华北地区,再或者北京等等,没有具体大小的限制。根据项目具体的情况,可以自行合理划分region。
- zone:可以简单理解为region内的具体机房,比如说region划分为北京,然后北京有两个机房,就可以在此region之下划分出zone1,zone2两个zone。