zookeeper是什么可以做什么?

1、什么是zookeeper

简单来说,ZooKeeper 是一个开源的、高性能的分布式应用协调服务 。它就像是为分布式系统提供的一个"基础设施服务",专门用来解决分布式应用中常见的协调和管理问题。

您可以把它想象成分布式系统的 "管理员" 或 "总控中心"。

2、 核心类比:动物园管理员

它的名字本身就源自一个生动的比喻:一个大型分布式系统就像一座动物园,里面有很多动物(服务/节点),需要一个管理员来协调、管理和维护秩序,确保动物们不会互相冲突,并能协同工作。

3、ZooKeeper 主要解决了什么问题?

在分布式系统中,多个节点(服务器)需要协同工作,会面临很多复杂的问题:

1、**配置管理:**所有节点需要统一的配置信息,手动修改每台机器容易出错。

2、**服务发现与命名:**服务A如何知道服务B在哪台机器上?新服务上线或者下线时如何通知其他服务?

3、分布式锁 :多个节点同时操作一个共享资源时(如修改同一个文件),需要一种机制来保证同一时间只有一个节点能执行。

4、**集群管理:**监控节点的存活状态,进行领导选举(比如确定哪个节点是主节点)

Zookeeper提供了一个简单、可靠、高性能的解决方案来处理这些问题。

4、核心工作原理与特性

Zookeeper本身也是一个分布式集群(通常由奇数个节点组成,如3、5、7台),以保证高可用性。他对外提供了一个类似文件系统目录树的数据模型。

4.1数据模型(ZNode):

复制代码
1、数据存储在称为ZNode的节点上,他们组织成一个层次化的树状结构,类似于文件系统的目录和文件。
2、你可以对ZNode进行读写操作,但其设计初衷是存储协调数据(如状态、配置、位置信息)而不是海量的应用数据。
3、ZNode有多种类型,例如临时节点(创建它的客户端会话结束时,节点会自动删除),这非常适合于做服务注册和存活监控。

监听机制(watch):

复制代码
1、这是Zookeeper最强大的特征之一。客户端可以在一个ZNode上设置一个监听。
2、当这个Znode的数据发生变化(修改、删除)或其子节点列表发生变化时,Zookeeper会主动通知注册了监听的客户端。这使得客户端能及时感知到变化,实现动态配置更新和服务发现。

一致性保证

Zookeeper遵循ZAB协议,为所有客户端提供顺序一致性的保证。他确保所有更新操作都是按照全局顺序执行,而且集群中大多数节点写入成功后,更新才会被确认。这保证了数据可靠性。

5、主要应用场景

1、**配置中心:**将系统的通用配置(如数据库地址、开关参数)存储在Zookeeper的一个ZNode中,所有应用服务监听这个节点,配置一变,所有的服务实时生效。

2、服务注册与发现(如Dubbo早期版本)

**服务注册:**服务启动时,在Zookeeper的指定目录下创建一个临时ZNode,写入自己的地址信息。
服务发现 :调用者监听该目录,当有新的服务上线(新增子节点)或下线(会话结束,临时节点删除)时,Zookeeper会通知调用者,使其能及时获取最新的可用服务列表。

3、分布式锁:

多个客户端尝试在同一个路径下创建同一个临时的ZNode,由于Zookeeper保证节点路径唯一,最终只有一个客户端能创建成功。创建成功的客户端就获得了锁,其他客户端监听这个节点,当锁释放时,再重新竞争。

4、集群选主:

在Master-Slave架构中,所有Slave尝试创建同一个临时ZNode,创建成功的成为Master。其他Slave监听这个节点。如果Master宕机,所有Slave会收到通知,并重新发起选举,产生新的Master(主节点)。

相关推荐
talle20217 小时前
Spark分布式计算框架介绍
大数据·分布式·spark·rdd
【赫兹威客】浩哥7 小时前
【赫兹威客】Hadoop完全分布式克隆文件部署教程
大数据·hadoop·分布式
编程彩机7 小时前
互联网大厂Java面试:从Spring Boot到分布式缓存的技术场景解析
java·redis·分布式·缓存·大厂面试·技术解析·sprint boot
skywalk81639 小时前
MiniMax说的FreeBSD系统使用Kubernetes完整指南
云原生·容器·kubernetes·freebsd
蓝眸少年CY10 小时前
(第十三篇)spring cloud之Sleuth分布式链路跟踪
分布式·spring·spring cloud
fanruitian10 小时前
k8s 部署 dashboard 面板
云原生·容器·kubernetes
lpfasd12310 小时前
gRPC 协议及其在 Nacos 微服务注册与配置中心中的应用
微服务·云原生·架构
德彪稳坐倒骑驴11 小时前
Spark面试准备
大数据·分布式·spark
小北方城市网11 小时前
Spring Cloud Gateway 生产级实践:高可用架构、灰度发布与故障排查
spring boot·redis·分布式·缓存·架构·wpf