美文网首页
zookeeper-官方文档笔记

zookeeper-官方文档笔记

作者: 红色的飞猪 | 来源:发表于2020-02-27 15:16 被阅读0次

定义

  • ZooKeeper是用于维护配置信息,命名,提供分布式同步以及提供组服务的集中式服务。

  • ZooKeeper与标准文件系统之间的主要区别在于,每个znode都可以具有与之关联的数据(每个文件也可以是目录,反之亦然),并且znode限于它们可以拥有的数据量(1M)

  • 读请求的吞吐量随服务器数量成比例增长,写请求的吞吐量随服务器数量而减小

  • 高性能,高可用性,严格有序访问

  • 层次空间


    image.png

一些概念

znode: zk的基础数据单元,对应图中的每一个节点,可以存放数据。
临时节点-随session的生命周期,不能有children节点(不然有可能没法删除)
序列化节点(持久化、临时)
容器节点
TTL节点
stat结构:
czxid: 创建操作标识id
mzxid: 修改
pzxid: 孩子修改操作
cversion(孩子节点修改引起的版本标识)
version(当前节点的版本标识)
aversion(权限控制标识)
ephemeralOwner(临时节点的,sessionId)
dataLength(当前节点的数据大小)
numChildren

chroot

连接的时候即可指定root,case:
zkCli -server 127.0.0.1:2181/zookeeper/onlinle

zk提供的保证(以下五个功能点为维度理解zk)

顺序一致性-来自客户端的更新将按照发送的顺序应用。
原子性-更新成功或失败。没有部分结果。
单个系统映像-无论客户端连接到哪个服务器,客户端都将看到相同的服务视图。
可靠性-应用更新后,此更新将一直持续到客户端覆盖更新为止。
及时性-确保系统的客户视图在特定时间范围内是最新的。

概念&原理

zab协议:zk原子性广播协议

  • 保证更改状态有序性
  • 领导选举&故障领导者&节点恢复

过程:类似二阶段提交。 leader收到状态更改的事务请求,将改请求send给follwer,follwer将改请求存放到history里面,并向leader发送ack。当受到ack的个数大于法定个数,则发从commit命令,follwer接受commit,follwer执行commit,会先执行commit序列号小的(保证所有的操作按顺序执行)
(ps: 问题: follwer什么时候拒绝发送ack? leader如何知道commit全部完成 ?)

领导者选举:
0: 潜在领导者选举
1:发现
3:同步
4:广播

简单api

[代码case]
create:在树中的某个位置创建一个节点
delete:删除节点
exists :测试节点是否存在于某个位置
get data:从节点读取数据
setData:将数据写入节点
getChildren:获取节点子节点的列表
sync:等待数据传播

高级应用

  • 配置、命名空间
  • Barriers
  • Queues
  • Locks
  • Shared Locks
  • Two-phased Commit
  • Leader Election

问题

  1. 创建有序节点,如何获取数据呢?

创建的时候会返回node的name,getData的时候直接拼接path。

  1. 客户端添加watch只能响应一次,那么配置中心怎么实现的每次都能监听到数据改变?

  2. 客户端创建连接是根据负载均衡随机连接集群的一个server,那么状态更改的过程是什么?

客户端向连接的server提交状态更改,然后转发给leader节点处理。

相关文章

  • zookeeper-官方文档笔记

    定义 ZooKeeper是用于维护配置信息,命名,提供分布式同步以及提供组服务的集中式服务。 ZooKeeper与...

  • Ant Design Pro的知识储备

    Less 笔记 Less 官方文档 ReactJs笔记 ReactJs官方文档 ES6笔记 ES6文档 dvaJs...

  • Flutter for Android Developers 官

    官方文档 官方文档笔记 Views Flutter 中与 View 相等的东西是什么? Widget 具有 And...

  • laradock 笔记

    laradock 笔记 官方文档[http://laradock.io/documentation/] 中文文档[...

  • Flutter 官方入门文档

    本文是官方文档学习过程的笔记 官方文档: https://flutter.io/get-started/codel...

  • cocoapods

    本文为读CocoaPods官方文档的总结,读书笔记。官方文档地址为 https://guides.cocoapod...

  • GIT常用命令以及官方文档笔记

    常用命令总结 官方文档笔记

  • HEXO官方文档学习笔记

    HEXO官方文档学习笔记 hexo官方文档 一. hexo 开始使用 1.1 概述 环境必须包括 nodejs 与...

  • UIImage

    官方文档点蓝色文字:UIImage、CIImage、CGImage。 这篇文章是对官方文档的学习笔记,不是翻译,对...

  • solidity-1.合约结构

    solidity 英文文档阅读笔记 官方英文文档:https://solidity.readthedocs.io/...

网友评论

      本文标题:zookeeper-官方文档笔记

      本文链接:https://www.haomeiwen.com/subject/nbzthhtx.html