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认为各个节点都是平等的,几个节点挂掉不会影响正常节点的工作,剩余的节点依然可以提供注册和查询服务。
下面为自己总结的Eureka相关的知识点,有兴趣地小伙伴可以看一看,当然再点下赞就更棒了,创作不易!
Eureka系列(一)Eureka功能介绍
Eureka系列(二) 服务注册Server端具体实现
Eureka系列(三)获取服务Client端具体实现
Eureka系列(四) 获取服务Server端具体实现
Eureka系列(五) 服务续约流程具体实现
Eureka系列(六) TimedSupervisorTask类解析
Eureka系列(七) 服务下线Server端具体实现
Eureka系列(八)服务剔除具体实现
Eureka系列(九)Eureka自我保护机制
网友评论