zookeeper基本概念

zookeeper :  

1.协作多个任务:例如主从工作模式,从节点处于空闲状态时会通知主节点可以接受任务,于是主节点就会分配任务给从节点.

2.管理竞争:竞争则是两个进程不能同时处理工作,一个进程必须等待另一个进程.例如主从模式中的,选注节点的过程.

Apache HBase 通常与Hadoop一起使用的数据存储仓库,Zookeeper在HBase中,选举主节点,以便跟踪可用的服务器,并保存集群的元数据.

Apache Kaftka 是一个基于发布-订阅(pub-sub)模型的消息系统.Zookeeper用于检测崩溃,实现主题(topic)的发现,并保持主题的生产和消费状态

Apache  Solr 是一个企业级的搜索平台.Solr分布式版本命名为SolrCloud,它使用Zookeeper存储集群元数据,并协作更新这些元数据.


分布式系统定义:分布式系统是同时跨越多个物理主机,独立运行的多个软件组件所组成的系统.

分布式系统中的进程通信有两种选择: 直接通过网络进行信息交换,或读写某些共享存储

Zookeeper使用共享存储模型来实现应用间的协作和同步原语.对于共享存储本身,又需要在进程和存储间进行网络通信.

消息延迟:消息传输可能会发生网络延迟,比如,网络拥堵

处理器性能:操作系统的调度和超载也可能导致消息处理的任意延迟.

始终偏移:处理器始终并不可靠,他们之间会发生任意的偏移.

--------------------------------------------------------------------------------------------------------------------------------------------------

zookeeper 通过暴露了一小部分调用方法组成的类似文件系统的API,以便允许应用实现自己的原语.

zookeeper操作和维护一个小型的数据节点,这个节点叫做znode,采用类似文件系统的层级结构进行管理.如下图所示,


主节点的znode没有数据表示还没有选举出主节点.

---------------------------------------------------------------------------------------------------------------------------------------------------

znode节点可能含有数据,也可能没有数据.如果一个znode节点包含任何数据,那么数据存储为字节数据(byte array).字节数据的具体格式特定于每个应用的实现,zookeeper并不直接提供解析的支持.我们可以通过使用Protocol Buffers, THRIFT,Avro,MessagePack等序列化包来方便处理保存于znode节点的数据格式,不过一般以UTF-8或ASCII编码的字符串就已经够用了.

-------------------------------------------------------------------------------------------------------------------------------------------------

zookeeper的API暴露出一下方法

create /path data   创建出一个名为/path的znode,并包含数据data

delete  /path   删除名为/path的znode

exists /path  检查是否存在名为/path的znode

setData  /path data  设置名为/path的znode节点的数据为data

getData /path 获取名为/path的znode节点的所有数据信息

getChildren /path 返回所有/path节点的所有子节点列表

需要注意的是,zookeeper并不允许局部写入或读取znode节点的数据,当设置一个znode节点的数据或读取时,znode节点的内容会被整个替换或全部读取出来.

zookeeper客户端连接到zookeeper服务器,通过API调用简历会话(session).

-----------------------------------------------------------------------------------------------------------------------------------------------------

当新建znode的时候需要指定,znode的类型.

持久节点和临时节点.

持久节点,只能通过调用delete来进行删除. 可以通过持久节点znode为应用保存一些数据,即使znode的创建者不再属于应用系统时,数据页可以保存下来而不丢失. 例如,主从模式中,即使分配任务的主节点崩溃了,也要保存从节点的任务分配情况.

临时节点,当创建该节点的客户端崩溃或关闭与zookeeper的连接时,这个节点就会被删除.

临时znode节点,仅当创建者会话有效时这些信息必须有效保存.例如,主从模式的例子中,当主节点创建的znode为临时节点时,该节点的存在意味着主节点的存在及其的正常运行.如果该临时znode节点消失了,那么就表示主节点的崩溃,系统可依据此判断主节点的状态.

一个临时znode,以下两种情况将会被删除.

1.当创建该znode的客户端的会话因超时或主动关闭而中止时.

2.当某个客户端(不一定是创建者)主动删除该节点时.


有序节点

一个znode还可以设置为有序节点,一个有序znode节点被分配唯一一个单调递增的证书.当创建有序节点时,一个序号会被追加到路径之后.例如,如果一个客户端创建了一个有序节点,其路径为/task/task-,那么zookeeper将会分配一个序号,如1,并将这个数字最佳到路径之后,最后改znode节点为/task/task-1.有序节点通过提供创建具有唯一名称的znode方式,同时这种方式可以直观的查看znode的创建顺序.


总之,znode一共有4种类型,持久的,临时的,持久有序的,临时有序的.

----------------------------------------------------------------------------------------------------------------------------------------------

监视与通知

zookeeper基于通知的机制,客户端向zookeeper注册需要接收通知的znode,通过对znode设置监视点来接收通知.

监视点是一个单次出发的操作,意即监视点会出发一个通知.为了接收多个通知,客户端必须在每次通知后设置一个新的监视点.如下图所示,当节点/task发生变化的时候,客户端会受到一个通知,并从zookeeper读取一个新值.


zookeeper可以定义不同类型的通知,如 监听znode数据变化,监听znode子节点变化,监听znode的创建或删除.为了设置监视点,可以使用API中的调用来读取zookeeper的状态,在调用这些API时,传入一个watcher对象或使用默认的watcher.

------------------------------------------------------------------------------------------------------------------------------------------

版本

每一个znode都有一个版本号,她随着每次数据变化而自增.

两个API操作可以有条件的执行setData和delete.这两个调用以版本号作为传入参数,只有当传入参数的版本号与服务器上的版本号一致时,调用才会成功.


-----------------------------------------------------------------------------------------------------------------------------------------------

zookeeper架构

独立模式,仲裁模式

独立模式:单独的服务器,zookeeper状态无法复制

仲裁模式:具有一组zookeeper服务器,我们成为zookeeper集合.在仲裁模式下,zookeeper复制集群中的所有服务器的数据树.并且为了解决所有服务器复制数据时造成的延迟问题,引入法定人数概念,它表示需要保存客户端数据的服务器的最小个数(一般需要大于集合的一半).即当保存客户端数据的服务器达到这个数时,客户端即可继续执行,而其他为完成数据保存的zookeeper服务器会后续捕获到数据,并保存数据.

-------------------------------------------------------------------------------------------------------------------------------------------------

会话

在对zookeeper集合执行任何请求前,一个客户端必须先与服务器建立会话.

当客户端通过某一个特定语言套件来创建一个zookeeper句柄时,它就会通过服务建立一个会话.客户端初试连接到集合中某一个服务器或一个独立的服务器.客户端通过TCP协议与服务器进行连接并通信,但当会话无法与当前连接的服务器继续通信时,会话就可能转移到另一个服务器上.zookeeper客户端库透明转移一个会话到不同的服务器.

会话提供了顺序保证,同一个会话遵循请求的FIFO规律执行.

-----------------------------------------------------------------------------------------------------------------------------------------------------

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 221,135评论 6 514
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 94,317评论 3 397
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 167,596评论 0 360
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 59,481评论 1 296
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 68,492评论 6 397
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 52,153评论 1 309
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 40,737评论 3 421
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 39,657评论 0 276
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 46,193评论 1 319
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 38,276评论 3 340
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 40,420评论 1 352
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 36,093评论 5 349
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 41,783评论 3 333
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 32,262评论 0 23
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 33,390评论 1 271
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 48,787评论 3 376
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 45,427评论 2 359

推荐阅读更多精彩内容

  • ZooKeeper是什么 Zookeeper 分布式服务框架是Apache Hadoop 的一个子项目,它主要是用...
    不将就51y阅读 1,148评论 0 0
  • 简介 Zookeeper作为Hadoop和Hbase的重要组件,可以为分布式应用程序协调服务 ZooKeeper框...
    木棍兒阅读 355评论 0 0
  • Zookeeper 是什么? ZooKeeper是一种分布式协调服务,用于管理大型主机。在分布式环境中协调和管理服...
    泛轻舟gen阅读 3,398评论 0 1
  • 分布式服务框架 Zookeeper Zookeeper名字的由来是比较有趣的,下面的片段摘抄自《从PAXOS到ZO...
    史路比阅读 1,397评论 0 6
  • 每个国家都有每个国家的特点,我们国家也有自己的“中国味儿”。 都说我们的汉字是博大精深的,也是世界上最难学会的,可...
    Sunny雅典娜阅读 190评论 0 0