前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >SpringCloud2020 学习笔记(十五)Spring Cloud Eureka 自我保护机制 关闭

SpringCloud2020 学习笔记(十五)Spring Cloud Eureka 自我保护机制 关闭

作者头像
cookily
发布2021-12-07 15:34:06
3260
发布2021-12-07 15:34:06
举报
文章被收录于专栏:cookilycookily

SpringCloud2020 学习笔记(十五)Spring Cloud Eureka 自我保护机制

我使用spring boot 2.2.2

我使用spring cloud Hoxton.SR1

我使用spring cloud alibaba 2.1.0.RELEASE

为什么使用这个三个版本,是有讲究的;spring boot 2.2.2,spring cloud Hoxton.SR1,spring cloud alibaba 2.1.0.RELEASE

一.说人话就是

eureka关闭了自我保护机制后,遇到网络波动等不可控因素导致微服务心跳没及时响应时,会立即从eureka中剔除微服务,相反,eureka打开了自我保护机制,微服务还能有时间缓冲一下,待心跳从新连接上后,继续提供服务

二.官方对于自我保护机制的定义:

自我保护模式正是一种针对网络异常波动的安全保护措施,使用自我保护模式能使Eureka集群更加的健壮、稳定的运行。

三.自我保护机制的工作机制是:

如果在15分钟内超过85%的客户端节点都没有正常的心跳,那么Eureka就认为客户端与注册中心出现了网络故障,Eureka Server自动进入自我保护机制,此时会出现以下几种情况:

1.Eureka Server不再从注册列表中移除因为长时间没收到心跳而应该过期的服务。 2.Eureka Server仍然能够接受新服务的注册和查询请求,但是不会被同步到其它节点上,保证当前节点依然可用。 3.当网络稳定时,当前Eureka Server新的注册信息会被同步到其它节点中。

因此Eureka Server可以很好的应对因网络故障导致部分节点失联的情况,而不会像ZK那样如果有一半不可用的情况会导致整个集群不可用而变成瘫痪。

四.自我保护开关

Eureka自我保护机制,通过配置 eureka.server.enable-self-preservation 来打开(true默认)/禁用(false)自我保护机制,默认打开状态,建议生产环境打开此配置。

在eureka服务端操作

代码语言:javascript
复制
  server:
    #关闭自我保护机制,保证不可用服务被及时踢除
    enable-self-preservation: false
    #续期时间,即扫描失效服务的间隔时间(缺省为60*1000ms)
    eviction-interval-timer-in-ms: 2000

完整yml配置

代码语言:javascript
复制
server:
  port: 7001


eureka:
  instance:

    #eureka服务端的实例名称
    #hostname: localhost
    hostname: eureka7001.com

  client:

    #false表示不向注册中心注册自己。
    register-with-eureka: false

    #false表示自己端就是注册中心,我的职责就是维护服务实例,并不需要去检索服务
    fetch-registry: false

    service-url:

      #设置与Eureka Server交互的地址查询服务和注册服务都要依赖这个地址
      #defaultZone: http://${eureka.instance.hostname}:${server.port}/eureka/

      #单机就是7001自己
      #defaultZone: http://eureka7001.com:7001/eureka/

      #集群指向其它eureka
      defaultZone: http://eureka7002.com:7002/eureka/
  server:
    #关闭自我保护机制,保证不可用服务被及时踢除
    enable-self-preservation: false
    #续期时间,即扫描失效服务的间隔时间(缺省为60*1000ms)
    eviction-interval-timer-in-ms: 2000

在eureka客户端操作

代码语言:javascript
复制
    #Eureka客户端向服务端发送心跳的时间间隔,单位为秒(默认是30秒)
    lease-renewal-interval-in-seconds: 1
    #Eureka服务端在收到最后一次心跳后等待时间上限,单位为秒(默认是90秒),超时将剔除服务
    lease-expiration-duration-in-seconds: 2

完整yml配置文件

代码语言:javascript
复制
server:
  port: 8001

spring:
  application:
    name: cloud-payment-service

  datasource:
    type: com.alibaba.druid.pool.DruidDataSource            # 当前数据源操作类型
    driver-class-name: org.gjt.mm.mysql.Driver              # mysql驱动包
    url: jdbc:mysql://localhost:3306/springcloud2020?useUnicode=true&characterEncoding=utf-8&useSSL=false
    username: root
    password: root

mybatis:
  mapperLocations: classpath:mapper/*.xml
  type-aliases-package: cn.cookily.springcloud.entities    # 所有Entity别名类所在包

eureka:
  client:
    #表示是否将自己注册进eurekaServer 默认为true
    register-with-eureka: true
    #是否从eurekaServer抓取已有的注册信息,默认为true,单节点无所谓,集群必须设置为true才能配合ribbon使用负载均衡
    fetch-registry: true
    service-url:
      #单机版
      #defaultZone: http://localhost:7001/eureka
      # 集群版
      defaultZone: http://eureka7001.com:7001/eureka,http://eureka7002.com:7002/eureka
  instance:
    instance-id: payment8001 #注册中心看到的实例名
    prefer-ip-address: true     #访问路径可以显示IP地址
    #Eureka客户端向服务端发送心跳的时间间隔,单位为秒(默认是30秒)
    lease-renewal-interval-in-seconds: 1
    #Eureka服务端在收到最后一次心跳后等待时间上限,单位为秒(默认是90秒),超时将剔除服务
    lease-expiration-duration-in-seconds: 2

五.重启测试

1.先启动eureka7001

在这里插入图片描述
在这里插入图片描述

2.在启动payment8001

在这里插入图片描述
在这里插入图片描述

3.我们人为模拟下payment8001失联(我们直接关闭这个服务)

在这里插入图片描述
在这里插入图片描述

六.生产环境建议不要关闭自我保护

项目地址: https://github.com/cookily/cloud2020.git

本文参与 腾讯云自媒体分享计划,分享自作者个人站点/博客。
原始发表:2020-11-23 ,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • SpringCloud2020 学习笔记(十五)Spring Cloud Eureka 自我保护机制
  • 我使用spring boot 2.2.2
  • 我使用spring cloud Hoxton.SR1
  • 我使用spring cloud alibaba 2.1.0.RELEASE
  • 一.说人话就是
  • 二.官方对于自我保护机制的定义:
  • 三.自我保护机制的工作机制是:
  • 四.自我保护开关
  • 五.重启测试
  • 六.生产环境建议不要关闭自我保护
相关产品与服务
微服务引擎 TSE
微服务引擎(Tencent Cloud Service Engine)提供开箱即用的云上全场景微服务解决方案。支持开源增强的云原生注册配置中心(Zookeeper、Nacos 和 Apollo),北极星网格(腾讯自研并开源的 PolarisMesh)、云原生 API 网关(Kong)以及微服务应用托管的弹性微服务平台。微服务引擎完全兼容开源版本的使用方式,在功能、可用性和可运维性等多个方面进行增强。
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档