欢迎访问 生活随笔!

生活随笔

当前位置: 首页 > 前端技术 > javascript >内容正文

javascript

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

发布时间:2023/12/20 javascript 45 豆豆
生活随笔 收集整理的这篇文章主要介绍了 SpringCloud2020 学习笔记(十五)Spring Cloud Eureka 自我保护机制 关闭 小编觉得挺不错的,现在分享给大家,帮大家做个参考.

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

为什么使用这个三个版本,是有讲究的;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服务端操作

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

完整yml配置

server:port: 7001eureka:instance:#eureka服务端的实例名称#hostname: localhosthostname: eureka7001.comclient:#false表示不向注册中心注册自己。register-with-eureka: false#false表示自己端就是注册中心,我的职责就是维护服务实例,并不需要去检索服务fetch-registry: falseservice-url:#设置与Eureka Server交互的地址查询服务和注册服务都要依赖这个地址#defaultZone: http://${eureka.instance.hostname}:${server.port}/eureka/#单机就是7001自己#defaultZone: http://eureka7001.com:7001/eureka/#集群指向其它eurekadefaultZone: http://eureka7002.com:7002/eureka/server:#关闭自我保护机制,保证不可用服务被及时踢除enable-self-preservation: false#续期时间,即扫描失效服务的间隔时间(缺省为60*1000ms)eviction-interval-timer-in-ms: 2000

在eureka客户端操作

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

完整yml配置文件

server:port: 8001spring:application:name: cloud-payment-servicedatasource: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=falseusername: rootpassword: rootmybatis:mapperLocations: classpath:mapper/*.xmltype-aliases-package: cn.cookily.springcloud.entities # 所有Entity别名类所在包eureka:client:#表示是否将自己注册进eurekaServer 默认为trueregister-with-eureka: true#是否从eurekaServer抓取已有的注册信息,默认为true,单节点无所谓,集群必须设置为true才能配合ribbon使用负载均衡fetch-registry: trueservice-url:#单机版#defaultZone: http://localhost:7001/eureka# 集群版defaultZone: http://eureka7001.com:7001/eureka,http://eureka7002.com:7002/eurekainstance: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

总结

以上是生活随笔为你收集整理的SpringCloud2020 学习笔记(十五)Spring Cloud Eureka 自我保护机制 关闭的全部内容,希望文章能够帮你解决所遇到的问题。

如果觉得生活随笔网站内容还不错,欢迎将生活随笔推荐给好友。