Distributed Learning --Zookeeper related installation, configuration and use of notes

zookeeper

协同服务系统。
分布式系统协同处理。
小集群.

single vision

文件系统层级结构存储。
path:/home/centos/xxx = znode ---> byte[] <= 1M
节点类型:1. 永久 2.临时 3.序列节点。10递增.
		  数据状态:版本.

zkServer.sh start
zkServer.sh status

zkCli.sh -server s201:2181
[zkCli]ls /
[zkCli]create / ""
[zkCli]get /
[zkCli]set /
[zkCli]rmr /

api
ZooKeeper zk = new ZooKeeper("s201:2181,s202:2181,...");

zk architecture

1.Client
	从server获取信息,周期性发送数据给server,表示自己还活着。
	client连接时,server回传ack信息。
	如果client没有收到reponse,自动重定向到另一个server.

2.Server
	zk集群中的一员,向client提供所有service,回传ack信息给client,表示自己还活着。

3.ensemble
	一组服务器。
	最小节点数是3.

4.Leader
	如果连接的节点失败,自定恢复,zk服务启动时,完成leader选举。

5.Follower
	追寻leader指令的节点。

znode

zk中的节点,维护了stat,由Version number, Action control list (ACL), Timestamp,Data length.构成.
data version		//数据写入的过程变化

ACL					//action control list,

Node Type

1.持久节点
	client结束,还存在。
	
2.临时节点
	在client活动时有效,断开自动删除。临时节点不能有子节点。
	leader推选是使用。

3.序列节点
	在节点名之后附加10个数字,主要用于同步和锁.

Session

Session中的请求以FIFO执行,一旦client连接到server,session就建立了。sessionid分配client.

client以固定间隔向server发送心跳,表示session是valid的,zk集群如果在超时时候,没有收到心跳,
判定为client挂了,与此同时,临时节点被删除。

Watches

观察。
client能够通过watch机制在数据发生变化时收到通知。
client可以在read 节点时设置观察者。watch机制会发送通知给注册的客户端。
观察模式只触发一次。
session过期,watch机制删除了。

zk workflow

zk集群启动后,client连接到其中的一个节点,这个节点可以leader,也可以follower。
连通后,node分配一个id给client,发送ack信息给client。
如果客户端没有收到ack,连接到另一个节点。
client周期性发送心跳信息给节点保证连接不会丢失。

如果client读取数据,发送请求给node,node读取自己数据库,返回节点数据给client.


如果client存储数据,将路径和数据发送给server,server转发给leader。
leader再补发请求给所有follower。只有大多数(超过半数)节点成功响应,则
写操作成功。

leader selection process (minimum number electoral law)

1.所有节点在同一目录下创建临时序列节点。
2.节点下会生成/xxx/xx000000001等节点。
3.序号最小的节点就是leader,其余就是follower.
4.每个节点观察小于自己节点的主机。(注册观察者)
5.如果leader挂了,对应znode删除了。
6.观察者收到通知。

Fully distributed cluster configuration zk

1.挑选3台主机
	s201 ~ s203
2.每台机器都安装zk
	tar
	环境变量

3.配置zk配置文件
	s201 ~ s203
	[/soft/zk/conf/zoo.cfg]
	...
	dataDir=/home/centos/zookeeper

	server.1=s201:2888:3888
	server.2=s202:2888:3888
	server.3=s203:2888:3888

4.在每台主机的/home/centos/zookeeper中添加myid,内容分别是1,2,3
	[s201]
	$>echo 1 > /home/centos/zookeeper/myid
	[s202]
	$>echo 2 > /home/centos/zookeeper/myid
	[s203]
	$>echo 3 > /home/centos/zookeeper/myid

5.启动服务器集群 
	$>zkServer.sh start
	...

6.查看每台服务器的状态
	$>zkServer.sh status

7.修改zk的log目录
Published 32 original articles · won praise 9 · views 3154

Guess you like

Origin blog.csdn.net/weixin_43501566/article/details/104526520