zookeeper和eureka使用场景(eureka与zookeeper差别)

技术如何进行ZooKeeper与Eureka的比较如何进行ZooKeeper与Eureka的比较,很多新手对此不是很清楚,为了帮助大家解决这个难题,下面小编将为大家详细讲解,有这方面需求的人可以来学习下,希望你能有所收获

如何比较ZooKeeper和尤里卡,很多新手都不是很清楚。为了帮助大家解决这个问题,下面小编就详细讲解一下。需要的人可以从中学习,希望你能有所收获。

简介

Eureka本身是一个网飞开源产品,提供服务注册和发现,并提供相应的Java包。在它的实现中,节点彼此相等,如果注册表的某些节点挂起,集群不会受到影响。即使集群中只剩下一个节点,也可以正常提供发现服务。即使所有的服务注册节点都死了,服务调用的信息也会被缓存在尤里卡客户端。这确保了我们的微服务之间的相互调用足够健壮。

Zookeeper主要为大规模分布式计算提供开源分布式配置服务、同步服务和命名注册。以前是Hadoop项目的子项目,用来控制集群中的数据,现在升级为独立的顶层项目。在许多情况下,它还被用作服务发现服务解决方案。

对比

分布式系统中有一个著名的CAP定理(C-数据一致性;A-服务可用性;P-服务对网络分区故障的容错性,这三个特征在任何分布式系统中都不能同时满足,最多两个可以同时满足)。

Zookeeper

Zookeeper是基于CP设计的,即对Zookeeper的访问请求可以随时得到一致的数据结果,系统对网络分段是容错的,但不能保证每个服务请求的可用性。从实际情况分析,在使用zookeeper获取服务列表时,如果Zookeeper选择的是master或者Zookeeper集群中有一半以上的机器不可用,那么就不会获取数据。因此,动物园管理员不能保证服务的可用性。

诚然,在大多数分布式环境中,尤其是那些涉及数据存储的环境,首先应该保证数据的一致性,这就是为什么zookeeper被设计成CP的原因。但是对于服务发现场景,情况就不一样了:对于同一个服务,即使存储在注册中心不同节点的服务提供者的信息不同,也不会造成灾难性的后果。因为对于服务消费者来说,能够消费是最重要的;mdash最好在获取不正确的服务实例信息后尝试消费,而不是因为无法获取实例信息而不消费。(尝试会很快失败,然后可以更新配置再试一次)因此,对于服务发现来说,可用性比数据一致性mdash更重要;mdashAP打败CP。

Eureka

春云网飞在设计尤里卡时遵循了AP原则。尤里卡服务器还可以运行多个实例来构建集群和解决单点问题,但与ZooKeeper的领导者选举过程不同,尤里卡服务器使用Peer to Peer点对点通信。这是一个分散的架构。没有主/从的区别,每个对等体都是平等的。在这种架构中,节点相互注册以提高可用性,每个节点需要添加一个或多个有效的serviceUrl来指向其他节点。每个节点都可以被视为其他节点的副本。

如果尤里卡服务器发生故障,尤里卡客户端的请求将自动切换到新的尤里卡服务器节点。当故障服务器恢复后,尤里卡将再次将其纳入服务器集群管理。当节点开始接受客户端请求时,所有操作都将被复制操作者,它会将请求复制到其他尤里卡服务器当前已知的所有节点。

新的尤里卡服务器节点启动后,它将首先尝试从相邻节点获取所有实例注册表信息,以完成初始化。尤里卡服务器通过getEurekaServiceUrls()方法获取所有节点,并通过心跳更新定期更新。默认情况下,如果尤里卡服务器在一定时间内没有收到服务实例的心跳,尤里卡服务器将注销该实例(默认为90秒,由尤里卡. instance . lease-expire-duration-in-seconds配置)。当尤里卡服务器节点在短时间内丢失太多心跳(如网络分区故障)时,该节点将进入自我保护模式。

什么是自我保护模式?默认情况下,如果尤里卡服务器每分钟收到的心跳更新低于阈值(实例数(60/心跳间隔秒/实例)自我保护系数)并持续15分钟,将触发自我保护。在自我保护模式下,尤里卡服务器将保护服务注册表中的信息,并且不会注销任何服务实例。当尤里卡服务器节点接收到的心跳数恢复到阈值以上时,它将自动退出自我保护模式。它前面提到的设计理念,就是保留错误的服务注册信息,比盲目取消任何可能健康的服务实例要好。eureka . server . enable-自保=false可以禁用该模式,而eureka . instance . lease-renew-interval-in-second可以

用来更改心跳间隔,eureka.server.renewal-percent-threshold可以用来修改自我保护系数(默认0.85)。

ZooKeeper基于CP,不保证高可用,如果zookeeper正在选主,或者Zookeeper集群中半数以上机器不可用,那么将无法获得数据。Eureka基于AP,能保证高可用,即使所有机器都挂了,也能拿到本地缓存的数据。作为注册中心,其实配置是不经常变动的,只有发版和机器出故障时会变。对于不经常变动的配置来说,CP是不合适的,而AP在遇到问题时可以用牺牲一致性来保证可用性,既返回旧数据,缓存数据。

所以理论上Eureka是更适合做注册中心。而现实环境中大部分项目可能会使用ZooKeeper,那是因为集群不够大,并且基本不会遇到用做注册中心的机器一半以上都挂了的情况。所以实际上也没什么大问题。

看完上述内容是否对您有帮助呢?如果还想对相关知识有进一步的了解或阅读更多相关文章,请关注行业资讯频道,感谢您对的支持。

内容来源网络,如有侵权,联系删除,本文地址:https://www.230890.com/zhan/157335.html

(0)

相关推荐

  • 支付宝怎么交违章罚款,2021支付宝怎么交违章停车

    技术支付宝怎么交违章罚款,2021支付宝怎么交违章停车1、下载交管12123APP,用车主身份证注册,进去后可以看到车主身份证下所有车辆的情况支付宝怎么交违章罚款。按照说明一步步走下去就可以了。
    2、上支付宝,找到更多,

    生活 2021年10月22日
  • 别人夸你优秀神回复,朋友夸我有才我怎么回复

    技术别人夸你优秀神回复,朋友夸我有才我怎么回复被别人夸奖别人夸你优秀神回复,怎样回答才显示出我们的高情商呢,我总结了下面五种回应方式仅供参考。
    1、以接受来回应
    如果别人夸你,而你又不知道怎么去回应的话,起码要接受并感谢

    生活 2021年10月21日
  • android sqlite数据库创建(android studio中sqlite插入数据)

    技术android studio数据存储建立SQLite数据库怎么实现增删查改今天就跟大家聊聊有关android studio数据存储建立SQLite数据库怎么实现增删查改,可能很多人都不太了解,为了让大家更加了解,小编

    攻略 2021年12月20日
  • 在Python中如何使用cx_Oracle来访问Oracle

    技术在Python中如何使用cx_Oracle来访问Oracle今天就跟大家聊聊有关在Python中如何使用cx_Oracle来访问Oracle,可能很多人都不太了解,为了让大家更加了解,小编给大家总结了以下内容,希望大

    攻略 2021年10月27日
  • 如何用JAVA 生成有格式的 XLS

    技术如何用JAVA 生成有格式的 XLS这篇文章将为大家详细讲解有关如何用JAVA 生成有格式的 XLS,文章内容质量较高,因此小编分享给大家做个参考,希望大家阅读完这篇文章后对相关知识有一定的了解。Java有什么方便的

    攻略 2021年12月2日
  • 如何分析Python自动化运维开发中的变量

    技术如何分析Python自动化运维开发中的变量本篇文章给大家分享的是有关如何分析Python自动化运维开发中的变量,小编觉得挺实用的,因此分享给大家学习,希望大家阅读完这篇文章后可以有所收获,话不多说,跟着小编一起来看看

    攻略 2021年12月4日