一、介绍
eureka 和zookeeper 是我经常接触到的两个常见的注册中心中间件。一般情况,springcloud 项目都会用eureka做为注册中心,kafka用zk做为数据元数据管理和注册中心。
二、对比
- 集群结构:
zookeeper是leader follower主从结构,leader节点才可以进行写操作,follower负责同步数据和读:
eureka是peer对等架构,所有eureka节点是对等的,每个节点都可以进行数据读写。
2.数据一致性:
eureka 是AP架构,保证注册中心高可用,但不保证多个节点之间数据一致性,他只能保证服务列表在多个节点的最终一致 性
zookeeper是CP结构,CP保证保证数据一致性,leader节点写完数据,立刻会同步到follower节点,过半数节点写成功之后才算写数 据 成功。但是当leader节点挂了,整个zookeeper集群是不可用的,必须等到重新选举leader节点之后才可以提供服务。
3.时效性:
zookeeper时效性最好,服务实例挂了之后,zookeeper会立刻通知其他服务实例,其他服务实例会在很快的时间感知并把不可用实列剔除 调,
eureka时效性很差, 服务实例默认30秒发送一次心跳请求,eureka检查心跳时间,超过120m,才认为服务实例挂了,消费 者服务实例默认每30秒去eureka拉去一次服务列表,这样从某服务实例挂了到其他服务实例感知到,时间太长了。
4.网络通信:
zookeeper使用的是nio,reactor网络模型,网络并发能力很高
eurek使用的是http协议,相对网络能力差一点。
5.性能问题:
服务实例达到几千台,zookeeper和eureka 都会有性能上的压力,都不适合大规模集群部署。
本文对比了Eureka和Zookeeper两种常见的注册中心。Eureka采用对等架构,保证高可用但数据可能存在不一致性;而Zookeeper是CP结构,确保数据一致性,但在领导节点故障时会导致服务中断。此外,Zookeeper的时效性和网络并发能力优于Eureka,但在大规模集群场景下,两者都面临性能挑战。

1454

被折叠的 条评论
为什么被折叠?



