亲宝软件园·资讯

展开

F版本SpringCloud 5—Eureka集群和自我保护机制

鹿老师的Java笔记 人气:0
![](https://img2020.cnblogs.com/other/1003051/202003/1003051-20200331151512149-1728990050.png) > 源码地址:https://gitee.com/bingqilinpeishenme/Java-Tutorials ## 前言 上篇文章中,通过代码搭建了Eureka注册中心和客户端,是Eureka的简单应用,在本文中将会讲解更多关于Eureka服务端的应用以及原理。 ## Eureka 自我保护机制 ### 进入自我保护机制的标志【重点】 在使用Eureka的过程中,有时候会在Eureka服务端的页面上看到如下的内容: ![](https://img2020.cnblogs.com/other/1003051/202003/1003051-20200331151512897-152435384.png) 在监控页面上会看到一行红字儿,这些红字儿什么意思呢?代表着Eureka注册中心进入了自我保护机制。 ### 什么是自我保护机制【重点】 默认情况下,如果Eureka Server在一定时间内没有接受到服务实例的心跳,Eureka将会注销该实例(默认90秒).但是当网络分区发生故障时,微服务客户端和Eureka Server 无法正常通信。以上行为可能变得特别危险了,因为微服务本身是健康的,此时不能注销该服务实例。 Eureka通过自我保护机制来解决这个问题,当Eureka Server在短时间丢失过多的服务实例(可能发生了网络分区的故障),那么Eureka Server进入自我保护模式,一旦进入此模式,Eureka Server将会保护服务注册表中的信息,不再删除服务注册表中的数据(也就是不再注销任何的服务实例),当网络故障恢复后,Eureka Server会自动退出自我保护模式。 综上,**自我保护模式是一种应对网络故障的安全保护措施**,它的架构哲学是宁可同时保留所有的微服务,也不盲目注销任何健康的微服务,**使用自我保护模式可以让Eureka,更加健壮,稳定。** > 一句话:大面积出现客户端失联的时候,Eureka 注册中心进入自我保护模式,不注销任何实例 ### 自我保护机制的配置 在Eureka Server中配置关闭自我保护机制 ```properties #关闭自我保护机制 默认开启 eureka.server.enable-self-preservation=false ``` 如果想及时剔除失效的eureka服务除了关闭自我保护机制外,可以调低eureka的心跳值 ```properties eureka-server服务端 配置文件中我们添加如下配置 #关闭保护机制,以确保注册中心将不可用的实例正确剔除 eureka.server.enable-self-preservation=false #(代表是5秒,单位是毫秒,清理失效服务的间隔 ) eureka.server.eviction-interval-timer-in-ms=5000 ``` ```properties 客户端 配置文件中我们添加如下配置 # 心跳检测检测与续约时间 # 测试时将值设置设置小些,保证服务关闭后注册中心能及时踢出服务 # 配置说明 #  lease-renewal-interval-in-seconds 每间隔10s,向服务端发送一次心跳,证明自己依然”存活“ #  lease-expiration-duration-in-seconds 告诉服务端,如果我20s之内没有给你发心跳,就代表我“死”了,将我踢出掉。 eureka.instance.lease-renewal-interval-in-seconds=10 eureka.instance.lease-expiration-duration-in-seconds=20 ``` ## 注册中心高可用「注册中心集群」 **注册中心集群 防止单点故障** **Eureka可以通过运行多个实例并互相注册实现高可用部署,Eureka Server实例会彼此同步信息。** ### 创建并配置Eureka集群 Tips:代码在前上篇教程的基础上开发,源码地址:https://gitee.com/bingqilinpeishenme/Java-Tutorials **1.创建第二个Eureka服务端 eureka-server-8800** ![](https://img2020.cnblogs.com/other/1003051/202003/1003051-20200331151514406-917092014.png) **2.修改pom文件** ![](https://img2020.cnblogs.com/other/1003051/202003/1003051-20200331151517447-2052768663.png) **3.创建并修改启动类** ``` package com.lby; import org.springframework.boot.SpringApplication; import org.springframework.boot.autoconfigure.SpringBootApplication; import org.springframework.cloud.netflix.eureka.server.EnableEurekaServer; /** * @author luxiaoyang * @create 2020-03-30-20:36 */ @EnableEurekaServer @SpringBootApplication public class EurekaServer8800 { public static void main(String[] args) { SpringApplication.run(EurekaServer8800.class,args); } } ``` **4.写配置文件** ![](https://img2020.cnblogs.com/other/1003051/202003/1003051-20200331151521557-149520008.png) **5.修改注册中心eureka-server-8801的配置文件** > 注册中心之间的基本逻辑是:互相注册 > ![](https://img2020.cnblogs.com/other/1003051/202003/1003051-20200331151529273-784197760.png) 此时我们就拥有了一个Eureka注册中心的集群 **6.修改所有客户端的配置,客户端需要向 注册中心集群注册 所以需要配置所有注册中心的地址** ![](https://img2020.cnblogs.com/other/1003051/202003/1003051-20200331151535107-1222454971.png) ### 演示注册中心集群的效果 **1.启动所有的注册中心和客户端** **2.查看Eureka注册中心管理页面** 查看注册中心 8800 的管理页面,可以看到客户端可以正常注册 ![](https://img2020.cnblogs.com/other/1003051/202003/1003051-20200331151537966-1070719053.png) 查看注册中心 8801 的管理页面,可以看到客户端也可以正常注册 ![](https://img2020.cnblogs.com/other/1003051/202003/1003051-20200331151540949-1252199061.png) **3.关闭一个注册中心8800,注册中心8801不受任何影响,整个微服务的集群也不受任何影响,客户端可以正常注册** ## 总结 以上就是Eureka注册中心高可用和自我保护机制的相关内容。 > 源码地址:https://gitee.com/bingqilinpeishenme/Java-Tutorials **恭喜你完成了本章的学习,为你鼓掌!如果本文对你有帮助,请帮忙点赞,评论,转发,这对作者很重要,谢谢。** ![](https://img2020.cnblogs.com/other/1003051/202003/1003051-20200331151541730-472720964.png) 要掌握SpringCloud更多的用法,请持续关注本系列教程。 ## 求关注,求点赞,求转发 > 欢迎关注本人公众号:鹿老师的Java笔记,将在长期更新Java技术图文教程和视频教程,Java学习经验,Java面试经验以及Java实战开发经验。

加载全部内容

相关教程
猜你喜欢
用户评论