• CAP理论这一篇够了


    CAP

      C(Consistency):强一致性

      A(Availability):可用性

      P(Parition tolerance):分区容错性

      这三个基本需求,最多只能同时满足其中的两项,在分布式环境下因为P是必须的,因此往往选择就在 CP 或者 AP 中

    各种组合的场景

      CA - 这个比较特殊,在分布式场景下这个不可能被实现。一般在 单点 或 单点集群上来实现,满足一致性 和 可用性,通常扩展性上不太友好。

      CP - 满足一致性 和 分区容错性 的系统,通常性能不是特别高。

      AP - 满足可用性 和 分区容错性 的系统,通常可能对一致性要求比较低。

    Nacos/Eureka 和 Zookeeper 的区别

      结论:

        nacos/eureka 遵循 AP 原则

        zookeeper 遵循 CP 原则

      zookeeper 保证 CP 原则:

        当向注册中心查询服务列表时,我们可以容忍注册中心返回的是几分钟之前的注册信息,但不能接受服务直接 down 掉不可用。也就是说,服务注册功能对可用性的要求高于一致性。

        但是 zk 会出现这一种情况,当 master 节点因为网络原因与其他节点失去联系时,剩余注册功能就会重新进行 leader 选举。

        问题就在于 zk 选择 leader 的时间太长,30~120s,且选举期间整个 zk 集群都是不可用的,这就导致在选举期间注册服务瘫痪。

      nacos/eureka 保证 AP 原则:

        nacos/eureka 看明白了这一点,因此在设计时就优先保证可用性。nacos/eureka 各个节点都是平等的,几个节点挂掉不影响其他节点的正常工作,剩余节点仍然可以提供注册和查询服务。

        而如果 nacos 客户端向某个 nacos 注册 或 查询 发现链接失败时,会自动切换至其他节点,只要有一台 nacos 存在,就能保证服务的可用,只不过可能查到的信息不是最新的。

        除此以外,nacos 还有一种自我保护机制,如果在 15min 之内超过 85% 的节点都没有正常的心跳,那么 nacos 就认为客户端 与 注册中心 出现了网络故障。

        出现网络故障后,nacos 会做以下几件事情:

        1. nacos 不会从注册列表中 移除 因为长时间没收到心跳而过期的服务

        2. nacos 仍然能够接受新服务的 注册 和 查询 请求,但是不会被同步到其他节点上(保证当前节点仍然可用)

        3. 当网络稳定时,当前实例新的注册信息会被同步到其他节点上

        因此,nacos 可以很好的应对因网络故障导致部分节点失去联系的情况,而不会像 zookeeper 那样导致整个注册服务瘫痪。

  • 相关阅读:
    每日日报
    每日日报
    每日日报
    每日日报
    每日日报
    每日日报
    每日日报
    每日日报
    7.21Java入门--->第二节
    7.20Java入门--->第一节
  • 原文地址:https://www.cnblogs.com/liang1101/p/13186479.html
Copyright © 2020-2023  润新知