0
点赞
收藏
分享

微信扫一扫

为什么使用Zookeeper

A邱凌 2022-01-31 阅读 78

一、什么是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. 使用场景

  • 配置中心
  • 分布式锁
  • 数据发布 / 订阅

三、具体场景实现

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

举报

相关推荐

0 条评论