Spring Cloud系列教程第九篇-Eureka自我保护机制
Spring Cloud系列教程第九篇-Eureka自我保护机制
本文主要内容:
1:自我保护介绍
2:导致原因分析
3:怎么禁止自我保护
本文是由凯哥(凯哥Java:kagejava)发布的《spring cloud系列》教程的总第九篇:
本文是几个维度中的第一个维度:注册与发现维度配置中心管理之Eureka相关教程第六篇。
一:Eureka的自我保护机制是什么?
保护模式主要用于一组客户端和Eureka Server之间存在网络分区场景下的保护。一旦进入保护模式,Eureka Server将会尝试保护其服务注册表中的信息,不再删除服务注册表中的数据,也就是不会注销任何微服务。
简单一句话:
用电视剧新三国中,刘备说的:“宁可天下人负我,我不负天下人”。即:Eureka服务端,进入自我保护模式,就算所有的微服务真的都出问题了,也不会里面删除它们的。
二:为什么会出现自我保护机制?
一句话:某时刻某一个微服务不可用了,Eureka不会立刻清理,依旧会对该服务的信息进行保存。属于CAP里面的AP分支,也即是:保证可用性、分区容错性。
PS:CAP原则:分布式系统中,C:一致性;A:可用性;P:分区容错性。
我们来看看百度百科对CAP原则的详细介绍,如下图:
为什么会产生Eureka自我保护机制?
为例防止EurekaClient可以正常运行,但是与Eureka Server网络不通情况下,EurekaServer 不会立刻将EurekaClient服务剔除
默认情况下,如果EurekaServer在一定时间内没有收到某个微服务实例的心跳,EurekaServer将会注销该实例(默认90s).但是当网络分区故障发生(延时、卡顿、拥挤)时候,微服务与EurekaServer之间无法正常通信,以上行为可能变得非常危险了--因为微服务本身其实是健康的。此时本不应该注销这个微服务的。Eureka通过"自我保护模式"来解决这个问题--当EurekaServer节点在短时间内丢失过多客户端时候(可能发生了网络分区故障),那么这个节点就会进入自我保护模式了。
综上,自我保护是一种应对网络异常的安全保护措施。它的架构哲学是宁可同时保留所有微服务(健康的、不健康的微服务都会保留),也不盲目注销任何健康的微服务。
职用自我保护模式,可以让Eureka集群更加的健壮和稳定
三:怎么禁止Eureka的自我保护?
出厂默认,自我保护机制是开启的:eureka.server.enable-self-preservation=true
3.1:来看看开启自我保护模式的时候,Eureka服务端提示:
3.2:修改服务导关闭自我保护
修改Eureka Server项目:7001项目的yml配置:
关闭自我保护机制,同时修改心跳时间为2s.如下图:
重启Eureka服务项目,来看看关闭自我保护模式后提示:
我们来修改客户端(payment8001项目)的yml配置文件:
Eureka客户端向服务端发送心跳的时间间隔。单位秒。默认30s。修改为1s.
Eureka服务导在收到最后一次心跳后等待时间上限,超时将剔除服务。单位秒,默认90s,修改值为2s.如下图:
测试关闭自我保护机制:
启动服务端7001项目,再启动客户端8001项目,我们可以在页面查看客户端成功注册到服务端了。如下图:
我们关闭客户端8001项目后,间隔2秒+以后,在刷新页面.可以看到客户端被移除了。如下图:
当出现这个效果,说明,我们测试成功了。
当eureka关闭自我保护模式后,只要检查到客户端没有发送心跳检测,就将客户端从注册列表中移除了。这是很危险的。
用一句话来形容,关闭自我保护模式的Eureka服务:曹孟德曰:宁可我负天下人,不可天下人负我。
为什么说,没有了自我保护机制很危险?
有可能因为网络原因,没有发送心跳成功,但是实际上客户端是正常运行的。如果这个时候,直接移除掉客户端,可能造成服务大面积不能使用。是很危险的一个操作。所以,最好别关闭自我保护机制
《spring cloud系列教程》:
低调大师中文资讯倾力打造互联网数据资讯、行业资源、电子商务、移动互联网、网络营销平台。
持续更新报道IT业界、互联网、市场资讯、驱动更新,是最及时权威的产业资讯及硬件资讯报道平台。
转载内容版权归作者及来源网站所有,本站原创内容转载请注明来源。
- 上一篇
高校云桌面的“正确打开方式”是什么?
高校一直都是前沿技术率先应用的重要场所,云桌面技术也不例外。上世纪90年代开始高校就在不断尝试和应用类似于云桌面的方案,初衷是来解决大批量设备管理和维护的问题。从最初的无盘工作站到保护卡+同传的方案,再到后来的桌面虚拟化(VDI,Virtual Desktop Infrastructure)。但这些技术始终未能在高校场景得到大规模应用。究其原因,离高校教育教学业务场景太远,无法满足多样业务场景差异化的要求。 今天我们来看看云桌面在高校应用场景下的正确打开方式: 高校能够应用云桌面的场景比较多,如办公场景、多媒体教室、图书馆/电子阅览室、阅卷时、语音室、通用教学机房等。而且不同场景各具特点,对性能、网络、并发、延迟、管理维护各有侧重和要求,所以高校云桌面建设需要考虑多场景的特点,做到“资源统一,特性场景化”。具体可以从以下几个方面来看: 简化管理,提升运维效率是“敲门砖” 很多学校选择云桌面的初衷是提升管理维护效率,主要是因为学校桌面设备多,而传统电脑在部署,硬件维护,系统和软件更新升级,系统还原,病毒问题等方面带来了比较大的困扰,亟需一套好的方案来解决这些问题。 传统电脑带来的管理维护...
- 下一篇
pwnable.tw之3x17
前言 最近在pwnable做题遇到一道静态编译的二进制文件,并且是去除符号表的,从这道题可以学习到main函数的由来,以及start函数的部分知识。 题目 这里以pwnable.tw的3x17的题目作为例子。 检查保护 题目仅仅开启了NX的保护 可以看到题目采用的是静态链接 •静态链接:静态链接需要在编译链接的时候将需要执行的代码直接拷贝到调用处,这样可以做到程序发布的时候不需要依赖库,相反的程序占用的内存可能相对较大 •动态链接:动态链接则是当需要调用时,再将库中的代码加载到程序中去,在编译的时候只需要用符号和参数去代替这些代码。这样程序编译出来的内存较小,但是需要将库一起发布出去,缺少库则可能运行不了。 运行程序 程序需要输入地址,在输入数据,从这可以猜出程序有个任意地址写的漏洞。 拖入IDA分析 在使用ida逆向分析的时候可以发现,函数名已经被去除了,只剩下函数的地址。 在使用gdb去调试程序时,也可以看到符号表被去除 寻找主要的函数 由于我们在运行程序时可以看到提示的字符,因此可以通过字符去寻找主要的函数 双击点击字符 可以看到提示字符是保存在buf数组中,选中buf数组,按下...
相关文章
文章评论
共有0条评论来说两句吧...
文章二维码
点击排行
-
Docker使用Oracle官方镜像安装(12C,18C,19C)
- Springboot2将连接池hikari替换为druid,体验最强大的数据库连接池
- CentOS8编译安装MySQL8.0.19
- Docker快速安装Oracle11G,搭建oracle11g学习环境
- SpringBoot2配置默认Tomcat设置,开启更多高级功能
- MySQL8.0.19开启GTID主从同步CentOS8
- CentOS7,8上快速安装Gitea,搭建Git服务器
- Jdk安装(Linux,MacOS,Windows),包含三大操作系统的最全安装
- SpringBoot2编写第一个Controller,响应你的http请求并返回结果
推荐阅读
最新文章
- CentOS8编译安装MySQL8.0.19
- SpringBoot2整合Thymeleaf,官方推荐html解决方案
- 设置Eclipse缩进为4个空格,增强代码规范
- CentOS7,8上快速安装Gitea,搭建Git服务器
- Windows10,CentOS7,CentOS8安装MongoDB4.0.16
- CentOS7安装Docker,走上虚拟化容器引擎之路
- CentOS6,7,8上安装Nginx,支持https2.0的开启
- SpringBoot2全家桶,快速入门学习开发网站教程
- CentOS7编译安装Cmake3.16.3,解决mysql等软件编译问题
- Docker安装Oracle12C,快速搭建Oracle学习环境