关系型数据库与非关系型数据库及其特性:

RDBMS(Relational Database Management System 关系型数据库) :mysql/oracle/sqlServer等   ========》ACID特性

NOSQL(Not Only SQL 非关系型数据库):redis/mongdb等  ========》 CAP特性

ACID:A(Atomicity)原子性、C(Consistency)一致性、I(Isolation)独立性、D(Durability)持久性

CAP:C(Consistency)强一致性、A(Availability)可用性、P(Partition tolerance)分区容错性

CAP三进二原则:

在任何一个分布式系统中都无法同时满足CAP,只能三个里面选择两个

CAP介绍及其对应产品:

 
NoSQL

CA:单点集群,满足一致性,可用性的系统,通常在扩展性上不太强大(产品:RDBMS)

CP:满足一致性,分区容忍性的系统,通常性能不是特别高(产品:MongoDB/HBase/Redis)

AP:满足可用性,分区容忍性的系统,通常可能对一致性要求更低一些(产品:CouchDB/Cassandra/DvnamoDB)

CAP理论就是说在分布式系统中,最多只能实现上面两点;而由于当前的网络硬件肯定会出现延迟丢包问题,所以分区容忍必须要实现。所以分布式系统只能在一致性和可用性之间进行权衡,没有NoSQL系统能同时保证CAP三点。

Zookeeper保证的是CP,Eureka保证的是AP:

Zookeeper保证CP:在集群中,当master节点因为网络故障与其他节点失去联系时,剩余节点会重新进行leader选举,选举leader的时间太长,30~120秒,且选举期间整个zk集群都是不可用的,这就导致在选举期间注册服务瘫痪,而在云部署的环境下,因网络问题使得zk集群失去master节点是较大概率发生的事,虽然服务最终能够恢复,但是长时间选举时间导致的注册长期不可用是不能容忍的。

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

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

2、Eureka任然能够提供服务注册和查询请求,但是占时不会将注册的服务同步到其他节点上(即保证当前节点依然可用)

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

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

SpringCloud_Eureka与Zookeeper对比的更多相关文章

  1. ZooKeeper对比Eureka

    刚开始看到Eureka这个单词的时候真心不会念,查了后发现他有一个好听的名字,来,大家一起念 [ jʊ'rikə ] 简介 Eureka本身是Netflix开源的一款提供服务注册和发现的产品,并且提供 ...

  2. keepalived和zookeeper对比

    https://blog.csdn.net/vtopqx/article/details/79066703keepalived与zookeeper都可以用来实现高可用,高可用一般跟负载均衡会一起考虑, ...

  3. 【0】Zookeeper Q&A

    1.Observer角色如何配置? Zookeeper集群中的中的Leader和Follower角色是由服务器启动时期的Leader选举产生的,Observer不参与选举,此角色的节点需要在配置文件z ...

  4. CAP理论/AP架构/CP架构

      原文地址:https://blog.csdn.net/u013058742/article/details/83541905  简书里的文章:Spring Cloud Eureka简介及与Zook ...

  5. Eureka -- 浅谈Eureka

    目录: 一:Eureka介绍 二:Eureka架构图 三:Eureka组件 四:Eureka作用 五:Eureka和Zookeeper对比 什么是Eureka 引入SpringCloud中文文档介绍 ...

  6. Spring Cloud第二篇 | 使用并认识Eureka注册中心

    ​ 本文是Spring Cloud专栏的第二篇文章,了解前一篇文章内容有助于更好的理解本文: Spring Cloud第一篇 | Spring Cloud前言及其常用组件介绍概览 ​​ 一.Sprin ...

  7. rocketMq和kafka的架构区别

    概述 其实一直想写一篇rocketMq和kafka在架构设计上的差别,但是一直有个问题没搞明白所以迟迟没动手,今天无意中听人点播了一下似乎明白了这个问题,所以就有了这篇对比. 这篇博文主要讲清楚kaf ...

  8. SpringCloud与微服务Ⅴ --- Eureka服务注册与发现

    一.Eureka是什么 Eureka是Netflix的一个子模块,也是核心模块之一.Eureka是一个基于REST的服务,用于定位服务,以实现云端中间层服务发现和故障转移.服务注册与发现对于微服务架构 ...

  9. Spring Cloud与Eureka

    Spring Cloud与Eureka 一.使用SpringCloud注册中心Eureka 1.1 Eureka和Zookeeper对比 1.1.1 Zookeeper保证CP 1.1.2 Eurek ...

随机推荐

  1. c#通过socket判断服务器连接是否正常

    判断Socket是否连接上,需要通过发包来确认. 之前确认都是调用调用socket的connected属性,然而该属性是上次的连接是否成功的结果,不及时. // 检查一个Socket是否可连接 pri ...

  2. python爬虫1

    1 网页结构 html:超文本标记语言------->类似人的鼻子耳朵,长在那里,大体骨架就是那个样子 css:层叠样式表------->这个是外观的深化,比如贴个双眼皮,橙色眼睛... ...

  3. Git设定不合并的文件

    一个最简单的做法,通过添加.gitattributes文件来完成 1 在要被合并的分支中设置 git config --global merge.ours.driver true设置git配置项mer ...

  4. Linux中buff/cache内存占用过高解决办法

    在Linux系统中,我们经常用free命令来查看系统内存的使用状态.在一个centos7的系统上,free命令的显示内容大概是这样一个状态: 这个命令几乎是每一个使用过Linux的人必会的命令,但越是 ...

  5. Prometheus入门到放弃(7)之redis_exporter部署

    redis监控,prometheus需要使用redis_exporter客户端. 这里我们采用docker方式部署,既可以部署在redis所在服务器,也可以部署在其他机器: docker镜像地址:ht ...

  6. Kafka-Docker:使用Docker运行Apache Kafka的步骤

    1.目标 在这个Kafka教程中,我们将学习Kafka-Docker的概念.此外,我们将在Kafka中看到Docker的卸载过程.这包括使用Docker 运行Apache Kafka的所有步骤  .除 ...

  7. 【NOIP2017】宝藏 题解(状压DP)

    题目描述 参与考古挖掘的小明得到了一份藏宝图,藏宝图上标出了 nnn 个深埋在地下的宝藏屋, 也给出了这 nnn 个宝藏屋之间可供开发的m mm 条道路和它们的长度. 小明决心亲自前往挖掘所有宝藏屋中 ...

  8. response letter

    1.Firstly, we would like to thank you for your kind letter and for reviewers’ constructive commentsc ...

  9. 3.01定义常量之define

    [注:本程序验证是使用vs2013版] #include <stdio.h> #include <stdlib.h> #include <string.h> #pr ...

  10. MVC比WebForm的优势,为什么使用MVC

    前言 如果你看了最近微软的议程,你会发现他们现在的焦点除了MVC,还是MVC.问题在于为什么微软如此热衷于丢弃传统的APS.NET Webform而转向ASP.NET MVC?本文就主要来讨论这个问题 ...