Eureka遵守AP,Zookeeper遵守CP

RDBMS(oracle/mysql、sqlServer) ====> ACID, 关系型数据库遵循ACID原则

NoSQL(redis/mongodb)====> CAP

一、ACID的介绍

ACID分别为:

原子性(Automicity):事务里面的所有操作,要么全部做完,要么全不做;事务成功的条件是事务里面的所有操作都成功,只要有一个操作失败,整个事务就失败,需要回滚;

一致性(Consistency):数据库要一直处于一致的状态,事务的运行不会改变数据库原本的一致性约束;也就是说:如果事务是并发多个,系统也必须如同串行事务一样操作。其主要特征是保护性和不变性(Preserving an Invariant),以转账案例为例,假设有五个账户,每个账户余额是100元,那么五个账户总额是500元,如果在这个5个账户之间同时发生多个转账,无论并发多少个,比如在A与B账户之间转账5元,在C与D账户之间转账10元,在B与E之间转账15元,五个账户总额也应该还是500元,这就是保护性和不变性。

隔离性(Isolation): 并发的事务之间不会互相影响;

持久性(Durability):在事务完成以后,该事务对数据库所作的更改便持久的保存在数据库之中,并不会被回滚。

二、CAP的介绍

CAP分别为:强制一致性(Consistency),可用性(Availability),分区容错性(Partition tolerance):

CAP的3进2:任何一个分布式系统中,无法同时满足CAP3个原则,最多只能满足其中的2个

CAP的理论核心:任何一个分布式系统中,无法同时满足强制一致性、可用性、分区容错性这3个需求;因此,根据CAP原则将NoSQL 数据库分成满足CA原则、CP原则、AP原则三大类:

CA原则:单点集群,满足一致性、可用性的原则,通常在扩展上不太强;

CP原则:满足一致性、分区容错的系统,通常性能不是特别高;

AP原则:满足可用、分区容错的系统,通常对一致性要求低一点;

由于当前的网络硬件肯定会出现延迟丢包的问题,所以分区容错性是我们必须实现的,所以分布式系统只能在强制一致性和可用性中权衡;

因此:Zookeeper保证的是CP,Eureka保证的是AP;

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

但是Zookeeper中会出现一种情况,当master节点因为网络故障和其他节点失去联系了时,剩余的节点会重新选举leader。但是选举leader的时间太长,30~120s,而且选举期间整个Zookeeper集群是不可用的,这就导致选举期间注册服务瘫痪。在云部署的环境下,因网络问题使得Zookeeper的master失去联系可能性是很大的,虽然最后服务能够恢复,但是较长时间的选举导致注册的长期不可用是不能容忍的;

Eureka的各个节点是平等的,几个节点挂掉不会影响正常节点的工作,剩余的节点依然可以提供注册和查询的服务。Eureka的客户端在向某个Eureka注册的时候,若发现连接失败,则会自动切换至其他节点,只要一台Eureka还在,就能保证注册服务可用(保证可用性),只不过查询到的信息可能不是最新的(不保证强一致性)。除此之外,Eureka还有一种自我保护机制,如果在15分钟内,超过85%的节点都没有正常的心跳,那么Eureka就认为客户端和注册中心之间出现了网络故障,此时会出现以下情况:

(1)Eureka不再从注册中心表中移除因为长时间没有收到心跳而应该过期的服务;

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

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

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

Eureka比Zookeeper好在哪里?的更多相关文章

  1. 作为注册中心Eureka比Zookeeper好在哪里?

    作为注册中心Eureka比Zookeeper好在哪里?    著名的CAP理论指出,一个分布式系统不可能同时满足C(一致性),A(可用性)和P(分区容错性).由于分区容错性P在是分布式系统中必须要保证 ...

  2. 服务注册中心,Eureka比Zookeeper好在哪里?

    著名的CAP理论指出,一个分布式系统不可能同时满足C(一致性).A(可用性).和P(分区容错性).由于分区容错性P在分布式系统中必须要保证的,因此我们只能在A和C之间进行权衡. 因此: Zookeep ...

  3. 作为服务注册中心,Eureka比Zookeeper好在哪里

    CAP是Consistency.Availablity和Partition Tolerance的缩写.一般的分布式系统最多满足其中两条.而Partition Tolerance是分布式系统的关键,因此 ...

  4. 【Eureka篇三】Eureka比Zookeeper好在哪里?(8)

    Eureka遵守AP,Zookeeper遵守CP RDBMS(oracle/mysql.sqlServer) ====> ACID, 关系型数据库遵循ACID原则 NoSQL(redis/mon ...

  5. 【Eureka】 作为服务注册中心,Eureka比Zookeeper好在哪里

    著名的 CAP 理论指出,一个分布式系统不可能同时满足 C(一致性) A(可用性) 和 P(分区容错性).由于分区容错性 P 是在分布式系统中必须保证的,因此我们只能在 A 和 C 之间进行权衡. Z ...

  6. 作为 务注册中心,Eureka比Zookeeper好在哪里?

    (1)Eureka保证的是可用性和分区容错性,Zookeeper 保证的是一致性和分区容错性 . (2)Eureka还有一种自我保护机制,如果在15分钟内超过85%的节点都没有正常的心跳,那么Eure ...

  7. eureka 和zookeeper 区别 优势【转】

    作为服务注册中心,Eureka比Zookeeper好在哪里 著名的CAP理论指出,一个分布式系统不可能同时满足C(一致性).A(可用性)和P(分区容错性).由于分区容错性在是分布式系统中必须要保证的, ...

  8. eureka 和zookeeper 区别 优势

    作为服务注册中心,Eureka比Zookeeper好在哪里 著名的CAP理论指出,一个分布式系统不可能同时满足C(一致性).A(可用性)和P(分区容错性).由于分区容错性在是分布式系统中必须要保证的, ...

  9. SpringCloud学习笔记(四):Eureka服务注册与发现、构建步骤、集群配置、Eureka与Zookeeper的比较

    简介 Netflix在设计Eureka时遵守的就是AP原则 拓展: 在分布式数据库中的CAP原理 CAP原则又称CAP定理,指的是在一个分布式系统中,Consistency(一致性). Availab ...

随机推荐

  1. C#反射_两合并更新实体

    #region 更新实体模型 /// <summary> /// 更新实体模型 /// </summary> /// <typeparam name="T&qu ...

  2. 构造命题公式的真值表--biaobiao88

    对给出的任意一个命题公式(不超过四个命题变元),使学生会用C语言的程序编程表示出来,并且能够计算它在各组真值指派下所应有的真值,画出其真值表. #include<iostream> usi ...

  3. Java自学-I/O Stream流

    Java的流 Stream 什么是流(Stream),流就是一系列的数据 步骤 1 : 什么是流 当不同的介质之间有数据交互的时候,JAVA就使用流来实现. 数据源可以是文件,还可以是数据库,网络甚至 ...

  4. 使用Git Bash向GitHub上传本地项目

    第一步:下载Git Bash(https://gitforwindows.org/),安装的过程是一路下一步,就不细说啦: 第二步:打开Git Bash,如下图显示: 第三步:现在让我们先放一放Git ...

  5. springboot启动报错,Error starting ApplicationContext. To display the conditions report re-run your application with 'debug' enabled.

    报错: Error starting ApplicationContext. To display the conditions report re-run your application with ...

  6. 如何在相同的类名中单独为选中元素设置JS

    很多时候,我发现对一个类名添加事件,每次都是所有同类名元素一起触发,使用 this可以仅对当前选中的元素应用事件 如 $('.guowai button').click(function() { /* ...

  7. Centos7 samba配置

    目录 免密码只读 加密码可读写 Samba配置了很多次,总是忘,现在写在博客里. 免密码只读 最主要的是免密配置,主要用到了两个配置,要写在[global]里: map to guest = Bad ...

  8. Linux小知识:CentOS使用Google-BBR加速网络

    准备一台centos的服务器查看系统内核:rpm -qa | grep kernel这里需要Linux内核在4.9 RC版本以上,如果版本不是请继续下面操作 访问https://elrepo.org/ ...

  9. 记一次wsl上的pip3安装失败问题 The following packages were automatically installed and are no longer required:

    转载请注明来源.https://www.cnblogs.com/sogeisetsu/.然后我的CSDNhttps://blog.csdn.net/suyues/article/details/103 ...

  10. 采坑复盘:logging日志能用封装后的函数来打日志,发现filename一直显示封装logging函数的方法所在的文件名

    问题: logging日志能用封装后的函数来打日志,发现filename一直显示封装logging函数的方法所在的文件名 原因: logging记录的是第一个函数执行所在的文件,那用封装的函数,首先执 ...