理解Eureka的自我保护模式

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

图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/

原文发布于微信公众号 - A周立SpringCloud(gh_e6849e368b5f)

原文发表时间:2017-01-20

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

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏24K纯开源

分享一款基于Qt5的故障波形分发软件

搬运自我的博客园:www.cnblogs.com/csuftzzk

26700
来自专栏知晓程序

晓快讯 | 亲测!Google 版小程序终于能用了,和微信小程序比如何?

千呼万唤之下,号称「Google 版小程序」的 Instant App,最近终于面向用户开放使用了。

14350
来自专栏Java面试笔试题

选择使用Spring框架的原因(Spring框架为企业级开发带来的好处有哪些)?

26830
来自专栏java一日一条

Java管理扩展指南之JMX技术总览

JMX(Java管理扩展)系列旨在介绍包含于Java基础版本(Java SE)中的JMX技术。本系列提供了如何使用JMX重要技术特性的诸多示例。

12640
来自专栏程序你好

流行的9个Java框架介绍: 优点、缺点等等

在2018年,Java仍然是世界上最流行的编程语言。它拥有一个巨大的生态系统,在全世界有超过900万Java开发人员。虽然Java不是最直接的语言,但是您不需要...

24820
来自专栏互联网杂技

只需要一行代码能解决的面试题(-)

<!DOCTYPE html> <html> <head> <meta charset="utf-8"> <title></title> <style>...

33280
来自专栏james大数据架构

几十条业务线日志系统如何收集处理?

  在互联网迅猛发展的今天 各大厂发挥十八般武艺的收集用户的各种信息,甚至包括点击的位置,我们也经常发现自己刚搜完一个东西,再打开网页时每个小广告都会出现与之相...

362100
来自专栏技术墨客

Jolokia架构介绍 原

    虽然jolokia是为了满足JSR-160的要求,但是他和JSR-160连接器有巨大的差异。其中最引人注目的区别是jolokia传递数据是无类型的数据(...

12130
来自专栏IT大咖说

饿了么:基于SpringBoot的Web层服务开发实战!

摘要 在饿了么各类业务和运营系统中,普遍使用了基于Token的认证机制。本次分享,介绍一个通用的、可扩展的SpringSecurity Filter支撑这些业务...

37450
来自专栏Java架构

Spring Cloud 微服务的那点事总结

在详细的了解SpringCloud中所使用的各个组件之前,我们先了解下微服务框架的前世今生。

45830

扫码关注云+社区

领取腾讯云代金券