理解Eureka的自我保护模式

简介: 本文我们来探讨Eureka的自我保护模式。自我保护模式是Eureka的重要特性。进入自我保护模式最直观的体现,是Eureka Server首页输出的警告,如图4-10所示。

本文我们来探讨Eureka的自我保护模式。自我保护模式是Eureka的重要特性。进入自我保护模式最直观的体现,是Eureka Server首页输出的警告,如图4-10所示。

4-10 保护模式.png

图4-10 Eureka Server自我保护模式界面

默认情况下,如果Eureka Server在一定时间内没有接收到某个微服务实例的心跳,Eureka Server将会注销该实例(默认90秒)。但是当网络分区故障发生时,微服务与Eureka Server之间无法正常通信,以上行为可能变得非常危险了——因为微服务本身其实是健康的,此时本不应该注销这个微服务。

Eureka通过“自我保护模式”来解决这个问题——当Eureka Server节点在短时间内丢失过多客户端时(可能发生了网络分区故障),那么这个节点就会进入自我保护模式。一旦进入该模式,Eureka Server就会保护服务注册表中的信息,不再删除服务注册表中的数据(也就是不会注销任何微服务)。当网络故障恢复后,该Eureka Server节点会自动退出自我保护模式。

综上,自我保护模式是一种应对网络异常的安全保护措施。它的架构哲学是宁可同时保留所有微服务(健康的微服务和不健康的微服务都会保留),也不盲目注销任何健康的微服务。使用自我保护模式,可以让Eureka集群更加的健壮、稳定。

在Spring Cloud中,可以使用eureka.server.enable-self-preservation = false 禁用自我保护模式。

拓展阅读

(1) Eureka官方关于自我保护模式的介绍:

https://github.com/Netflix/eureka/wiki/Understanding-Eureka-Peer-to-Peer-Communication

(2) Eureka的FAQ,其中讲到了自我保护模式:

https://github.com/Netflix/eureka/wiki/FAQ

(3) Eureka与Zookeeper做服务发现的对比:

http://dockone.io/article/78

(4) Eureka不注销任何微服务的讨论:

http://stackoverflow.com/questions/32616329/eureka-never-unregisters-a-service

节选自《Spring Cloud与Docker实战微服务》

目录详见:[http://www.itmuch.com/advertisment/my-spring-book/]

本文链接: http://www.itmuch.com/spring-cloud-sum/understanding-eureka-self-preservation/

**版权声明: **本博客由周立创作,采用 CC BY 3.0 CN 许可协议。可自由转载、引用,但需署名作者且注明文章出处。如转载至微信公众号,请在文末添加作者公众号二维码。(http://www.itmuch.com/advertisment/my-spring-book/)

目录
相关文章
|
JavaScript
Nuxt.js(Vue SSR)项目配置以及开发细节
Nuxt.js(Vue SSR)项目配置以及开发细节
669 0
|
域名解析 缓存 网络协议
提升你的外国服务器网站国内访问速度~
由于众所周知的原因,国内访问国外的服务器速度较慢。在没有特殊线路(直连、CN2GIA等)的加持下,路由线路左绕右绕,严重影响国内访问速度。 能使用国内服务器当然是最好的,但是高昂的流量&带宽价格以及域名备案门槛让人劝退。所以,本文章提供的加速方案是针对线路一般的海外服务器网站访问速度慢的问题。
9711 0
提升你的外国服务器网站国内访问速度~
|
存储 JavaScript 前端开发
VSCode安装配置使用教程(最新版超详细保姆级含插件)一文就够了
Visual Studio Code 是一个轻量级功能强大的源代码编辑器,支持语法高亮、代码自动补全(又称 IntelliSense)、代码重构、查看定义功能,并且内置了命令行工具和 Git 版本控制系统。适用于 Windows、macOS 和 Linux。它内置了对 JavaScript、TypeScript 和 Node.js 的支持,并为其他语言和运行时(如 C++、C#、Java、Python、PHP、Go、.NET)提供了丰富的扩展生态系统。为了不影响读者的沉浸式阅读学习,如需使用目录请在左侧使用即可。
8810 10
VSCode安装配置使用教程(最新版超详细保姆级含插件)一文就够了
|
11月前
|
机器学习/深度学习 人工智能 供应链
从“识图”到“购得”:图片搜索商品如何重构消费与供应链逻辑?
图片搜索正重塑电商:从“看到”到“买到”,只需一张图。它以AI解析视觉特征,精准匹配商品,打通C端购物与B端供应链,让找货、比价、溯源高效直达,成为连接视觉信息与交易的核心纽带。
|
存储 网络协议 Linux
【Linux】进程IO|系统调用|open|write|文件描述符fd|封装|理解一切皆文件
本文详细介绍了Linux中的进程IO与系统调用,包括 `open`、`write`、`read`和 `close`函数及其用法,解释了文件描述符(fd)的概念,并深入探讨了Linux中的“一切皆文件”思想。这种设计极大地简化了系统编程,使得处理不同类型的IO设备变得更加一致和简单。通过本文的学习,您应该能够更好地理解和应用Linux中的进程IO操作,提高系统编程的效率和能力。
868 34
|
数据采集 自然语言处理 文字识别
92页的llama 3.1技术报告,我替你们啃下来了
作者花了半个月时间,认真读完了llama 3.1技术报告,并总结成本文,希望能帮到对这个感兴趣的小伙伴们。
2420 9
92页的llama 3.1技术报告,我替你们啃下来了
|
开发工具 iOS开发 开发者
「Mac畅玩鸿蒙与硬件2」鸿蒙开发环境配置篇2 - 在Mac上安装DevEco Studio
本篇将专注于如何在 Mac 上安装鸿蒙开发工具 DevEco Studio,确保开发环境能够顺利搭建。完成安装后,可以正式开始鸿蒙应用的开发工作。
2028 1
「Mac畅玩鸿蒙与硬件2」鸿蒙开发环境配置篇2 - 在Mac上安装DevEco Studio
|
机器学习/深度学习 并行计算 计算机视觉
Jurgen、曼宁等大佬新作:MoE重塑6年前的Universal Transformer,高效升级
本文介绍了一种新型Transformer架构,旨在解决Universal Transformer (UT) 在参数-计算效率上的问题。MoEUT结合了Mixture-of-Experts (MoE) 方法和UT的优点,通过MoE Feedforward Blocks、MoE Self-Attention Layers、Layer Grouping及Peri-LayerNorm等技术创新,实现了更高效的计算和内存使用。实验结果显示,MoEUT在多个语言建模和代码生成任务上显著优于标准Transformer,且计算资源需求更低。
647 5
|
安全 数据库 数据安全/隐私保护
安全策略之授权强制访问控制(MAC)
【8月更文挑战第14天】
1846 2
|
XML JSON API
LangChain之各个输出解析器的使用
输出解析器负责获取 LLM 的输出并将其转换为更合适的格式。借助LangChain的输出解析器重构程序,使模型能够生成结构化回应,并可以直接解析这些回应。
889 1