SpringCloud注册中⼼⾃我保护机制
微服务注册中心有哪些⾃我保护背景
⾸先对Eureka注册中⼼需要了解的是Eureka各个节点都是平等的,没有ZK中⾓⾊的概念, 即使N-1个节点挂掉也不会影响其他节点的正常运⾏。
默认情况下,如果Eureka Server在⼀定时间内(默认90秒)没有接收到某个微服务实例的⼼跳,Eureka Server将会移除该实例。但是当⽹络分区故障发⽣时,微服务与Eureka Server之间⽆法正常通信,⽽微服务本⾝是正常运⾏的,此时不应该移除这个微服务,所以引⼊了⾃我保护机制。
⾃我保护机制
官⽅对于⾃我保护机制的定义:
github/Netflix/eureka/wiki/Understanding-Eureka-Peer-to-Peer-Communication
⾃我保护模式正是⼀种针对⽹络异常波动的安全保护措施,使⽤⾃我保护模式能使Eureka集更加的健壮、稳定的运⾏。
⾃我保护机制的⼯作机制是如果在15分钟内超过85%的客户端节点都没有正常的⼼跳,那么Eureka就认为客户端与注册中⼼出现了⽹络故障,Eureka Server⾃动进⼊⾃我保护机制,此时会出现以下⼏种情况:
1、Eureka Server不再从注册列表中移除因为长时间没收到⼼跳⽽应该过期的服务。
2、Eureka Server仍然能够接受新服务的注册和查询请求,但是不会被同步到其它节点上,保证当前节点依然可⽤。
3、当⽹络稳定时,当前Eureka Server新的注册信息会被同步到其它节点中。
因此Eureka Server可以很好的应对因⽹络故障导致部分节点失联的情况,⽽不会像ZK那样如果有⼀半不可⽤的情况会导致整个集不可⽤⽽变成瘫痪。
⾃我保护开关
Eureka⾃我保护机制,通过配置 able-self-preservation来true打开/false禁⽤⾃我保护机制,默认打开状态,建议⽣产环境打开此配置。
服务器端配置:
1 2 3 4
eureka:
server:
# 测试时关闭⾃我保护机制,保证不可⽤服务及时踢出enable-self-preservation: false
客户配置:
1 2 3 4 5 6
# ⼼跳检测检测与续约时间
# 测试时将值设置设置⼩些,保证服务关闭后注册中⼼能及时踢出服务
eureka:
instance:
lease-renewal-interval-in-seconds: 1
lease-expiration-duration-in-seconds: 2
  以上配置说明
    lease-renewal-interval-in-seconds 每间隔1s,向服务端发送⼀次⼼跳,证明⾃⼰依然”存活“
    lease-expiration-duration-in-seconds  告诉服务端,如果我2s之内没有给你发⼼跳,就代表我“死”了,将我踢出掉。

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。