SpringCloud(一)—-Eureka和Zookeeper对比

SpringCloud(一)—-Eureka和Zookeeper对比

1.CAP理论

著名的CAP理论指出,一个分布式系统不可能同时满足C(一致性)、A(可用性)和P(分区容错性)。由于分区容错性在是分布式系统中必须要保证的,因此我们只能在A和C之间进行权衡。在此Zookeeper保证的是CP, 而Eureka则是AP
C(一致性):在分布式系统中,是否立即达到数据同步的效果(平时多说的强一致性)。在分布式系统一定最终会一致的。如果请求完,整个分布式系统同步后才返回结果,叫做强一致性。如果先返回结果,在一定时间后才实现一致性就叫做弱一致性。
A(可用性):在分布式系统中,其中一些节点出现问题,整个整体是否还可用。还可以从性能角度上考虑,整个分布式系统反应较快也属于达到了可用性。
P(分区容错性):在分布式系统中,是否可以在有限的时间内达到数据一致的效果,如果因为网络等问题最终没有达到一致性,这时称为出现分区错误。

2.Zookeeper 保证 CP

在Zookeeper集群中,Zookeeper的数据保证的是一致性的。当Leader出现问题时,整个Zookeeper不可用,需要花费30~120s来进行重新选择leader,当leader选举成功以后才能进行访问整个Zookeeper集群。
通过这点也可以看出Zookeeper是强一致性的,集群所有节点必须能通信,才能用集群。虽然这样集群数据安全了,但是可用性大大降低了。而作为注册中心来说可用性是很重要的。

3.Eureka保证AP

Eureka发现了Zookeeper的问题,所以它舍弃了Zookeeper中强一致性,而保证了可用性。
在Eureka集群中所有的节点都是保存完整的信息的,当Eureka Client向Eureka中注册信息时,如果发现节点不可用,会自动切换到另一台Eureka Sever,也就是说整个集群中即使只有一个Eureka可用,那么整个集群也是可用的。
同时Eureka的自我保护机制也是实现可用性非常重要的体现。

4.ZooKeeper和Eureka对比

在这里插入图片描述
在这里插入图片描述

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/2332.html原文链接:https://javaforall.net

(0)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • dategrip激活码(JetBrains全家桶)

    (dategrip激活码)本文适用于JetBrains家族所有ide,包括IntelliJidea,phpstorm,webstorm,pycharm,datagrip等。https://javaforall.net/100143.htmlIntelliJ2021最新激活注册码,破解教程可免费永久激活,亲测有效,上面是详细链接哦~C…

    2022年3月31日
    88
  • 微生物组助手——最易学的扩增子、宏基因组分析流程

    微生物组助手——最易学的扩增子、宏基因组分析流程软件简介MicrobiomeHelper开源软件,方便大家分析微生物组数据。不仅提供了多套扩增子、宏基因组的分析流程方案,同时提供了几十个软件间衔接的脚本,可大大提高使用者分析的效率。文章于2017年发表于mSystems。Github项目主页:https://github.com/LangilleLab/microbiome_helpermicrobiomehelp结合不同组…

    2022年5月9日
    42
  • 推荐三款免费可外链网络相册「建议收藏」

    推荐三款免费可外链网络相册「建议收藏」现在很多的论坛都不提供上传的空间或者有诸多限制,如果我们想要在论坛中贴照片的话就得先找一个网络相册,然后以外链的方式才能贴出图片,可是现在主流的163相册,QQ和51等相册都无法支持图片外链,你是否还在苦苦寻找一个好的可以外链的相册呢?今天我就为大家带来三款提供免费外链的网络相册,希望能帮助大家解决难题。三款外链网络相册:1、Swode相册http://www.swode….

    2022年6月16日
    32
  • pthread_t定义结构

    pthread_t定义结构

    2021年12月31日
    64
  • 【转载】5种网络IO模型

    【转载】5种网络IO模型

    2021年11月18日
    47
  • python字符串与数字的转化_字符串转数字c语言

    python字符串与数字的转化_字符串转数字c语言数字转为字符串这个相对比较简单我们可以使用Python中的str函数直接转换例如将123转换为’123’print(str(123))或者使用格式化print(‘%s’%123)字符串转为数字这个相对比较复杂一点因为Python没有提供类似于str函数的int函数如果转换的是0-9的一个数,那么只采用字典就可实现defchar2num(s):…

    2022年10月12日
    0

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号