分布式协调框架------------zookeeper

1.概述

1.1 ZooKeeper概述
	Zookeeper是一个分布式协调服务的开源框架(Leader角色)。主要用来解
			 决分布式集群中应用系统的一致性问题。
	ZooKeeper本质上是一个分布式的小文件存储系统。提供基于类似于
文件系统的目录树方式的数据存储,并且可以对树中的节点进行有效管理。
从而用来维护和监控你存储的数据的状态变化。通过监控这些数据状态的变
化,从而可以达到基于数据的集群管理。

1.2 ZooKeeper特性
	1.全局数据一致
	2.可靠性
	3.顺序性
	4.数据更新原子性: 一次数据更新要么成功(半数以上节点成功),
		要么失败,不存在中间状态;
	5.实时性

2. ZooKeeper的集群角色

在这里插入图片描述

1:Leader
	1:管理其他节点,保证集群事务处理的顺序性;
	2:主要完成事务操作(写操作 增删改),也可以完成非事务操作;
2:Follower
	1:完成非事务()操作;
	2:参与投票选举;
3:Observer
	1:完成非事务操作;

3: ZooKeeper 的结点类型

	Znode有两种:
		1. 临时节点: 一旦会话结束,临时节点将被自动删除,当然可以也可以
				手动删除。临时节点不允许拥有子节点。
			普通临时节点;
			序列化临时节点;
			
		2. 永久节点: 该节点的生命周期不依赖于会话,并且只有在客户端显
					示执行删除操作的时候,他们才能被删除。
			普通永久节点; 
			序列化永久节点;

		PERSISTENT:永久节点
		EPHEMERAL:临时节点
		PERSISTENT_SEQUENTIAL:永久节点、序列化
		EPHEMERAL_SEQUENTIAL:临时节点、序列化

4: 节点的操作

1:客户端和服务器的连接方式
	1:bin/zkCli.sh
		只能连接本主机
	2:bin/zkCli.sh -server node1:2181
			可以连接集群任何主机
进入到zk的bin目录:cd /export/server/zookeeper-3.4.6/bin/
启动客户端: sh zkCli.sh

2. 创建结点: 
		创建普通永久节点
		 create /app1 hello
		
		创建序列化的永久节点
		
		create -s /app2 world
		
		创建临时节点
		
		create -e /tempnode world
		
		创建序列化的临时节点
		
		create -s -e /tempnode2 aaa

3:查看节点列表   从 / 目录开始
	ls /app1  查看节点
	ls  /app1/app11  查看子节点

3:获取节点数据
	get /app1
4:修改节点
	set /app1 world
5:删除
	  delete  /app1 删除的节点不能有子节点
 	  rmr    /app1 递归删除
 	  
结点属性: 	  
mzxid: Znode被修改的事务id,即每次对znode的修改都会更新mZxid。
	数字越大表示数据越新
ephemeralOwner 
	0:表示永久节点
	非0:表示临时节点


5. ZooKeeper 的watch机制

Watch机制用来监控简单的创建,销毁、修改
	过程: 客户端向服务端注册Watcher、服务端事件发生触发Watcher、客户端
	回调Watcher得到触发事件情况

在这里插入图片描述

6. ZooKeeper的选举机制

zookeeper默认的算法是FastLeaderElection,采用投票数大于半数则胜
出的逻辑。(过半原则)

1:第一次启动选举
	核心点是判断投票数是否过半,然后比较myid的值
2:Leader宕机选举
	核心点是比较谁的数据最新(Mzxid 越大月薪),如果数据都是最新,
	则比较myid的值.
  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值