Eureka系列(一)Eureka功能介绍

Eureka核心功能点


服务注册(register):

  Client会发送一次Rest请求给Server端来实现注册,Server接受到请求会将服务信息存储起来,并将注册信息给同集群其他Server。

服务续约(renew):

  Client启动的时候,会开启一个定时任务(心跳)周期性发送一次服务续约地Rest请求,证明服务处于可用状态,防止Server剔除掉该可用服务。Eureka Client在默认的情况下会每隔30秒发送一次心跳来进行服务续约。

服务同步(replicate):

  Eureka Server之间会互相进行注册,构建Eureka Server集群,不同Eureka Server之间会进行服务信息同步,用来保证服务信息的一致性。

获取服务(get registry):

  Client启动的时候,会开启一个定时任务周期性发送一次获取服务的Rest请求,获取服务信息,然后整合到Client的本地缓存中。Eureka Client在默认的情况下会每隔30秒获取一次Server端服务信息。

服务调用:

  服务消费者在获取到服务清单后,可以根据清单中的服务信息,进行远程调用。

服务下线(cancel):

  当Eureka Client需要关闭或重启时,就会发送Rest请求给Server,Server端收到请求会更改实例状态并实例信息剔除掉,同时同步该服务下线消息给其他Server。

服务剔除(evict):

  有时候,服务实例可能会因为网络故障等原因导致不能提供服务,而此时该实例也没有发送请求给 Server来进行服务下线,所以,还需要有服务剔除的机制。Eureka Server在启动的时候会创建一个定时任 务,每隔一段时间(默认60秒),从当前服务清单中把超时没有续约(默认90秒, eureka.instance.leaseExpirationDurationInSeconds)的服务剔除。

自我保护机制:

  既然Eureka Server会定时剔除超时没有续约的服务,那就有可能出现一种场景,网络一段时间内发生了 异常,所有的服务都没能够进行续约,Eureka Server就把所有的服务都剔除了,这样显然不太合理。所以,就有了 自我保护机制,当短时间内,统计续约失败的比例,如果达到一定阈值,则会触发自我保护的机制,在该机制下, Eureka Server不会剔除任何的微服务,等到服务恢复正常后,再退出自我保护机制。自我保护开关(eureka.server.enable- self-preservation: false)


Eureka为什么是AP而不是CP呢

在解释之前我们需要先了解下分布式领域的CAP理论,
  C - Consistency 一致性:在分布式系统中的所有数据备份,在同一时刻是否同样的值(等同于所有节点访问同一份最新的数据副本)
  A - Availability 可用性:在集群中一部分节点故障后,集群整体是否还能响应客户端的读写请求。(对数据更新具备高可用性)
  P - Partition tolerance 分区容忍性:表示在出现分区的情况下依然能提供服务。

首先,因为CAP只能选择AP或者CP,Eureka在架构设计时就选择了AP放弃了CP,Eureka认为各个节点都是平等的,几个节点挂掉不会影响正常节点的工作,剩余的节点依然可以提供注册和查询服务。

原文地址:https://www.cnblogs.com/liujunj/p/13401800.html