当前位置:   article > 正文

zookeeper简介及优缺点_zk的优缺点

zk的优缺点

参考:
B战《黑马程序员Zookeeper视频教程,快速入门zookeeper技术》
B站《为什么微服务与高并发程序都在放弃 Zookeeper》


1、Zookeeper概念

Zookeeper是一个分布式的、开源的分布式应用程序的协调服务。(起辅助功能的项目)

2、Zookeeper功能

2.1、配置管理

有A、B、C三个应用程序,都有各自的配置文件,如果都连接同一个数据库,当数据库的信息发生改变时,就需要同时修改全部的配置文件,费时费力。
在这里插入图片描述
引入配置中心,把公有的配置放入配置中心,同时修改。应用程序启动时从配置中心下载并加载自己的配置文件。
在这里插入图片描述

2.2、分布式锁

部署在同一机器上,多线程访问公共部分,可以通过synchronized实现同步。但是如果部署在不同机器上怎么办?这时共享资源可能被同时访问。
引入第三方分布式锁,部署在不同机器上的程序通过分布式锁获取访问资格。
在这里插入图片描述

2.1、集群管理

作为注册中心进行使用。provider把自己的地址放到注册中心。consumer先从注册中心获取provider的地址,再通过RPC的远程调用。
在这里插入图片描述

3、为什么微服务与高并发程序都在放弃 Zookeeper

问题一:基于cp(强一致性)的设计

zk集群架构如下:
在这里插入图片描述
应用写入数据,由于zk(zookeeper)是基于cp(强一致性)的设计,leader向follower复制的过程中,follower没有处理完成,leader会一直阻塞,不会向应用返回响应。虽然主从复制可能只会持续十多ms的时间,但在高并发状态影响很大(基于AP的设计会更好)。
在这里插入图片描述

补充
1在分布式中P是必须要有的,所以分布式有CP和AP两种模式。AP的就是可用性强,一致性弱;CP就是一致性强,可用性弱。
2可用性:任何时候,读写都是成功的,即服务一直可用,而且是正常响应时间。
3一致性:所有节点同时看到相同的数据。

问题二:持久化中间状态

为了让数据可靠,zk会把中间状态也进行持久化,增加很多操作。但对于分布式架构,想知道的是当下哪些结点是存活的,寻找存活结点发起RPC(远程调用),不关心中间过程。

问题三:健康检测

zk的健康检测绑定在基于TCP长连接的探活上了,对于应用本身是否可用并不关心(健康检测不彻底,连接好不代表应用还好着)。

4、ZK可应用场景

适用于必须基于cp的场景下:
1数据订阅发布:主从是一致的,不会出现数据中间状态问题。
2命名服务:为每一个结点分配唯一的全局编号。
3分布式锁

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/繁依Fanyi0/article/detail/717041
推荐阅读
相关标签
  

闽ICP备14008679号