SpringCloud学习笔记(七)Eureka自我保护机制

专辑目录:SpringCloud学习日志

当服务集群之后,可能存在这种情况:某一个服务器宕机,导致集群服务中有一个无法访问。

由于默认使用轮询方式,所以可能在访问时访问到宕机的服务器导致该次访问失败。

假设十个会员服务器集群中有一个宕机了,那么十次会员服务访问中就会失败一次。

针对这种情况,Eureka默认采用Client端定时向Server端发送心跳包的方式来确认Client端的有效性,

若超过90秒没有收到心跳包,则认为该Client端失效,会将其剔除。

 

自我保护机制:由于上面提到的机制,

为了防止Client可以正常访问,但只是与Server访问不通,为了防止误剔除Client,

Server会将注册列表保护起来,此时不会再剔除Client。(15分钟内85%的Client没有发送心跳包就会开启)

 

一般在开发环境,因为eureka不会经常重启,所以我们会关闭自我保护机制

server:(我已经把注册中心的集群改回单机了,记得defaultZone要改回来)

 

server:
   ### 端口号
   port: 8100

### eureka 配置
eureka:
   client:
      ### 是否需要将自己注册给注册中心?   (因为自己是注册中心所以为false,集群的时候要true)
      register-with-eureka: false
      ### 是否需要检索服务中心(因为自己是注册中心,所以为false)
      fetch-registry: false
      service-url:
      ### 注册中心的地址
      defaultZone: http://127.0.0.1:8100/eureka/
   server:
      ### 在开发阶段,关闭自我保护机制
      enable-self-preservation: false
      ###  剔除服务的间隔,单位:毫秒
      eviction-interval-timer-in-ms: 2000

member:

#服务启动端口号
server:
  port: 8110

##服务别名(服务注册到eureka使用的名称) 如果有多个相同别名的服务注册,视为集群
spring:
  application:
    name: app-member

## eureka 配置
eureka:
  client:
    #### 注册中心的地址
    service-url:
      defaultZone: http://127.0.0.1:8100/eureka/
    ## 是否需要注册到eureka
    register-with-eureka: true
    fetch-registry: true

    instance:
      ### 开发、测试环境中设置间隔比较短
      ### eureka 客户端向服务端发送心跳的间隔,单位:秒。
      lease-renewal-interval-in-seconds: 1
      ### eureka 服务端在收到最后一次心跳等待的时间上限,单位:秒。超过这个时间就会剔除本服务。
      lease-expiration-duration-in-seconds: 2

至于如何验证,我们只要先启动server,然后以端口号1:8110启动member,再以端口号2:8111启动member,

然后关闭其中一个member,再访问就会发现ereka的服务列表已经剔除那个member。

但浏览器中访问还是会访问到关闭的member,因为eureka的缓存,30秒后就不会再访问到关闭的member了

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值