美文网首页
(4)ZooKeeper、Eureka对比

(4)ZooKeeper、Eureka对比

作者: hedgehog1112 | 来源:发表于2021-02-03 11:48 被阅读0次

    ZK:CP,不保证高可用,选主/半数以上不可用,无法获数据

    Eureka:AP,保证高可用,所有都挂,也能拿本地缓存数据

        注册中心,配置不常变,只有发版和机器故障时变。所以理论上Eureka好,现实用zk,因为集群不够大,基本不会遇到一半以上都挂。

    一、背景

    Eureka:1)Netflix开源,提供Java封装。2)节点间相互平等,只剩一个节点,也正常提供发现服务。3)所有都挂,EurekaClients(客户端)上也缓存服务调用信息。

    zk:Hadoop子项目,控制集群数据

    二、Zookeeper

    1、分布式数据存储场景,一致性应首先被保证:用zk获取服务列表时,如正在选主,或半数不可用,无法获得数据。

    2、对服务发现,AP胜过CP:即使不同节点信息不同不会造成灾难性后果。因为消费者能消费才最重要,不正确尝试消费,也好过不去消费(快速失败后,可更新配置并重试)

    三、Eureka

    Eureka Server是Peer to Peer对等通信,构建集群,解决单点问题,不同于zk选举

    1、去中心化,无master/slave区分,每个Peer都对等,互相注册提高可用性,每个节点要添加serviceUrl指向其他节点。每个节点都是其他副本

    2、某台宕机,Eureka Client自动切换到新Eureka Server节点,宕机服务器重新恢复后,Eureka再次纳入集群。节点接受请求时,所有操作都replicateToPeer(节点间复制),将请求复制到其他Eureka Server

    3、新节点启动后,1)先从邻近节点获取所有实例注册表信息,完成初始化。2)Eureka Server通过getEurekaServiceUrls()获取所有节点心跳方式定期更新

    4、默认为90秒,没收某个服务心跳,Server注销该实例(eureka.instance.lease-expiration-duration-in-seconds配置)。丢失过多心跳时(如网络分区故障),节点进入自我保护模式

        「什么是自我保护模式?」

    Server每分钟收到心跳数量低于阈值(instance数量(60/每个instance的心跳间隔秒数)自我保护系数),且持续15分钟触发自我保护不再注销任何服务实例。心跳数恢复阈值,自动退出

    通过eureka.server.enable-self-preservation = false来禁用,eureka.instance.lease-renewal-interval-in-seconds更改心跳间隔,eureka.server.renewal-percent-threshold可以用来修改自我保护系数(默认0.85)

    https://mp.weixin.qq.com/s/Y4RPo5fvPOlIrW-9zVsBCQ

    相关文章

      网友评论

          本文标题:(4)ZooKeeper、Eureka对比

          本文链接:https://www.haomeiwen.com/subject/hpsvwctx.html