dubbo,zookeeper,eureka之间的关系与区别

您所在的位置:网站首页 springboot与dubbo区别 dubbo,zookeeper,eureka之间的关系与区别

dubbo,zookeeper,eureka之间的关系与区别

2024-07-11 06:09| 来源: 网络整理| 查看: 265

CAP原则

先来解释下分布式系统中的CAP原则:指的是在一个分布式系统中,C - Consistency(一致性)、 A - Availability(可用性)、P - Partition tolerance(分区容错性),三者不可兼得。

其中,P - Partition tolerance(分区容错性)原则是必不可少的。

dubbo,zookeeper,eureka的关系:

1、Dubbo相当与Spring Cloud

Dubbo是个微服务整体架构的框架,提供的功能包括服务注册发现,远程调用,监控等等。对标的项目是spring cloud。但Spring Cloud是一个系列的软件,有很多组件来拼装提供微服务的总体架构。Dubbo自己全封装了。

2、Zookeeper集成在Dubbo中以后,相当于Spring Cloud中的Eureka

Dubbo的服务发现模块基于zookeeper实现;

Eureka是Spring Cloud之下一个专门负责微服务服务注册和发现的组件,Eureka就是为了服务发现而设计的。是Dubbo对应的概念的一个部分。 3、原本的Zookeeper

在概念上,Zookeeper是用来保证分布式一致性的一个软件,不是为了服务发现注册而设计的。只不过它的特性也可以被二次开发成服务发现注册中心罢了,所以在Duboo这里被改造成做注册用了。

4、Zookeeper保证C P

当向注册中心查询服务列表时,我们可以容忍注册中心返回的是几分钟以前的注册信息,但不能接受服务直接down掉不可用。也就是说,服务注册功能对可用性的要求要高于一致性。但是zk会出现这样一种情况,当master节点因为网络故障与其他节点失去联系时,剩余节点会重新进行leader选举。问题在于,选举leader的时间太长,30 ~ 120s, 且选举期间整个zk集群都是不可用的,这就导致在选举期间注册服务瘫痪。在云部署的环境下,因网络问题使得zk集群失去master节点是较大概率会发生的事,虽然服务能够最终恢复,但是漫长的选举时间导致的注册长期不可用是不能容忍的。

5、Eureka保证A P

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

Eureka不再从注册列表中移除因为长时间没收到心跳而应该过期的服务Eureka仍然能够接受新服务的注册和查询请求,但是不会被同步到其它节点上(即保证当前节点依然可用)当网络稳定时,当前实例新的注册信息会被同步到其它节点中

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

专业角度上,Euraka与Zookeeper的区别

内容太多,这里不想洗解释,感兴趣的朋友请查看我的相关博文,链接:https://blog.csdn.net/weixin_44259720/article/details/103157735

 

更多精彩,请关注我的"今日头条号":Java云笔记 随时随地,让你拥有最新,最便捷的掌上云服务



【本文地址】


今日新闻


推荐新闻


CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3