服务注册中心Eureka与zookeeper的对比
1、架构分析
Eureka的架构是peer-to-peer,各个节点是平等的,各个服务可以向任意的实例节点进行注册,注册信息会同步到其他的server节点
Zookeeper是leader,follower的架构,只有leader负责写,数据会同步到follower,读可以在所有节点
2、数据一致性保证
分布式系统的CAP理论,C一致性、A可用性、P分区容错性
分布式系统P是必须满足的,所以分布式系统一般不是CP就是AP,C与A不可兼得
ZK是CP的,C数据的是强一致性,也就是写数据库到leader节点,leader节点是一定要把数据同步到follower的,保证各个节点的数据是强一致的。
大家想一想,这样是不会出现一个问题,就是如果leader节点挂了,服务就不可用了,必须等zk的集群重新选举出新的leader节点,服务才能恢复使用。极端情况下leader挂了可能一段时间内注册中心不可用,好处是各个节点的数据是强一致的。
Eureka server是AP,保证的可用性,如果其中一个挂掉了,可以使用其他节点进行服务的注册发现的功能,但是这时,各个节点中的数据就可能出现不一致的情况。Server集群中通过数据同步,数据会实现最终一致性。
3、服务发现的时效性
Zk的服务发现是秒级别的,性能很高,发现很快,通过监听事件感知
Eureka的时效性,默认配置,服务的发现时间要几十秒,极端情况下,甚至超过几分钟
4、服务注册容量
Zk不能支持太多的服务实例进行注册,实例太多,瞬间服务的通知太多,一般服务实例在几百到一千个
Eureka支持的容量,也不能太多,主要也是心跳,心跳还需要在server节点进行同步
本文对比了服务注册中心Eureka与Zookeeper的架构特点、数据一致性、服务发现时效性和注册容量。Eureka采用peer-to-peer架构,保证高可用性但数据最终一致性;Zookeeper为CP模型,提供数据强一致性但可能影响可用性。
1万+





