Zookepper总结

ZooKeeper shell

1.5.1客户端连接

运行 zkCli.sh -server ip 进入命令行工具。

输入help,输出zk shell提示

1.5.2、shell 基本操作

创建节点

create[-s] [-e]pathdata acl

其中,-s或**-e分别指定节点特性**,顺序或临时节点,若不指定,则表示持久节点。

读取节点

ls path[watch]get path[watch]ls2 path[watch]

**更新节点 **

setpathdata

删除节点

deletepathrmrpath

===================================================

1.6、ZooKeeper 数据模型

ZooKeeper 的数据模型,采用树形层次结构,ZooKeeper 树中的每个节点被称为— Znode。

Znode 节点,既可以存数据,又可以有子节点

只要znode的路径是一样的,不管这个znode在哪台机器上,znode上的数据都是一模一样的。

Znode 存储数据大小有限制。ZooKeeper的每个Znode的数据大小至多1M,当时常规使用中应该远小于此值。

1.6.2、节点类型

Znode有两种,分别为临时节点永久节点

临时节点: 该节点的生命周期依赖于创建它们的会话。一旦会话结束,临时节点将被自动删除,当然可以也可以手动删除。临时节点不允许拥有子节点

永久节点: 该节点的生命周期不依赖于会话,并且只有在客户端显示执行删除操作的时候,他们才能被删除。

Znode还有一个序列化的特性,如果创建的时候指定的话,该Znode的名字后面会自动追加一个不断增加的序列号。序列号对于此节点的父节点来说是唯一的,这样便会记录每个子节点创建的先后顺序

======================================================

1.7、ZooKeeper Watcher

ZooKeeper 中,引入了Watcher机制来实现通知功能。 ZooKeeper允许客户端向服务端注册一个Watcher监听,当服务端的一些事件触发了这个Watcher,那么服务器就会向客户端发送一个事件来实现分布式的通知功能。

触发事件种类很多,如:节点创建,节点删除,节点改变,子节点改变等。

**1.7.1、Watch 机制特点 ** 一次性触发 事件发生触发监听,一个watcher event就会被发送到设置监听的客户端,这种效果是一次性的,后续再次发生同样的事件,不会再次触发。

事件封装 ZooKeeper使用WatchedEvent对象来封装服务端事件并传递。 WatchedEvent包含了每一个事件的三个基本属性: 通知状态(keeperState),事件类型(EventType)和节点路径(path)

1.7.2、Shell 客户端设置 watcher 设置节点数据变动监听:

get/aaa00000001 watch helloallen

通过另一个客户端更改节点数据:

set/aaa00000001hello22

此时设置监听的节点收到通知

==============================================

1.8、典型应用

1.8.1、数据发布与订阅(配置中心) 发布与订阅模型,即所谓的配置中心,顾名思义就是发布者将数据发布到ZK 节点上,供订阅者动态获取数据,实现配置信息的集中式管理和动态更新。

应用在启动的时候会主动来获取一次配置,同时,在节点上注册一Watcher,这样一来,以后每次配置有更新的时候,都会实时通知到订阅的客户端,从来达到获取最新配置信息的目的。

1.8.2、集群选主 在高可用的系统中,往往有一个active的节点,多个standby节点。正常服务时,由active节点对外服务,standby节点作为备用节点。当active节点down机时,standby节点就接替active节点,继续对外服务,从而实现了系统的高可用。

1.8.3、分布式锁 所有客户端都想要获得执行权,那就必须都去/locked节点下,创建一个子节点(/locked/kkk),如果/locked/kkk节点已经存在了,那么后面再创建是会创建不成功的,跟java的创建文件夹是一样的道理,已存在则创建失败。那么,最终只有一个客户端可以成功创建这个节点,也就是只有一个客户端获得这把锁(获得唯一的执行权)。当客户端应用执行完成后,只要删除/locked/kkk节点,就相当于释放了锁,然后其他客户端监听到节点被删除,就能触发事件,又开始抢着创建锁节点了。

1.9、选举机制 zookeeper默认的算法是FastLeaderElection,采用投票数大于半数则胜出的逻辑。

假设目前有 5 台服务器,每台服务器均没有数据,它们的编号分别1,2,3,4,5,按编号依次启动,它们的选举过程如下:

服务器1启动,给自己投票,然后发投票信息,由于其它机器还没有启动所以它收不到反馈信息,服务器1的状态一直属于Looking。

服务器2启动,给自己投票,同时与之前启动的服务器1交换结果,由于服务器2的编号大所以服务器2胜出,但此时投票数没有大于半数,所以两个服务器的状态依然是LOOKING。

服务器3启动,给自己投票,同时与之前启动的服务器1,2交换信息,由于服务器3的编号最大所以服务器3胜出,此时投票数正好大于半数,所以服务器3成为领导者,服务器1,2成为小弟。

服务器4启动,给自己投票,同时与之前启动的服务器1,2,3交换信息,尽管服务器4的编号大,但之前服务器3已经胜出,所以服务器4只能成为小弟。

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

推荐阅读更多精彩内容

  • 一、ZooKeeper的背景 1.1 认识ZooKeeper ZooKeeper---译名为“动物园管理员”。动物...
    algernoon阅读 9,071评论 1 106
  • 本文将从系统模型、序列化与协议、客户端工作原理、会话、服务端工作原理以及数据存储等方面来揭示ZooKeeper的技...
    端木轩阅读 3,802评论 0 42
  • 【简介】zookeeper是为分布式应用所设计的高可用、高性能且一致的开源协调服务,是大数据分布式集群的基础组件,...
    伍柒大人的三言两语阅读 2,436评论 1 16
  • Spring Cloud为开发人员提供了快速构建分布式系统中一些常见模式的工具(例如配置管理,服务发现,断路器,智...
    卡卡罗2017阅读 134,652评论 18 139
  • 当定好票时,我有些胆怯了! 这离别的日子终究来了。 回去要再次走在那天让我彷徨了又彷徨的街道;要再次眺望那在秋天没...
    菩提子花阅读 219评论 0 0