-
Zookeeper是一个开源的分布式的,为分布式应用提供协调服务的Apache项目。
-
Zookeeper从设计模式角度来理解,是一个基于观察者设计模式的分布式服务管理框架,它负责存储和管理大家都关心的数据,然后接受观察者的注册。一旦这些数据的状态发生变化,Zookeeper就将负责通知已经在Zookeeper上注册的那些观察者做出相应的反应。
-
使用Zookeeper作为注册服务注册中心时
每个服务节点向Zookeeper集群注册自己的信息。每个客户端从Zookeeper中获取到服务的节点信息。
具体步骤如下:
- 服务端在启动时去Zookeeper集群中注册信息(创建临时节点)
- 客户端在启动时去Zookeeper集群中获取当前在线的服务列表,并注册监听
- 如果服务端有一个节点下线,创建的临时节点也会被删除
- Zookeeper集群通知所有监听的客户端服务端下线的事件
- 客户端再重新获取在线的服务端列表,并添加监听。
Zookeeper=文件系统+通知机制
-
Zookeeper特点
先看下面的图
上面的图中,Zookeeper集群中有5个节点。
- 一个Leader,多个Follower。
- 集群中只要有半数以上的节点存活,Zookeeper集群就能正常服务。(半数以上,只到一半也不能)
- 全局数据一致,每个节点保存一份相同的数据副本,Client可以连接任意一个节点,数据都是一致的。
- 针对每一个客户端的多次更新请求顺序执行
- 数据更新原子性,一次数据更新要么成功,要么失败。
- 实时性,在一定时间范围内,客户端能读取到最新的数据。
-
Zookeeper数据结构
Zookeeper数据模型的结构与Linux文件系统很类似,整体上可以看作是一颗树。
树中的每个节点称做一个ZNode。
每个ZNode默认能够存储1MB的数据。
每个ZNode都可以通过其路径唯一标识。
-
Zookeeper应用场景
-
统一命名服务
在分布式环境下,经常需要对应用/服务进行统一命名,便于识别。例如使用域名代替IP。
-
统一管理配置服务
在分布式环境下,配置文件同步是非常常见的。
在一个集群中,要求所有节点的配置是一致的。
对配置文件修改后,希望能够快速同步到各个节点上。
配置管理都可交由Zookeeper实现。
将配置信息写入Zookeeper上的一个ZNode中
各个客户端监听这个ZNode
一旦ZNode中的数据被修改,Zookeeper将通知各个客户端。
-
统一集群管理服务
分布式环境中,实时掌握每个节点的状态是很有必要的。
可根据节点的实时状态做出一些调整
将节点信息写入Zookeeper上的一个ZNode中,监听这个ZNode可以获取它的实时状态变化。
-
服务器节点动态上下线
客户端能实时洞察到服务器上下线的变化。
-
软负载均衡
在Zookeeper中记录每台服务器的访问数,让访问数最少的服务器去处理最新的客户端请求。
-
一、zookeeper概述
最新推荐文章于 2025-02-27 07:25:58 发布