Eureka 简介


前言

“Eureka 来源于古希腊词汇,意为"发现了”,在软件领域,Eureka 是Netflix 在线影片公司开源的一个服务注册和发现组件,和其他的Netflix公司的服务组件(例如负载均衡器,熔断器,网关等)一起,被SpringCloud 社区整合为Spring Cloud Netflix 模块


一、Eureka 简介

和Zookeeper 类似,Eureka 是一个服务注册和发现的组件,最开始主要应用于亚马逊公司的云计算服务平台AWS,Eureka 分为 Eureka Server 和 Eureka Client,Eureka Server 为Eureka 服务注册中心,Eureka Client 为 Eureka 客户端。
服务注册是指:各个微服务启动时,将自己的网络地址等信息注册到Eureka,服务提供者将自己的信息如服务名,服务ip告知服务注册中心。

二、一些概念

  • Register — 服务注册

        当Eureka Client 向Eureka server 注册时,Eureka Client 
        提供自身的元数据,比如 ip 地址、端口、运行状况指标的URL,主页    
        地址信息。
    
  • Renew — 服务续约
    Eureka Client 在默认情况下,会每隔30s 发送一次心跳续约,通过服务续约来告知Eureka Server 该Eureka Client 依然可用,正常情况下,如果Eureka Server 90 s 内没有收到 Eureka Client 的心跳,Eureka Server 会将Eureka Client 从注册列表中删除,注意:官网建议不要更改服务续约的间隔时间

  • Fetch Registries —获取服务注册列表信息
    Eureka Client 从Eureka Server 获取服务注册表信息,并将其缓存到本地。Eureka Client 会使用服务注册列表信息查找其他服务信息,从而进行远程调用,该注册列表信息定时(每隔30s)更新一次,每次返回的注册列表信息可能与Eureka Client 缓存信息不同,Eureka Client 会重新获取整个注册表的信息。Eureka Server 缓存了所有的服务注册表信息,并进行了压缩。Eureka Server 和 Eureka Client 可以使用json 和 xml 的数据格式进行通信,默认,Eureka Client 使用 JSON 的方式来获取注册列表的信息

  • Cancel —服务下线
    Eureka Client 在程序关闭时可以向Eureka Server 发送下线请求,发送请求后,该客户端的实例信息将从 Eureka Server 的服务注册列表中删除。该下线请求不会自动完成,需要在程序关闭时调用以下代码:
    DiscoveryManager.getInstance().shudownComponent();

  • Eviction — 服务剔除
    在默认的情况下,Eureka Client 连续 90s 没有向 Eureka Server 发送服务续约(心跳)时,Eureka Server 会将该服务从服务列表中删除,即服务剔除

三、Eureka 自我保护

当有一个新的Eureka Server 出现时,他尝试从相邻的Peer 节点获取所有的服务实例注册信息。如果从相邻的Peer 节点获取信息出现了故障,Eureka Server 会尝试其他的 Peer 节点。如果 Eureka Server 能够成功获取所有的服务实例信息。则根据配置信息设置服务续约的阈值。在任何时间,如果Eureka Server 接收到服务续约低于为该值配置的百分比(默认15分钟内低于85%),则服务器开启自我保护模式,即不在剔除注册列表的信息。
这样做的好处在于,如果Eureka Server 自身的网络问题而导致 Eureka Client 无法续约,Eureka Client 注册列表信息不在被删除,也就是Eureka Client 还可以被其他服务消费。

Logo

权威|前沿|技术|干货|国内首个API全生命周期开发者社区

更多推荐