为什么使用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实现配置中心
分布式锁:zookeeper实现分布式锁

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值