Eureka对比Zookeeper、CAP定理

eureka对比Zookeeper:

Zookeeper在设计的时候遵循的是CP原则,即一致性,Zookeeper会出现这样一种情况,当master节点因为网络故障与其他节点失去联系时剩余节点会重新进行leader选举,问题在于,选举leader的时间太长:30~120s,且选举期间整个Zookeeper集群是不可用的,这就导致在选举期间注册服务处于瘫痪状态,在云部署的环境下,因网络环境使Zookeeper集群失去master节点是较大概率发生的事情,虽然服务能够最终恢复,但是漫长的选举时间导致长期的服务注册不可用是不能容忍的。

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

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

3: 当网络稳定后,当前实例新的注册信息会被同步到其它节点中

CAP定理的含义:

1998年,加州大学的计算机科学家 Eric Brewer 提出,分布式系统有三个指标。

Consistency  ---一致性
Availability  ---可用性
Partition tolerance ---分区容错性

他们第一个字母分别是C,A,P

Eric Brewer 说,这三个指标不可能同时做到。这个结论就叫做 CAP 定理。

Partition tolerance

中文叫做"分区容错"。

大多数分布式系统都分布在多个子网络。每个子网络就叫做一个区(partition)。分区容错的意思是,区间通信可能失败。比如,一台服务器放在本地,另一台服务器放在外地(可能是外省,甚至是外国),这就是两个区,它们之间可能无法通信。

上图中,S1 和 S2 是两台跨区的服务器。S1 向 S2 发送一条消息,S2 可能无法收到。系统设计的时候,必须考虑到这种情况。

一般来说,分区容错无法避免,因此可以认为 CAP 的 P 总是成立。CAP 定理告诉我们,剩下的 C 和 A 无法同时做到。

Consistency

Consistency 中文叫做"一致性"。意思是,写操作之后的读操作,必须返回该值。举例来说,某条记录是 v0,用户向 S1 发起一个写操作,将其改为 v1。

接下来用户读操作就会得到v1。这就叫一致性。

问题是,用户有可能会向S2发起读取操作,由于G2的值没有发生变化,因此返回的是v0,所以S1和S2的读操作不一致,这就不满足一致性了

为了让S2的返回值与S1一致,所以我们需要在往S1执行写操作的时候,让S1给S2也发送一条消息,要求G2也变成v1

这样子用户向G2发起读操作,就也能得到v1

Availability

Availability 中文叫做"可用性",意思是只要收到用户的请求,服务器就必须给出回应。

用户可以选择向 S1 或 S2 发起读操作。不管是哪台服务器,只要收到请求,就必须告诉用户,到底是 v0 还是 v1,否则就不满足可用性。

Consistency 和 Availability 的矛盾

一致性和可用性,为什么不可能同时成立?答案很简单,因为可能通信失败(即出现分区容错)。

如果保证 S2 的一致性,那么 S1 必须在写操作时,锁定 S2 的读操作和写操作。只有数据同步后,才能重新开放读写。锁定期间,S2 不能读写,没有可用性不。

如果保证 S2 的可用性,那么势必不能锁定 S2,所以一致性不成立。

综上所述,S2 无法同时做到一致性和可用性。系统设计时只能选择一个目标。如果追求一致性,那么无法保证所有节点的可用性;如果追求所有节点的可用性,那就没法做到一致性。

原文地址:https://www.cnblogs.com/tongxuping/p/12293542.html

时间: 2024-11-09 00:48:51

Eureka对比Zookeeper、CAP定理的相关文章

从CAP到zookeeper和eureka对比

今天看了一篇eureka对比zookeeper的文章,对zookeeper满足CAP中的CP,eureka满足AP产生了一点疑问,故写此篇文章进行一些探讨. 首先我们来看看CAP的定义 Consistency 中文叫做"一致性".意思是,写操作之后的读操作,必须返回该值.举例来说,某条记录是 v0,用户向 G1 发起一个写操作,将其改为 v1,接下来,用户的读操作就会得到 v1.这就叫一致性. Availability 中文叫做"可用性",意思是只要收到用户的请求,

ZooKeeper与Eureka对比

简介 Eureka [ j?'rik? ]本身是Netflix开源的一款提供服务注册和发现的产品,并且提供了相应的Java封装.在它的实现中,节点之间相互平等,部分注册中心的节点挂掉也不会对集群造成影响,即使集群只剩一个节点存活,也可以正常提供发现服务.哪怕是所有的服务注册节点都挂了,Eureka Clients(客户端)上也会缓存服务调用的信息.这就保证了我们微服务之间的互相调用足够健壮. Zookeeper主要为大型分布式计算提供开源的分布式配置服务.同步服务和命名注册.曾经是Hadoop项

Eureka与zookeeper

Eureka的优势 1.在Eureka平台中,如果某台服务器宕机,Eureka不会有类似于ZooKeeper的选举leader的过程:客户端请求会自动切换到新的Eureka节点:当宕机的服务器重新恢复后,Eureka会再次将其纳入到服务器集群管理之中:而对于它来说,所有要做的无非是同步一些新的服务注册信息而已.所以,再也不用担心有"掉队"的服务器恢复以后,会从Eureka服务器集群中剔除出去的风险了.Eureka甚至被设计用来应付范围更广的网络分割故障,并实现"0"

CAP定理(原则)以及BASE理论

CAP定理(原则)以及BASE理论 CAP定理(原则)概念 CAP原则又称CAP定理,指的是在一个分布式系统中, Consistency(一致性). Availability(可用性).Partition tolerance(分区容错性),三者不可得兼. 1. 数据一致性(consistency) 一致性(C):在分布式系统中的所有数据备份,在同一时刻是否同样的值.(等同于所有节点访问同一份最新的数据副本) 2. 服务可用性(availability) 可用性(A):在集群中一部分节点故障后,集

浅谈分布式CAP定理

互联网发展到现在,由于数据量大.操作并发高等问题,大部分网站项目都采用分布式的架构.而分布式系统最大的特点数据分散,在不同网络节点在某些时刻(数据未同步完,数据丢失),数据会不一致. 在2000年,Eric Brewer教授在PODC的研讨会上提出了一个猜想:一致性.可用性和分区容错性三者无法在分布式系统中被同时满足,并且最多只能满足其中两个! 在2002年,Lynch证明其猜想,上升为定理.被这就是大家所认知的CAP定理. CAP是所有分布式数据库的设计标准.例如Zookeeper.Redis

eureka和ZooKeeper的区别

背景 在这边文章 中,我们将用我们在实践中遇到的问题来说明,为什么使用ZooKeeper做Service发现服务是个错误. 服务部署环境 让我们从头开始梳理.我们在部署服务的时候,应该首先考虑服务部署的平台(平台环境),然后才能考虑平台上跑的软件 系统或者如何在选定的平台上自己构建一套系统.例如,对于云部署平台来说,平台在硬件层面的伸缩(注:作者应该指的是系统的冗余性设计,即系统遇到单点失 效问题,能够快速切换到其他节点完成任务)与如何应对网络故障是首先要考虑的.当你的服务运行在大量服务器构建的

eureka 和zookeeper 区别 优势【转】

作为服务注册中心,Eureka比Zookeeper好在哪里 著名的CAP理论指出,一个分布式系统不可能同时满足C(一致性).A(可用性)和P(分区容错性).由于分区容错性在是分布式系统中必须要保证的,因此我们只能在A和C之间进行权衡.在此Zookeeper保证的是CP, 而Eureka则是AP. 4.1 Zookeeper保证CP 当向注册中心查询服务列表时,我们可以容忍注册中心返回的是几分钟以前的注册信息,但不能接受服务直接down掉不可用.也就是说,服务注册功能对可用性的要求要高于一致性.但

Eureka与Zookeeper的区别

作为服务注册中心,Eureka比Zookeeper好在哪里 著名的CAP理论指出,一个分布式系统不可能同时满足C(一致性).A(可用性)和P(分区容错性).由于分区容错性P是在分布式系统中必须要保证的,因此我们只能在A和C之间进行权衡. 因此 Zookeeper保证的是CP Eureka则是AP. Zookeeper保证CP 当向注册中心查询服务列表时,我们可以容忍注册中心返回的是几分钟以前的注册信息,但不能接受服务直接down掉不可用.也就是说,服务注册功能对可用性的要求要高于一致性.但是zk

谈谈对CAP定理的理解

谈谈对CAP定理的理解 CAP定理的常规解释是任何分布式系统只能在一致性(Consitency),可用性(Availability)和分区容忍性(Partition Tolerance)中三选二.这个解释很让人费解,笔者在看了一些文章后谈谈我对它的理解,还请斧正. 从问题出发 假设我们用一台服务器A对外提供存储服务,为了避免这台服务器宕机导致服务不可用,我们又在另外一台服务器B上运行了同样的存储服务.每次用户在往服务器A写入数据的时候,A都往服务器B上写一份,然后再返回客户端.一切都运行得很好,