为什么使用Zookeeper

为什么使用Zookeeper,第1张

为什么使用Zookeeper

近期对zookeeper进行了学习,简单做一个知识总结。

一、什么是Zookeeper

ZooKeeper是一个分布式的、开放源码的分布式协调服务,是Google的Chubby一个开源的实现,是Hadoop和Hbase的重要组件。它是一个为分布式应用提供一致性服务的软件,提供的功能包括:配置维护、域名服务、分布式同步、组服务等。由于Hadoop生态系统中很多项目都依赖于zookeeper,如Pig,Hive等, 似乎很像一个动物园管理员,于是取名为Zookeeper。

二、为什么要使用Zookeeper

能够通过 Zab 协议来保证分布式事务的最终一致性同redis一样,内存 *** 作 1. zookeeper 特点

顺序性: 从同一客户端发起的事务请求,最终按照顺序应用到zookeeper中;Leader和Follower的连接有队列的存在,保证了顺序性原子性:整个集群,对于事务请求,要么全部应用成功,要么都没有应用;ZAB协议单一系统映像:无论客户端连接到哪个服务器,都将看到相同的服务视图;可靠性:具有简单、健壮、良好的性能,如果消息被推送到一台服务器接收,那么它将被所有的服务器接收;只能通过Leader对数据进行增改 *** 作及时性:系统的客户视图保证在特定时间范围内是最新的。 2. zookeeper数据结构


在zookeeper中,它的数据结构与Linux很相似,像一个树形,有一个根节点,在根节点的基础上挂子节点。

每一个节点都是一个znode节点每个节点可以存 1M 的数据

znode的类型:
可分为三类:持久性节点、临时性节点、顺序性节店,开发中有四种类型:持久节点、持久顺序节点、临时节点、临时顺序节点。

持久节点:节点被创建后会一直存在服务器,直到删除 *** 作主动清除,这种节点也是最常见的类型;持久顺序节点:有顺序的持久节点,节点特性和持久节点是一样的,只是额外特性表现在顺序上。顺序特性实质是在创建节点的时候,会在节点名后面加上一个数字后缀,来表示其顺序;临时节点:会被自动清理掉的节点,它的生命周期和客户端会话绑在一起,客户端会话结束,节点会被删除掉。与持久性节点不同的是,临时节点不能创建子节点。临时顺序节点:有顺序的临时节点,和持久顺序节点相同,在其创建的时候会在名字后面加上数字后缀。

znode中的存储内容有两部分:节点数据内容 和 节点状态信息
节点数据内容就是业务中要存储的数据,节点状态信息:

czxid(Create zxid) :表示节点被创建时的事务ID;mzxid(Modified zxid):表示节点最后一次被修改时的事务ID;ctime(Create time):表示节点创建时间;mtime(Modified time):表示节点最后一次修改的时间;pzxid:表示该节点的子节点列表最后一次被修改时的事务 ID。只有子节点列表变更才会更新 pZxid,子节点内容变更不会更新。cersion:表示子节点的版本号;dataVerion:表示内容版本号;dataLength:表示数据长度;numChildren:表示子节点数;ephemeralOwner 表示创建该临时节点时的会话 sessionID,如果是持久性节点那么值为 0。 3. zap协议


可参考:

Zab协议详解

4. 使用场景

配置中心分布式锁数据发布 / 订阅
… 三、具体场景实现

配置中心:zookeeper实现配置中心
分布式锁:待完成

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/zaji/5717934.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-12-18
下一篇 2022-12-17

发表评论

登录后才能评论

评论列表(0条)

保存