1.什么是Eureka
Eureka是由Netflix公司开发,基于 REST 服务的服务发现框架(也即服务注册中心)。
SpringCloud已将其内化,集成在其子项目spring-cloud-netflix 中。因此,我们通常用到的eureka也都是springcloud的中的eureka。
2.Eureka与Zookeeper的区别
提到Eureka,通常也会想到Zookeeper,他们都可以充当服务中心,那么它们有什么区别呢?
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. 服务注册流程描述
结果自身的理解,简单地画了一张服务注册的流程图。