zookeeper学习(一)_简介

上篇文章 咱们已经安装上了zookeeper,也简单的体验了一把,可是若是让你给别人介绍下zookeeper,可能也是说不出来。本篇文章就参考了网上各位优秀博主的文章,整理出本身更能理解的内容html

优秀博文

    1. sunddenly的zookeeper系列

http://www.cnblogs.com/sunddenly/category/620563.htmlnode

    1. 程序员小灰zookeeper系列

https://mp.weixin.qq.com/s/Gs4rrF8wwRzF6EvyrF_o4A程序员

简介

Zookeeper是一种分布式协调服务异步

以前的工做都是单机部署应用,并无接触过zookeeper,如今 的新公司动不动就集群,什么主从,分布式,渣渣的我听得一脸蒙蔽,项目中也使用zookeeper进行应用配置以及使用了elasticjob。分布式

应用场景

  • 1.分布式锁(利用Zookeeper的临时顺序节点,能够轻松实现分布式锁)
  • 2.服务注册和发现
  • 3.共享配置和状态信息

数据模型

Zookeeper的数据模型如同文件系统的目录。
设计

Zookeeper的数据存储是基于节点,这种节点叫作Znode。htm

datablog

Znode存储的数据信息。事件

ACL事务

记录Znode的访问权限,即哪些人或哪些IP能够访问本节点。

stat

包含Znode的各类元数据,好比事务ID、版本号、时间戳、大小等等。

child

当前节点的子节点引用

Zookeeper是为读多写少的场景所设计。Znode并非用来存储大规模业务数据,而是用于存储少许的状态和配置信息,每一个节点的数据最大不能超过1MB。

Zookeeper的基本操做和事件通知

Zookeeper包含了哪些基本操做呢?这里列举出比较经常使用的API:

  • create 建立节点

  • delete 删除节点

  • exists 判断节点是否存在

  • getData 得到一个节点的数据

  • setData 设置一个节点的数据

  • getChildren 获取节点下的全部子节点

这其中,exists,getData,getChildren属于读操做。Zookeeper客户端在请求读操做的时候,能够选择是否设置Watch。

Watch是什么意思呢?

咱们能够理解成是注册在特定Znode上的触发器。当这个Znode发生改变,也就是调用了create,delete,setData方法的时候,将会触发Znode上注册的对应事件,请求Watch的客户端会接收到异步通知。

具体交互过程以下:

1.客户端调用getData方法,watch参数是true。服务端接到请求,返回节点数据,而且在对应的哈希表里插入被Watch的Znode路径,以及Watcher列表。

2.当被Watch的Znode已删除,服务端会查找哈希表,找到该Znode对应的全部Watcher,异步通知客户端,而且删除哈希表中对应的Key-Value。

相关文章
相关标签/搜索