zoukankan      html  css  js  c++  java
  • Eureka组件、Eureka自我保护模式

    Eureka包含两个组件:Eureka Server和Eureka Client
     
    Eureka Server提供服务发现的能力,各个微服务启动时,会向Eureka Server注册自己的信息(例如IP、端口、微服务名称等),Eureka Serverh会存储这些信息
    Eureka Client是一个Java客户端,用户简化与Eureka Server的交互
    微服务启动后,会周期性(默认30秒)地向Eureka Server发送心跳以续约自己的“租期”
    如果Eureka Server在一定时间内没有j接收到某个微服务实例d的心跳,Eureka Server将会注销该实例(默认90)
    默认情况下,Eureka Server同时也Eureka Client。多个Eureka Server实例,互相之间通过复制的方式,来实现服务注册表中数据的异步
    Eureka Client会缓存服务注册表中的信息。这种方式有一定的优势,首先,微服务无须每次请求都查询Eureka Server,从而降低了Eureka Server的压力;其次,即使Eureka Server所有节点都宕掉,服务消费者依然可以使用缓存中的信息找到服务提供者并完成调用
     
    总结:Eureka通过心跳检查、客户端缓存等机制,提高了系统的灵活性、可伸缩性和可用性
     
     
    自我保护模式:
    默认情况下,如果Eureka Server在一定时间内没有接收到某个微服务实例的心跳,Eureka Server将会注销该实例(默认90秒)。但是当网络分区故障发生时,微服务与Eureka Server之间无法正常通信,以上行为可能变得非常危险,因为微服务本身其实是健康的,此时不应该注销这个微服务。
    自我保护模式就是用来解决此问题。
    当Eureka Server节点在短时间内丢失过多客户端时(可能发生了网络分区故障),那么这个节点就会进入自我保护模式。一旦进入该模式,Eureka Server就会保护服务注册表中的信息,不再删除服务注册表中的数据(也就是不会注销任何微服务)。当网络故障恢复后,该Eureka Server节点会自动退出自我保护模式。
     
    使用自我保护模式,可以让Eureka Server集群更加的健壮、稳定
    eureka.server.enable-self-preservation = false 关闭自我保护模式
     
    Eureka高可用:
    Eureka Server发生宕机,可以通过运行多个实例并相互注册的方式实现高可用部署,Eureka Server实例会彼此增量地同步信息,从而确保所有节点数据一致。
    1.复制Eureka Server项目,修改ArtifactId
    2.配置系统的hosts, 127.0.00.1 peer1 peer2
    3.修改application.yml,让两个节点的Eureka Server相互注册
     
    Eureka的元数据:
    Eureka的元数据有两种,分别是标准元数据和自定义元数据
    标准元数据指的是主机名、IP地址、端口号、状态页和健康检查等信息,这些信息都会被发布在服务注册表中,用于服务之间的调用。自定义元数据可以使用eureka.instance.metadata-map配置,这些元数据可以在远程客户端中访问
     
    多网卡环境下的IP选择:
    1.忽略指定名称的网卡
    spring:
        cloud:
            inetutils:
                ignored-interfaces:
                    - docker0
                    - veth.*
    eureka:
        instance:
            prefer-ip-address: true
     
    2.使用正则表达式,指定使用的网络地址
    spring:
        coud:
            inetutils:
                preferredNetworks:
                    - 192.168
                    - 10.0
     
    3.只使用站点本地地址
    spring:
        coud:
            inetutils:
                useOnlySiteLocalInterfaces: true
    eureka:
        instance:
            prefer-ip-address: true
    这样就可以强制使用站点本地地址
     
    4.手动指定IP地址
    eureka:
        instance:
            prefer-ip-address: true
            ip-address: 127.0.0.1
     
  • 相关阅读:
    _STORAGE_WRITE_ERROR_:./Application/Runtime/Cache/Home/f8995a0e1afcdadc637612fae5a3b585.php
    git 报错:没有权限 remote: error: unable to unlink old 'README.md' (Permission denied)
    深度学习入门实战(二)-用TensorFlow训练线性回归
    一条SQL搞定信息增益的计算
    Vue.js动画在项目使用的两个示例
    腾讯云安全:开发者必看|Android 8.0 新特性及开发指南
    腾讯云上Selenium用法示例
    一个只有99行代码的JS流程框架
    腾讯云上PhantomJS用法示例
    前端开发框架简介:angular和react
  • 原文地址:https://www.cnblogs.com/gqymy/p/10971734.html
Copyright © 2011-2022 走看看