Zookeeper学习-04 ZooKeeper实现 Master-Worker协同

1、master-worker架构

master-work是一个广泛使用的分布式架构。master-work架构中有一个master负责监控worker的状态,并为worker分配任务。

  1. 在任何时刻,系统中最多只能有一个master,不可以出现两个master的情况,多个master共存会导致脑裂。
  2. 系统中除了处于active状态的master还有一个backup master,如果active master失败了,backup master可以很快的进入active状态。
  3. master实时监控worker的状态,能够及时收集worker成员变化的通知。master在收到worker成员变化时,通常重新进行任务的重新分配。


    04-01 worker-master架构.png

2、master-worker架构实例- HBase

HBase 采用的是mater-worker的架构,HMBase是系统中的master,HRegionServer是系统中的worker。
HMBase监控HBase Cluster中的worker的成员变化,把region分配给各个HRegionServer.系统中有一个HMaster处于active状态,其他HMaster处于备用状态。


04-04HBase master-worker架构.png

3、master-worker架构实例-Kafka

一个Kafka集群是有多个broker组成,这些broker是系统中的worker,Kafka会从这些worker选举出一个controller,这个controller是系统中的master,负责把topic partition分配给各个broker。


Kafka master-worker架构.png

4、master-worker架构实例- HDFS

HDFS采用的也是一个master-worker的架构,NameNode是系统中的master,DataNode是系统中的worker。NameNode用来保存整个分布式文件系统的metadata,并把数据块分配给cluster中的DataNode进行保存。


HDFS master-worker架构.png

5、如何使用ZooKeeper实现master-worker

  1. 使用一个临时节点/master表示master。master在行驶master的职能之前,首先要创建这个znode.如果能创建成功,进入active状态,开始行驶master职能。否则的话,进入backup状态,使用watch机制监控/master。假设系统中有一个active master和一个backup master,如果active master失败,它创建的/master就会被Zookeeper自动删除。这时backup master就会收到通知,通过再次创建/master节点成为新的active master。
  2. worker通过在/workers下面创建临时节点来加入集群。
  3. 处于active状态的master会通过watch机制监控/workers下面的znode列表来实时获取worker成员的变化。


    zookeeper实现master-worker.png

6、通过zkCli.sh模拟实现master-worker

1) 通过命令 ls -R / 查看znode状态


04-05查看节点状态.png

2)创建 workers,并退出

create /workers
quit
04-06 create-workers.png

3)创建master1并配置主机名和端口号

create -e /master "m1:2223"

创建成功,此时处于active状态,可以行使master职能


创建master104-07.png

4)另启动一个客户端,创建master2并配置主机名和端口号

create -e /master "m2:2223"

此时会创建失败,只能处于backup状态


04-07m2创建失败.png

通过stat命令,来监控master节点的变化

stat -w /master
04-08查看master节点变化.png

5)假设master1失败(quit退出)


04-09 master1 退出.png

此时master2 会收到一个通知,然后再去创建master的znode节点,则会创建成功

create -e /master "m2:2223"
04-10master2创建成功.png

6)如果master创建成功,通过命令

ls -w /workers 

来监控workers目录下znode 节点的变化


04-11 查看workers目录变化.png

7)另启动客户端,在workers目录下创建一个znode节点

create -e /workers/w1 "w1:2224"

此时master会收到一个通知:type:NodeChildrenChanged path:/workers


04-12创建w1成功.png

04-13查看works状态.png

8)在master中,再次监控workers目录变化:

ls -w /workers
04-14查看workers目录.png

9)另启动客户端,再创建一个workers节点

create -e /workers/w2 "w2:2224"

此时master又收到一个通知:type:NodeChildrenChanged path:/workers


04-15创建w2.png
04-16 master收到通知.png

10)在master中,通过命令:

ls -w /workers

查看workers目录下的节点状况


04-17 查看workers目录.png

11)此时退出(quit)w2节点来假设w2节点失败,此时master节点也会收到一个通知:
type:NodeChildrenChanged path:/workers


04-18 退出w2.png
04-19master收到通知.png

12)在master中,通过命令

ls -w /workers

查看workers目录下节点情况


04-20 查看workers目录.png

以上说明master可以实时监控workers目录下节点的变化,从而来做出相应的反应。

7、 其他问题

1)ZooKeeper的watch是one-time trigger。一个Watch收一次通知。
2)ls -w 和 stat -w 的区别。
ls列出一个znode下的子znode列表,stat是返回一个znode的stat信息。
-w选项是用来一个设置一个watch,适用于ls和stat。
3)
1.为什么第一个创建的znode:m1会成为master?这跟创建顺序有关系吗?
2.如果创建了两个znode来监听/workers下的worker,两个znode都收到了监听消息,是否跟唯一master监听worker相悖了?
在ZooKeeper上面创建/master这个znode,如果/master这个znode已经存在,这个创建就会失败。只有一个节点创建/master节点成功了,它才可以确认自已成了master。因为master1节点先做的创建,所以它的创建成功了,它就成了master。因为master2后做的创建,它的创建就会失败,它就知道自己没能成为master。
多个节点必须遵循先成功创建/master这个znode,再监听/workers下的worker才能能保证master的唯一性。

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

推荐阅读更多精彩内容