zk master-slaver机制

1、基本概念

>>zookeeper handler (zk句柄)有点类似文件句柄,打开一个文件就保持了一个文件句柄!同样的道理: 建立一个到zk server的session就会有一个zk handler(可以用任何编程语言)。

>> move session:client 可以 connect到 任意而且只能是一个server,但是如果超时(好久没有从server上hearded了)这个session可以迁移到其他server上,叫做 moving session

>> 一个client可以有多个session

2、master-worker 例子

2.1、Master: watch for new workers and tasks,and assign tasks to workers;//其实这里做了3件事,而且是有顺序的:先warch for availabe worker 然后 watch for tasks 然后 assign

>>一个系统只有一个process可以成为master,一个进程为了成为master 必须创建一个 ephemeral的znode call /master

1 create -e /master "host:port" //-e表示znode模式为 ephemeral  这里的数据 host:port 目的是让别人可以在zk之外访问他 ephemeral表示如果session失效 znode删除
2 ls /                                          //list the root of zk tree
3 get /master                            //get metadata

//watch 伴随着znode,如果znode发生变化 就会有事件//stat 作用两个1 get the attributes of a znode;2 才存在的znode上设置watch4 stat /master true                       // 参数 为 紧跟在path后的true表示sets the watch   

然后master需要创建一些parent 的 znode,然后master需要watch哪个worker是可用的?那些task要分配?然后做分配

//是persistent znode不包含数据,作用就是告诉哪个worker是可用的?何时有task可以分配?然后分配给workers

create /worker ""
create /tasks ""
create /assigns ""
ls /

//Master 需要watch for changes in the childer of /workers and /tasks,参数true表示为znode创建了watch
ls /worker true
ls /tasks true

2.2、worker: 将自己注册到系统,对master表明自己可用,这样话 master就可以watch for new tasks

//worker第一步就是通知master 它存在了可以执行taskle
//a、在/workers 创建一个ephemeral znode
create -e /worker/worker1 "host:port"
//因为master在关注 /workers所以一旦在worker1这个znode创建了,master就会观察到了 通知
WATCHER::
WatchedEvent state:SyncConneted type:NodeChildreChanged paht:/workders

//b、然后创建一个parent znode /assign/worker1 to receive assignments,and watch it for new tasks by ls true
create -e /assign/worker1
ls /assign/worker1 true
到此 worker准备接受assign了

2.3、client: create new tasks 然后等待系统反应

这里简化下任务就是client要求执行cmd命令

1、首先 to add a task
zkcli>create -s /tasks/task-  "cmd"   //mode是sequential,用户就会等待task被执行了
Created /tasks/task-0000000
2、执行这个task的worker执行完毕这个task后会 create a status znode for the task注意创建目录是在 /tasks/task-00000000,所以如过client看到这个status znode创建就知道task执行完了,所以他一直watch for the creation of the status znode.....
ls /tasks/task-0000000 true
3、master看到一个new task就会 get availabe workers ,然后assign
ls /tasks
ls /workers
create /assign/worker1/task-000000 ""
1、首先 to add a task
create -s /tasks/task-  "cmd"   //mode是sequential,用户就会等待task被执行了
时间: 2024-11-05 06:14:39

zk master-slaver机制的相关文章

zk的watcher机制的实现

转载:https://www.ibm.com/developerworks/cn/opensource/os-cn-apache-zookeeper-watcher/ http://blog.csdn.net/tycoon1988/article/details/38405101 可以设置观察的操作:exists,getChildren,getData 可以触发观察的操作:create,delete,setData zookeeper观察机制; 服务端只存储事件的信息,客户端存储事件的信息和Wa

Postgresql Master/Slaver

1.Install PostgreSql9.3 a:yum install copy repository to: /etc/yum/yum.repos.d yum -y install postgresql93-server postgresql93-contrib --skip-broken yum install http://yum.postgresql.org/9.5/redhat/rhel-7-x86_64/pgdg-redhat95-9.5-2.noarch.rpm sudo yu

ZK的watch机制

1.watcher原理框架 由图看出,zk的watcher由客户端,客户端WatchManager,zk服务器组成.整个过程涉及了消息通信及数据存储. zk客户端向zk服务器注册watcher的同时,会将watcher对象存储在客户端的watchManager. Zk服务器触发watcher事件后,会向客户端发送通知,客户端线程从watchManager中回调watcher执行相应的功能. 有木有看到小红旗?加入小红旗是一个watcher,当小红旗被创建并注册到node1节点(会有相应的API实

Redis的复制(Master/Slave)

是什么 : 也就是我们所说的主从复制,主机数据更新后根据配置和策略,自动同步到备机的master/slaver机制,Master以写为主,Slave以读为主 能干嘛: 读写分离,容灾恢复 怎么玩: 1.配从(库)不配主(库) 2.从库配置:slaveof 主库IP 主库端口 每次与master断开之后,都需要重新连接,除非你配置进redis.conf文件 Info replication 3.修改配置文件细节操作 拷贝多个redis.conf文件 开启daemonize yes Pid文件名字

Redis主从复制(Master&Slave)

什么是Redis主从赋值(Master&Slave)? 1.主从复制:主机数据更新后根据配置和策略,自动同步到备机的master/slaver机制,Master以写为 主,Slave以读为主. 2.主要作用: 1).读写分离 2).容灾恢复 Redis主从复制的配置使用(Windwos下) 1.安装主服务器,打开排至文件绑定ip 2.安装从服务器,并配置从服务器指定主服务器 3.下图是Redis同步时间的配置,900s有一个key发生改变时数据同步,300s有10个key发生改变时同步,60s有

Redis学习十:Redis的复制(Master/Slave)【重要】

一.是什么 官网 行话:也就是我们所说的主从复制,主机数据更新后根据配置和策略,自动同步到备机的master/slaver机制,Master以写为主,Slave以读为主 二.能干嘛 读写分离  容灾恢复 三.怎么玩 1.配从(库)不配主(库) 2.从库配置:slaveof 主库IP 主库端口 说明: 每次与master断开之后,都需要重新连接,除非你配置进redis.conf文件 Info replication 3.修改配置文件细节操作 [1]拷贝多个redis.conf文件 [2]开启dae

Redis实现主从复制(Master&Slave)

由于前段时间公司项目比较赶,一直抽不出时间写博客,今天偷空写一篇吧.前面给大家讲解了单机版redis的基本操作,现在继续给大家讲解一下Redis的进阶部分,主从复制和读写分离. 一.Master&Slave是什么? 也就是我们所说的主从复制,主机数据更新后根据配置和策略,自动同步到备机 的master/slaver机制,Master以写为主,Slave以读为主. 二.它能干嘛? 1.读写分离: 2.容灾恢复. 三.怎么玩? 1.配从(库)不配主(库): 2.从库配置:slaveof [主库IP]

redis主从复制(master/slave)

一.是什么 也就是我们所说的主从复制,主机数据更新后根据配置和策略,自动同步到备机的master/slaver机制,master以写为主,slave以读为主.主要用来读写分离和容灾恢复. 原文地址:https://www.cnblogs.com/Hxinguan/p/10231160.html

Redis主从复制-Replication

官网介绍看这里 http://redis.io/topics/replication 主从复制:就是主机数据更新后根据配置和策略,自动同步到备机的master/slaver机制,Master以写为主,Slave以读为主 Redis replication is a very simple to use and configure master-slave replication that allows slave Redis servers to be exact copies of maste

redis学习(六)主从复制

主从复制:主机更新数据后,根据配置和策略,自动同步到备机的master/slaver机制,master以写为主,slaver以读为主.redis支持主从复制. 下面通过实例来讲解主从复制的四个模式: 一.一主多从:一个主机.多个从机 1.首先复制三个redis.conf的文件修改为redis6379.conf.redis6380.conf.redis6381.conf 2.然后修改配置文件 1)daemonize no 修改为daemonize yes 将redis设置为守护进程 2)pidfi