当前位置: 代码网 > it编程>编程语言>Java > 谈谈注册中心 zookeeper 和 eureka 中的 CP和 AP,索引为什么能提供查询性能

谈谈注册中心 zookeeper 和 eureka 中的 CP和 AP,索引为什么能提供查询性能

2024年08月02日 Java 我要评论
看完上述知识点如果你深感Java基础不够扎实,或者刷题刷的不够、知识不全面小编专门为你量身定制了一套针对知识面不够,也莫慌!还有一整套的,可以瞬间查漏补缺全都是一丢一丢的收集整理纯手打出来的。

eureka各个节点都是平等的,几个节点挂掉不会影响正常节点的工作,剩余的节点依然可以提供注册和查询服务。而eureka的客户端在向某个eureka注册或时如果发现连接失败,则会自动切换至其它节点,只要有一台eureka还在,就能保证注册服务可用(保证可用性),只不过查到的信息可能不是最新的(不保证强一致性),其中说明了,eureka是不满足强一致性,但还是会保证最终一致性

2 zookeeper cp

zookeeper在选举leader时,会停止服务,直到选举成功之后才会再次对外提供服务,这个时候就说明了服务不可用,但是在选举成功之后,因为一主多从的结构,zookeeper在这时还是一个高可用注册中心,只是在优先保证一致性的前提下,zookeeper才会顾及到可用性

2.1 zookeeper 应用场景

  • 感知消息队列异步操作后的结果

  • 分布式锁

  • 元数据 或者配置中心 如 dubbo 和kafka 都需要zookeeper

  • dubbo 也可以不使用zookeeper 采用直连提供的方式,但限制了分布式的拓展性。

  • ha高可用

  • 主备切换 (两个服务分别为主备,备用平时不提供服务,当主的挂掉后,备用顶上作为新主。当原来的主恢复后作为新备)

选型依据

在粗粒度分布式锁,分布式选主,主备高可用切换等不需要高 tps 支持的场景下有不可替代的作用,而这些需求往往多集中在大数据、离线任务等相关的业务领域,因为大数据领域,讲究分割数据集,并且大部分时间分任务多进程 / 线程并行处理这些数据集,但是总是有一些点上需要将这些任务和进程统一协调,这时候就是 zookeeper 发挥巨大作用的用武之地。

但是在交易场景交易链路上,在主业务数据存取,大规模服务发现、大规模健康监测等方面有天然的短板,应该竭力避免在这些场景下引入 zookeeper,在阿里巴巴的生产实践中,应用对 zookeeper 申请使用的时候要进行严格的场景、容量、sla 需求的评估。

所以可以使用 zookeeper,但是大数据请向左,而交易则向右,分布式协调向左,服务发现向右。

选型依据

在粗粒度分布式锁,分布式选主,主备高可用切换等不需要高 tps 支持的场景下有不可替代的作用,而这些需求往往多集中在大数据、离线任务等相关的业务领域,因为大数据领域,讲究分割数据集,并且大部分时间分任务多进程 / 线程并行处理这些数据集,但是总是有一些点上需要将这些任务和进程统一协调,这时候就是 zookeeper 发挥巨大作用的用武之地。

但是在交易场景交易链路上,在主业务数据存取,大规模服务发现、大规模健康监测等方面有天然的短板,应该竭力避免在这些场景下引入 zookeeper,在阿里巴巴的生产实践中,应用对 zookeeper 申请使用的时候要进行严格的场景、容量、sla 需求的评估。

所以可以使用 zookeeper,但是大数据请向左,而交易则向右,分布式协调向左,服务发现向右。

2.2 不建议使用 zookeeper 的场景和原因

不建议使用 zookeeper 的原因是当它没满足a带来的影响。

当机房 3 出现网络分区 (network partitioned) 的时候,即机房 3 在网络上成了孤岛,我们知道虽然整体 zookeeper 服务是可用的,但是节点 zk5 是不可写的,因为联系不上 leader。

也就是说,这时候机房 3 的应用服务 svcb 是不可以新部署,重新启动,扩容或者缩容的,但是站在网络和服务调用的角度看,机房 3 的 svca 虽然无法调用机房 1 和机房 2 的 svcb, 但是与机房 3 的 svcb 之间的网络明明是 ok 的啊,为什么不让我调用本机房的服务?

现在因为注册中心自身为了保脑裂 § 下的数据一致性(c)而放弃了可用性,导致了同机房的服务之间出现了无法调用,这是绝对不允许的!可以说在实践中,注册中心不能因为自身的任何原因破坏服务之间本身的可连通性,这是注册中心设计应该遵循的铁律

2.3 zookeeper 的拓展

自我介绍一下,小编13年上海交大毕业,曾经在小公司待过,也去过华为、oppo等大厂,18年进入阿里一直到现在。

深知大多数java工程师,想要提升技能,往往是自己摸索成长或者是报班学习,但对于培训机构动则几千的学费,着实压力不小。自己不成体系的自学效果低效又漫长,而且极易碰到天花板技术停滞不前!

因此收集整理了一份《2024年java开发全套学习资料》,初衷也很简单,就是希望能够帮助到想自学提升又不知道该从何学起的朋友,同时减轻大家的负担。
img
img
img
img
img
img

既有适合小白学习的零基础资料,也有适合3年以上经验的小伙伴深入学习提升的进阶课程,基本涵盖了95%以上java开发知识点,真正体系化!

由于文件比较大,这里只是将部分目录大纲截图出来,每个节点里面都包含大厂面经、学习笔记、源码讲义、实战项目、讲解视频,并且后续会持续更新

如果你觉得这些内容对你有帮助,可以添加v获取:vip1024b (备注java)
img

最后

看完上述知识点如果你深感java基础不够扎实,或者刷题刷的不够、知识不全面

小编专门为你量身定制了一套<java一线大厂高岗面试题解析合集:java基础-中级-高级面试+ssm框架+分布式+性能调优+微服务+并发编程+网络+设计模式+数据结构与算法>

image

针对知识面不够,也莫慌!还有一整套的<java核心进阶手册>,可以瞬间查漏补缺

image

更有纯手绘的各大知识体系大纲,可供梳理:java筑基、mysql、redis、并发编程、spring、分布式高性能架构知识、微服务架构知识、开源框架知识点等等的xmind手绘图~

image

image
、spring、分布式高性能架构知识、微服务架构知识、开源框架知识点等等的xmind手绘图~

[外链图片转存中…(img-wvvkdsiz-1711879863443)]

[外链图片转存中…(img-dkzot5cv-1711879863443)]

(0)

相关文章:

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

发表评论

验证码:
Copyright © 2017-2025  代码网 保留所有权利. 粤ICP备2024248653号
站长QQ:2386932994 | 联系邮箱:2386932994@qq.com