• Eureka自我保护机制


    自我保护机制是什么

    访问Eureka主页时,如果看到这样一段大红色的句子:

    默认情况下,如果eureka server在一定时间内没有接收到某个微服务实例的心跳,eureka server将会注销该实例(默认90秒),但是当网络分区发生故障时(延时,卡顿,拥挤)时,微服务与eureka server之间就无法正常通信,以上行为可能变得非常危险了,因为微服务本是其实是健康的,此时本不应该注销这个服务,eureka通过自我保护模式,来解决这个问题,当eureka server节点在短时间内丢失过多客户端时(可能是网络分区故障)那么这个节点就会进入自我保护模式。

    在自我保护模式中,eureka server会保护服务注册表中的信息,不在注销任何服务实例。
    它的设计哲学就是宁可保留错误的服务注册信息,也不盲目注销任何可能健康的服务实例,一句话理解,好死不如赖活着。

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

    保护模式主要用于一组客户端和eureka server之间存在网络分区场景下的保护,一旦进入了保护模式, eureka server将会尝试保护其服务注册表中的信息,不会在删除服务注册表中的数据,也就是不会注销任何微服务。简单的说,就是在某一时刻,某一个微服务突然不可用了,eureka server不会立刻清理,而是依旧对该微服务的信息进行保存。属于CAP理论的AP分支。

    导致原因

    为什么会有这种自我保护机制?
    为了防止eureka client可以正常运行,但是eureka server网络不通畅的情况下,eureka server不会立刻将eureka client 服务剔除

    禁止自我保护

    默认eureka server开启了自我保护,怎么关闭了?
    在eureka server端7001的application.yml添加配置

    server:
        enable-self-preservation: true  #禁用自我保护模式
        eviction-interval-timer-in-ms: 2000  #默认是90秒 改为2秒

    在进去eureka server注册中心就看不到红字了,就成功关闭了自我保护。

     cloud-provider-payment8001 provider关闭自我保护

     instance:
        #客户端系那个服务端发送心跳的时间间隔,单位为秒(默认30s)
        lease-expiration-duration-in-seconds: 1
        #服务端在收到最后一次心跳后等到时间上限,单位为秒,默认为(90s)。超时剔除服务
        lease-renewal-interval-in-seconds: 2
  • 相关阅读:
    [LeetCode]Set Matrix Zeroes
    计算4000000000内的最大f(n)=n值---字符串的问题python实现(五岁以下儿童)
    ajax提交与上传文件同步
    清理收缩VMware虚拟机MacOS系统的vmdk文件大小
    Codeforces Round #243 (Div. 1)-A,B,C-D
    oracle substr功能
    DP 水的问题
    [LeetCode]Evaluate Reverse Polish Notation
    2014鞍山直播比赛H称号HDU5077(DFS修剪+通过计)
    Android
  • 原文地址:https://www.cnblogs.com/mike-mei/p/15268084.html
Copyright © 2020-2023  润新知