栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Java

Eureka自我保护机制

Java 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

Eureka自我保护机制

介绍

保护模式主要用于一组客户端和Eureka Server之间存在网络分区场景下的保护。一旦进入保护模式,Eureka Server将会尝试保护其服务注册表中的信息,不再删除服务注册表中的数据,也就是不会注销任何微服务。这符合CAP理论中的AP(高可用性、分区容错性)

网络分区见博客:https://www.cnblogs.com/sunlong88/p/13180586.html

故障现象

当eureka的web界面出现了如下提示,则说明eureka进入了自我保护模式

自我保护模式的激活条件

  • Renews threshold:Eureka Server 期望每分钟收到客户端实例续约的总数
  • Renews (last min):Eureka Server 最后 1 分钟收到客户端实例续约的总数。

自我保护模式被激活的条件是:在 1 分钟后,Renews (last min) < Renews threshold
然后等待五分钟就会出现上面的故障现象,红色的提示信息

Renews threshold和Renews(last)的计算方式是什么? Renews threshold的计算方式

Renews threshold 计算代码:

this.expectedNumberOfRenewsPerMin = count * 2;
this.numberOfRenewsPerMinThreshold = (int) (this.expectedNumberOfRenewsPerMin * serverConfig.getRenewalPercentThreshold());
// this.numberOfRenewsPerMinThreshold就是Renews threshold

变量介绍

  • count:表示服务的数量
  • serverConfig.getRenewalPercentThreshold():默认是0.85,可以通过eureka.server.renewal-percent-threshold进行配置

对应源码在AbstractInstanceRegistry类中的openForTraffic方法

public void openForTraffic(ApplicationInfoManager applicationInfoManager, int count) {
   this.expectedNumberOfRenewsPerMin = count * 2;
   this.numberOfRenewsPerMinThreshold =
           (int) (this.expectedNumberOfRenewsPerMin * serverConfig.getRenewalPercentThreshold());
    }
Renews(last min)的计算方式

Renews(last min)计算代码

this.expectedNumberOfRenewsPerMin = count * 2;
// Renews(last min)的值就是this.expectedNumberOfRenewsPerMin表示期望每分钟最大续约次数

数值2表示每分钟两个心跳

自我保护模式详细说明

默认情况下,当EurekaServer在一定时间内(默认90秒)没有接收到某个客户端实例的心跳,EurekaServer将会注销该实例。
但是如果Eureka Server 在运行期间会去统计心跳失败比例在 15 分钟之内是否高于 85%,如果高于 85%,Eureka Server 会将这些实例保护起来,让这些实例不会过期,但是在保护期内如果服务刚好这个服务提供者非正常下线了,此时服务消费者就会拿到一个无效的服务实例,此时会调用失败,对于这个问题需要服务消费者端要有一些容错机制,如重试,断路器等。

推荐指数⭐参考博客https://www.cnblogs.com/xishuai/p/spring-cloud-eureka-safe.html
推荐指数⭐⭐参考博客https://www.cnblogs.com/zhixiang-org-cn/p/11756764.html

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/631701.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号