第五章 SpringCloud-高可用的Eureka服务配置

高可用方案:

1. Eureka 集群: 多开几个 Eureka 服务,相互注册

  1. IDEA-》Run/Debug Configurations 复制一个EurekaServer启动服务,命名为 EurekaServer2
  2. 将EurekaServer1的注册地址改成 EurekaServer2 的地址
  3. 将EurekaServer2的注册地址改成 EurekaServer1的地址
  4. 客户端(包括Eureka注册中心),将所有的服务端地址配上,以免服务发生宕机时无其他服务可用
    相互注册后,信息将会同步
    在这里插入图片描述

当Eruka宕机时,只要提供者和消费者没有重启,他们之间仍然保留订阅信息,只要消费者没有重启则不会丢失之前订阅的信息

2. Eureka客户端:

服务提供者:服务提供者要向EurekaServer注册服务,并且完成服务持续等工作(心跳)

服务注册:
提供者在启动时,会检测配置中的:eureka.client.register-with-eureka=true 参数是否正确,如果为True,则会向EurekaServer发起一个Rest请求,并携带自己的元数据信息。Eureka Server会将这些信息保存到一个双层Map结构中。

第一层 Map 的Key 就是服务id,一般是配置中的spring.application.name 属性
第二层 Map的key是服务的实例id,一般是 host+ serviceid+port,例如: localhost:user-service:8010
值则是服务的实例对象,也就是说一个服务,可以同时启动多个不同实例,形成集群

服务续约:
在注册完成后,服务提供者会持续一个心跳(定时向EurekaServer发起Rest请求),告诉 EurekaServer:I’m alive , 成为服务续约

影响续约的两个重要参数:

   *# 最小维持心跳的时间,默认30S*
     eureka.instance.lease-renewal-interval-in-seconds: 30
    *# 最小的失效时间,默认90s*
     eureka.instancelease-expiration-duration-in-seconds: 90

获取服务列表:
当服务消费者启动时,会检车 eureka.client.fetch-registry=true 参数的值,如果为true,则会从EurekaServer服务列表只读备份,然后缓存在本地,并且每隔30S会重新获取并更新数据,我们可以通过下面的参数修改:

eureka.client.registry-fetch-interval-seconds:30

3. 失效剔除和自我保护
服务下线
当服务进行正常关闭操作时,会触发一个服务下线的REST请求给EurekaServer,告诉服务中心: 我要下线了,服务中心接受到请求后,将该服务改成下线状态

失效剔除
服务不能正常工作,如果服务中心未收到服务下线的请求,服务注册中心会在启动时会创建一个定时任务,默认每隔60S将当清清单中超时(默认90S) 没有续约的服务提出,这个操作叫失效剔除
配置:

自我保护
如果关停一个服务,会在Eureka面板中看到一条警告:
EMERGENCY! EUREKA MAY BE INCORRECTLY CLAIMING INSTANCES ARE UP WHEN THEY’RE NOT. RENEWALS ARE LESSER THAN THRESHOLD AND HENCE THE INSTANCES ARE NOT BEING EXPIRED JUST TO BE SAFE.
DS Replicas

这是触发Eureka的自我保护机制,当服务未按时进行心跳续约时,Eureka会统计服务实例最近15分钟心跳续约比例是否低于85% 。 生产环境下,网络延迟等原因,心跳失败实例可能超标,服务剔除列表并不妥当,因为服务可能没有宕机。 Eureka这段时间内不会剔除任何服务实例,直到网络恢复正常,保证了大多服务依然可用,也有可能获取到失败的服务实例,因此服务调用者必须做好服务的失败容错。

关停自我保护配置:

eureka.server.enable-self-preservation: false  #关闭自我保护模式(缺省为打开)
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值