Spring Cloud Eureka 是Netflix 开发的注册发现组件,本身是一个基于 REST 的服务。提供注册与发现,同时还提供了负载均衡、故障转移等能力。
Eureka3个角色
- 服务中心
- 服务提供者
- 服务消费者。
注意:
- Eureka Server:服务器端。它提供服务的注册和发现功能,即实现服务的治理。
- Service Provider:服务提供者。它将自身服务注册到Eureka Server中,以便“服务消费者”能够通过服务器端提供的服务清单(注册服务列表)来调用它。
- Service Consumer:服务消费者。它从 Eureka 获取“已注册的服务列表”,从而消费服务。
比Zookeeper好在哪里呢
当向注册中心查询服务列表时,我们可以容忍注册中心返回的是几分钟以前的注册信息,但不能接受服务直接down掉不可用。也就是说,服务注册功能对可用性的要求要高于一致性。
注意:
Zookeeper会出现这样一种情况,当Master节点因为网络故障与其他节点失去联系时,剩余节点会重新进行leader选举。问题在于,选举leader的时间太长,30~120s,且选举期间整个zk集群都是不可用的,这就导致在选举期间注册服务瘫痪。
结论
Eureka看明白了这一点,因此在设计时就优先保证可用性。