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认为各个节点都是平等的,几个节点挂掉不会影响正常节点的工作,剩余的节点依然可以提供注册和查询服务。

最新文章

  1. 在阿里云配置URL的REWRITE模式
  2. WinForm开发之取送货管理2
  3. Android实现与PHP服务器的交互
  4. Android 控件知识点
  5. libcurl多线程超时设置不安全(转)
  6. 大四实习准备4_java内部类
  7. javascript正则表达式 —— RegExp 对象
  8. 学习使用crosswalk
  9. 正则表达式(c#)
  10. wiringPi安装
  11. mount挂载和交换分区swap
  12. Mycat 常用管理命令说明
  13. PHP 面试知识点整理归纳
  14. PHP RSA加解密详解(附代码)
  15. [C#] C# 知识回顾 - 装箱与拆箱
  16. 初识HTTP协议web开发
  17. 面向对象编程之Java多态
  18. Object.assign()解释整理
  19. this guy gonna be a daddy
  20. getUserMedia API及HTML5 调用摄像头和麦克风

热门文章

  1. 启动时出现错误:*** Warning - bad CRC or NAND
  2. [java基础]复习 java三大特性,异常,接口,String
  3. Linux中redis服务开启docker运行redis并设置密码
  4. 【mq读书笔记】mq事务消息
  5. 训练yolo之前,anchor聚类问题
  6. JDK阅读之Enum
  7. VC与VB
  8. python语法元素的名称
  9. wirshark找不到本地接口
  10. Django连接redis