学习上手Zookeeper,看这篇就够了

目录

一、简介

二、构成和原理

三、搭建本地集群

四、zookeeper实现分布式锁


一、简介

1.官网的介绍

        在部署分布式应用的时,需要花费大量的时间去修复bug和服务之间的竞争,zookeeper的作用是为分布式系统的配置命名同步提供中心化服务以及组服务的。
        简言之,zk就是为分布式应用提供一致性服务的软件!

2.应用场景

  • 数据或应用的发布/订阅
  • 负载均衡
  • 命名服务
  • 集群管理
  • 分布式锁
  • 分布式队列
    ...

二、构成和原理

1.本质:分布式文件管理系统+通知系统

1.1数据结构

        zookeeper维护了一个类似于linux系统的文件系统,不同的是每一个节点是一个称之为znode,用唯一路径表示,/代表根目录。每个节点可以最大可以存储1MB的数据。

 1.2节点的类型

  • 持久节点(Persistant Node)
  • 临时节点(Ephemeral Node)

        节点创建后类型不能够更改,客户端与zookeeper服务器建立会话连接结束后,临时节点会自动删除,而持久节点会一直存在,两种节点当然也可以手动删除;临时节点不能够拥有子节点。

  • 持久顺序节点(Persistant Node)
  • 临时顺序节点(Ephemeral Node)

        当基于某父节点/a创建顺序节点/a/p时,zookeeper会根据/azxid创建一个全图唯一的自增序列编号1,2,3...;节点的命名就会带着标号顺序递增。

1.3节点的参数

cZxid:创建当前的事务ID(也就是Zxid的值)
ctime:当前节点的创建时间
mZxid:最后修改节点的事务ID
mtime:节点最后的修改时间
pZxid:最后添加或删除子节点的事务ID
cversion:当前节点子节点的版本信息(子节点的增加、删除都会影响版本信息)
dataVersion:当前节点的数据版本
aclVersion:当前节点的acl版本。
ephemeralOwner:当前节点是否临时节点,是则显示为有者的 session ID, 否则设置为零
dataLength:当前节点数据字段的长度
numChildren:当前节点子节点的数量

2.运行流程

读:客户端无论读请求的是Leader 还是 Follower ,直接返回结果。

写:客户端写请求leader,leader写入并分发给follower让其写入,收到一半以上的ack时通知客户端写入成功;
        客户端写请求follower,follower先转发个leader,leader写入后再讲写请求分发给follower,收到一半以上的ack时通知客户端写入成功。

        上述过程,Zookeeper 读写的数据一致性主要依赖于ZAB协议的消息广播、崩溃恢复、数据同步三个过程,参考以下

        

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值