zookeeper简介

ZooKeeper是作为分布式应用建立更高层次的同步(synchronization)、配置管理 (configuration maintenance)、群组(groups)以及名称服务(naming)。在编程上,ZooKeeper设计很简单,所使用的数据模型风格很像文件系统的目录树结构,简单来说,有点类似windows中注册表的结构,有名称,有树节点,有Key(键)/Value(值)对的关系,可以看做一个树形结构的数据库,分布在不同的机器上做名称管理。

zookeeper思想非常简单,即保证对znode的修改都复制到ensemble的其他机器中,如果小范围出现故障,其他机器的备份可以恢复最新状态

zookeeper使用zab协议分为两个阶段

一 ensemble中机器参与一个选择领导者的进程,选择完成后大部分跟随者与领导者完成同步后,该阶段完成。

二 用户写操作发送给领导者,通过广播发送给跟随者,如果大部分跟随者完成修改后,领导者返回更新成功。

如果领导者失败,会重新选举领导者,原有领导者恢复成为跟随者。

当更新时不时直接更新znode内存中的信息,而是先将信息写入本地磁盘,读请求可能由任何机器服务,因为是内存查找非常快。

zookeeper使用顺序一致性,即根据客户发送更新的顺序来保证数据的一致性,它不会让客户端看到过时信息,会强制客户转到一个更新的服务器上。

zookeeper由内存提供读操作从而提升性能,但是这可能造成数据不同步,为保证数据同步,处理读取的机器将调用sync强制机器读取znode上的信息。

zookeeper由客户端与服务器组成,客户端连接服务器端会为其创建一个会话,会话有超时时段,通过会话接受请求及响应和状态检查,会话可以在未过期的时间段内

被重新建立(不同机器),注意超时后连接是可以恢复的,过期时不可以的,就像连接池的重用。

zookeeper watch起到了解znode状态改变的功能,客户可以在znode上注册watch来达到监听的目地。

你可能感兴趣的:(zookeeper)