Eureka学习

1.什么是Eureka

Eureka是由Netflix公司开发,基于 REST 服务的服务发现框架(也即服务注册中心)。

SpringCloud已将其内化,集成在其子项目spring-cloud-netflix 中。因此,我们通常用到的eureka也都是springcloud的中的eureka。

 

2.Eureka与Zookeeper的区别

提到Eureka,通常也会想到Zookeeper,他们都可以充当服务中心,那么它们有什么区别呢?

它们的区别主要体现,在对于 CAP 原则的支持的不同。
 
所谓CAP指的是在一个分布式系统中,Consistency(一致性)、 Availability(可用性)、Partition tolerance(分区容错性), 三者不可兼得
对于分布式系统,网络环境相对是不可控的,出现网络分区是不可避免的,因此系统必须具备分区容错性。但系统不能同时保证一致性与可用性。即要么 CP ,要么 AP。
 
咱们的Eureka对应的就是AP模型,它牺牲了一致性,保证服务的可用性;而Zookeeper对应的是CP模型,强调一致性。
 
 

3.Eureka架构理解
 

上图为Eureka官网(https://github.com/Netflix/eureka/wiki/Eureka-at-a-glance)提供的架构图。

其中蓝色部分代表Eureka Server服务端节点集群,并且节点之间会进行Replicate(复制)操作,也即当某个服务注册到其中某一个节点如1c时,该节点需要将注册的实例信息同步给其它两个节点。而在同步节点的过程中,其它两个节点1d、1e始终都是可以对客户端提供服务的,这也是其可用性(A)的一种体现。而对应牺牲的一致性就在于,没有被同步到之前,1d、1e是看不到新注册的实例信息的。

其中绿色部分代表的是Eureka client客户端,由于使用生产消费者模型,又将其区分为Aplication Service(提供者 provider)Applicaiton client(消费者 consumer)

从图中可见,它们的交互关系如下:

服务端 - 服务端:进行实例信息同步,也即复制。

 

客户端 - 服务端:

- Register(注册实例信息);

- Renew(续约,也即默认每30秒发送心跳,证明服务还活着;若服务端默认90秒没获取到心跳,则认为该实例挂了,并从服务列表中剔除);

- Cancel(取消注册,也即通知服务端,将其从服务实例列表中剔除);

- Get Registry(获取服务端的注册表信息)

 

客户端 - 客户端:远程调用。

 

4.Eureka API说明

Eureka Server为不同的客户端,分别提供了api接口(https://github.com/Netflix/eureka/wiki/Eureka-REST-operations)。如图

其中Register new application instance 操作,需要满足官网提供的约束文件,如截图所示。

 

5. 服务注册流程描述

结果自身的理解,简单地画了一张服务注册的流程图。

 

 

 

 

 

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值