Zookeeper官方文件学习笔记01-Zookeeper概述

经过长时间的努力,我决定学习官方文件

学习文件

•1份中文译本[2]•2份正式文件[3]

学习计划

打算两天学一篇(周末、节假日不学),正常应该5月31号学完,但考虑到我比较菜,给10天冗余(是冗余吧?)时间,6月14号学完,目录层级按照官方文章来。

左边的翻译工具是彩云小译

zookeeper版本:r3.5.5

ZooKeeper:分布式应用程序的分布式协调服务

    ZooKeeper定义了一些规则,然后让程序可以基于这些规则去实现用于同步,配置维护以及组和命名的更高级别的服务。它的目的是为了解决协调服务中的问题,如比赛条件(多个线程共享同个资源?)和死锁。

设计目标

ZooKeeper 数据保存在内存中,帮助ZooKeeper 可以实现高吞吐量和低延迟。

数据模型和分层名称空间

Zookeeper名称空间类似标准文件系统,如图所示。Zookeeper的名称空间中的每个节点都由一个路径标识。

节点和短命节点

Zookeeper的每个节点(Znode)就行myBase[4]软件一样,可以当作一个文件,同时也可以在这个文件下创造文件(当作一个目录)。

ZooKeeper的短命节点会话结束就会被删除。

有条件的更新和监视

客户端可以在znode上设置监视。znode更改时,将触发并删除监视。(不太理解??)

保证

ZooKeeper为了构建复杂的服务而设置的的一些基本特性:

•顺序一致性:来自客户端的更新将按照它们发送的顺序应用。•原子性:更新成功或失败。没有部分结果。•单一视图:客户机将看到服务的相同视图,而不管它连接到哪个服务器。•可靠性:一旦更新被应用,它将从那时起一直持续,直到客户端覆盖更新。•及时性:系统的客户端视图保证在一定的时间范围内是最新的。

简单的 API

•create 创建节点•delete 删除节点•exists节点存在与否判断•get 获取节点数据•set 为节点赋值•get children 获取节点的子节点•sync(同步吗?)

目前来说,这个功能,我感觉有点像,java的list数组

执行

这副图没有太看懂

我现在知道的是:

•Replicated Database 是复制的数据库,它是包含整个数据树的内存数据库。作用是更新记录到磁盘以确保可恢复性•Atomic Broadcast 原子消息传递协议•Read Request 读取请求每个服务器数据库的本地副本提供服务

用途

简单的接口完成复杂的操作

性能

高性能(协调服务,多少读取代码写入)

可靠性

•跟随者失败且迅速恢复,ZooKeeper可以维持高吞吐量•领导者选举算法可以帮助系统快速恢复

回顾解决问题:

领导者选举算法是什么?

领导者恢复了,为了有利于观察者呢?

References

资源下载: