Spring Cloud Netflix之Eureka下篇原理

× 文章目录
  1. 1. 概述
    1. 1.1. 名词解释
  2. 2. 回顾Eureka架构图
    1. 2.1. Eureka架构图
  3. 3. 服务注册
    1. 3.1. 服务注册
  4. 4. Renew(服务续约)
    1. 4.1. 服务续约

摘要:本文主要介绍Eureka的工作原理,Eureka 组件分为两部分:Eureka serverEureka client。而客户端又分为 Application Service 客户端Application Client 客户端两种。Eureka 的工作机制每个 region 都有自己的 Eureka 服务器集群,每个 zone 至少要有一个 Eureka 服务器以应对 zone 瘫痪。

概述

名词解释

  1. Renew:我的理解是续约,为什么叫续约呢?
    Renew(服务续约)操作由Service Provider定期调用,类似于heartbeat。目的是隔一段时间Service Provider调用接口,告诉Eureka Server它还活着没挂,不要把它踢掉。通俗的说就是它们两之间的心跳检测,避免服务提供者被剔除掉。
  2. Cancel(服务下线)
    一般在Service Provider挂了shut down的时候调用,用来把自身的服务从Eureka Server中删除,以防客户端调用到不存在的服务。
  3. Fetch Registries(获取注册信息),
    Fetch Registries由Service Consumer(服务消费者)调用,用来获取Eureka Server上注册的服务info。
  4. Eviction(剔除)
    Eviction(失效服务剔除)用来定期在Eureka Server检测失效的服务,检测标准就是超过一定时间没有Renew的服务。

    回顾Eureka架构图

    Eureka架构图

    Eureka架构图如下图所示,github地址:https://github.com/netflix/eureka
    document地址:https://github.com/Netflix/eureka/wiki/Eureka-at-a-glance
    Eureka架构图
      从图中我们可以看出,Eureka 组件分为两部分:Eureka serverEureka client。而客户端又分为 Application Service 客户端Application Client 客户端两种。Eureka 的工作机制每个 region 都有自己的 Eureka 服务器集群,每个 zone 至少要有一个 Eureka 服务器以应对 zone 瘫痪。
      Application Service 在启动时注册到 Eureka 服务器,之后每 30 秒钟发送心跳以更新自身状态,即Renew(续约)。如果该客户端没能发送心跳更新,它将在 90 秒之后被其注册的 Eureka 服务器剔除,即Eviction(剔除)。来自任意 zone 的 Application Client 可以获取这些注册信息(每隔 30 秒查看一次)并依此定位到在任何区域可以给自己提供服务的提供者(即Fetch Registries),进而进行远程调用。

    服务提供者本身携带的Eureka Client既能服务注册服务续约,也能通过client定位服务调用其它的服务

服务注册

服务注册

服务注册源码分析,请参考:http://blog.xujin.org/sc/sc-eureka-register/

Renew(服务续约)

服务续约

Renew操作会在Service Provider端定期发起,用来通知Eureka Server自己还活着。 这里有两个比较重要的配置需要注意一下:

1
eureka.instance.leaseRenewalIntervalInSeconds

Renew频率。默认是30秒,也就是每30秒会向Eureka Server发起Renew操作。

1
eureka.instance.leaseExpirationDurationInSeconds

服务失效时间。默认是90秒,也就是如果Eureka Server在90秒内没有接收到来自Service Provider的Renew操作,就会把Service Provider剔除。

如果您觉得文章不错,可以打赏我喝一杯咖啡!