评论

收藏

[Java] Zookeeper和Eureka哪个更好?

编程语言 编程语言 发布于:2021-09-18 19:17 | 阅读数:318 | 评论:0

今天小编就为大家分享一篇关于Zookeeper和Eureka哪个更好?,小编觉得内容挺不错的,现在分享给大家,具有很好的参考价值,需要的朋友一起跟随小编来看看吧
zookeeper和eureka哪个更好?
1、cap理论
一个分布式系统不可能同时很好的满足一致性,可用性和分区容错性这三个需求
c:数据一致性:保证所有数据都要同步
a:可用性:要保证任何时候请求数据都能够正常响应
p:分区容错性:当网络通信发生故障时,集群仍然可用,不会因为某个节点挂了或者存在问题,而影响整个系统的正常运作
对于分布式系统来说,出现网络分区是不可避免的,因此分区容错性是必须要具备的,也就是说,cap三者,p是必须的
2、zookeeper保证cp原则
当向注册中心查询服务列表时,我们可以容忍注册中心返回的是几分钟以前的注册信息,但不能接受服务直接down掉不可用。也就是说,服务注册功能对可用性的要求高于一致性。但是zookeeper会出现一种情况,当master节点因为网络故障与其他节点失去联系时,剩余节点会重新进行leader选举。问题在于,选举leader的时间太长,30~120s,且选举期间整个zookeeper集群都是不可用的,这就导致在选举期间服务瘫痪。在云部署的环境下,因网络问题使得zookeeper集群失去master节点是较大概率会发生的事,虽然服务能够最终恢复,但是漫长的选举时间导致的注册长期不可用是不能容忍的
3、eureka保证ap原则
eureka优先保证可用性。eureka各个节点都是平等的,几个节点挂掉不会影响正常节点的工作,剩余的节点依然可以提供注册和查询服务。而eureka的客户端在向某个eureka注册或是如果发现连接失败,则会自动切换至其他节点,只要有一台eureka还在,就能保证注册服务可用(保证高可用),只不过查询的信息可能不是最新的(不保证强一致性)。除此之外,eureka还有一种自我保护机制,如果在15分钟内超过85%的节点都没有正常的心跳,那么eureka就认为客户端与注册中心出现了网络故障,此时会出现以下几种情况:
1.eureka不再从注册列表中移除因为长时间没收到心跳而应该过期的服务
2.eureka仍然能够接受新服务的注册和查询请求,但是不会被同步到其他节点上(即保证当前节点仍然可用)
3.当网络稳定时,当前实例新的注册信息会被同步到其他节点中
因此,eureka可以很好的应对网络故障导致部分节点失去联系的情况,而不会像zookeeper那样使整个注册服务瘫痪
总结
以上就是这篇文章的全部内容了,希望本文的内容对大家的学习或者工作具有一定的参考学习价值,谢谢大家对CodeAE代码之家的支持。如果你想了解更多相关内容请查看下面相关链接
原文链接:https://blog.csdn.net/qq_40378034/article/details/86519251

关注下面的标签,发现更多相似文章