专栏首页SpringBoot 核心技术SpringCloud组件:Eureka服务注册中心的失效剔除与自我保护机制

SpringCloud组件:Eureka服务注册中心的失效剔除与自我保护机制

Eureka作为一个成熟的服务注册中心当然也有合理的内部维护服务节点的机制,比如我们本章将要讲解到的服务下线失效剔除自我保护,也正是因为内部有这种维护机制才让Eureka更健壮、更稳定。

本章目标

了解Eureka是怎么保证服务相对较短时长内的有效性。

服务下线

迭代更新终止访问某一个或者多个服务节点时,我们在正常关闭服务节点的情况下,Eureka Client会通过PUT请求方式调用Eureka ServerREST访问节点/eureka/apps/{appID}/{instanceID}/status?value=DOWN请求地址,告知Eureka Server我要下线了,Eureka Server收到请求后会将该服务实例运行状态UP修改为DOWN,这样我们在管理平台服务列表内看到的就是DOWN状态的服务实例。

有关Eureka Server内部的REST节点地址,请访问SpringCloud组件:Eureka服务注册中心内置的REST节点列表来了解详情。

失效剔除

Eureka Server在启动完成后会创建一个定时器每隔60秒检查一次服务健康状况,如果其中一个服务节点超过90秒未检查到心跳,那么Eureka Server会自动从服务实例列表内将该服务剔除

由于非正常关闭不会执行主动下线动作,所以才会出现失效剔除机制,该机制主要是应对非正常关闭服务的情况,如:内存溢出杀死进程服务器宕机非正常流程关闭服务节点时。

自我保护

Eureka Server自我保护机制会检查最近15分钟内所有Eureka Client正常心跳的占比,如果低于85%就会被触发。 我们如果在Eureka Server的管理界面发现如下的红色内容,就说明已经触发了自我保护机制

EMERGENCY! EUREKA MAY BE INCORRECTLY CLAIMING INSTANCES ARE UP WHEN THEY'RE NOT. RENEWALS ARE LESSER THAN THRESHOLD AND HENCE THE INSTANCES ARE NOT BEING EXPIRED JUST TO BE SAFE.

当触发自我保护机制Eureka Server就会锁定服务列表,不让服务列表内的服务过期,不过这样我们在访问服务时,得到的服务很有可能是已经失效的实例,如果是这样我们就会无法访问到期望的资源,会导致服务调用失败,所以这时我们就需要有对应的容错机制熔断机制,我们在接下来的文章内会详细讲解这块知识点。

我们的服务如果是采用的公网IP地址,出现自我保护机制的几率就会大大增加,所以这时更要我们部署多个相同InstanId的服务或者建立一套完整的熔断机制解决方案。

自我保护开关

如果在本地测试环境,建议关掉自我保护机制,这样方便我们进行测试,也更准备的保证了服务实例有效性!!!

关闭自我保护只需要修改application.yml配置文件内参数eureka.server.enable-self-preservation将值设置为false即可。

总结

我们通过本章的讲解,了解到了Eureka Server对服务的治理,其中包含服务下线失效剔除自我保护等,对自我保护机制一定要谨慎的处理,防止出现服务失效问题。

源码位置

有问题要问?

如果你有技术相关的问题想要咨询恒宇少年,请去博客首页左侧导航栏,点击知识星球微信扫码加入我的星球。

与恒宇少年面对面

如果你喜欢恒宇少年的相关文章,那么就去微信公众号(恒宇少年)关注我吧!!! 当然你也可以去 SpringCloud码云源码 项目底部扫描微信公众号二维码关注我,感谢阅读!!!

学习目录推荐

开源信息

这段时间一直在编写开源的相关框架,致力于公司使用的框架升级以及开源计划,将公司使用到的工具以及插件进行升级重构并且开源。

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

我来说两句

0 条评论
登录 后参与评论

相关文章

  • SpringCloud组件:你的Eureka服务注册中心安全吗?

    在之前的章节我们讲到了SpringCloud组件:搭建Eureka服务注册中心,已经可以让我们自定义的微服务节点进行注册到该Eureka Server上,不过在...

    恒宇少年
  • SpringBoot核心技术:Actuator自定义节点路径 & 监控服务自定义配置

    路径都是一样的,很容易就会暴露出去,导致信息泄露,发生一些无法估计的事情,如果我们可以自定义节点的映射路径或者自定义监控服务的管理信息,这样就不会轻易的暴露出去...

    恒宇少年
  • 顺序消息管道《Message Pipe》v1.0.2版本发布

    它是minbox开源组织内的新成员,Message Pipe从字面的意思上理解为 "消息管道",它确实是一个消息管道的定位,是基于Redis实现的分布式顺序消息...

    恒宇少年
  • 跟我学Spring Cloud(Finchley版)-04-服务注册与服务发现-原理剖析

    地址硬编码问题——电影微服务中将用户微服务的地址写死,如果用户微服务地址发生变化,难道要重新上线电影微服务吗?

    用户1516716
  • 企业级公有云产品及优势盘点

    当下整个公有云产业,正呈现出一派欣欣向荣的景象,各路豪杰可谓是“八仙过海、各显神通”。 作为云产业的主要发展形态,公有云对企业来说既有着更高的门槛,也有着更广阔...

    静一
  • 利用Docker极速下载OpenJDK11源码

    这种下载方式要装pip,再用pip装mercurial,并且下载源码过程中也容易超时失败;

    程序员欣宸
  • 【Servicemesh系列】【章1】微服务发展路径(上)

    关于Servicemesh是什么,能做什么,此处不再进行赘述,相关文章已经非常之多。读者可以自行上网查阅。Servicemesh是一个比较新的名词,在2017年...

    吃橙子的狐狸
  • Dubbo剖析-服务提供方Invoker到Exporter的转换

    前面dubbo整体架构分析里面我们讲解了服务提供者暴露一个服务的详细过程是,首先具体服务的实现类转换为了Invoker对象,然后Invoker在转换为Expor...

    加多
  • 前端错误收集(Vue.js、微信小程序)

    随着公司业务的发展,前端项目也越来越多。有的时候客户反馈的一个问题,需要耗费大量的时间去查。错误信息不能第一时间获取,多少会给公司带来损失。这个时候我们就需要一...

    Fundebug
  • redis的过期策略和内存淘汰机制

    定期删除:指的是redis默认是每隔100ms就随机抽取一些设置了过期时间的key,检查其是否过期,如果过期就删除

    HUC思梦

扫码关注云+社区

领取腾讯云代金券