分布式系统<2>

zk首先我们在官网下载个zk的包
看下zk的配置文件
tickTime是zk中用于计算时间的基本时间单元
datadir 是zk种存储数据的位置
zk其实有2个数据是需要存储的  第一个就是快照的数据
第二个就是事务日志
zk中增加或者删除操作会先在事务日志中存储一份 等事务成功后 才会把数据更新到内存

在这里插入图片描述
在这里插入图片描述

我们可以用zk的命令 比如说ls

在这里插入图片描述

我们可以用zk的命令 比如说  create /lvhao2 '2'
  				此时 get /lvhao2
  				就能拿到数据了

在这里插入图片描述
在这里插入图片描述

此时我们可以看到zk
这样的写法或者说形式特别像我们的目录形式
他这个目录结构是可以存储东西的

在这里插入图片描述

我们使用delete 就可以把这条数据删除了

在这里插入图片描述

zk 就是类似于一个数据库 可以增删改 可以存储东西,我们现在搭建个zk集群

在这里插入图片描述

zk的集群是如果你在conf中配置了 此时认为是集群  有3台服务   他是根据你配置文件 不是根据你实际上有多少台
这个和他的一致性 过半机制有关
ZK集群中有3个角色
				 领导    跟随 	 观察
集群当中的3个角色 leader  flower  Observice
Leader 一个集群中必须要有一个Leader,此时涉及一个领导者
Flower 投票者
Observice 观察者
讲个场景就能明白Observice的作用
此时如果一个客户端连接在zk的集群上, 此时我要created 一个节点,呢么对于zk要怎么做
如果这个节点是leader 他就会把你这个节点生成一个提议,发送给我们的follow节点, 提议不会发给observer节点,然后follow节点接受到这个提议后会进行一些操作, 操作完之后生成一个ack 返回给leader代表 我接受提议,当leader接受到超过2个的提议之后 会判断过半机制 因为leader本身会给自己一个一个ack,代表当前这个creat操作是可以的, 然后作为laeder 他会把这个commit 再次发送给fellow节点以及Observer节点
//=============?
commit 这样才完成一个 creat 的操作	
commit --->发送给观察者  观察者只需要进行操作
这样就完成整个服务器 集群的一致性
//---------->
集群中Observer会做到数据同步
ZK你去写东西的时候 他其实先经过一个投票,你只有这个集群投票成功了, 才最终会把这个写操作完成,此时zk就类似于db,随着你db的使用者越来越多,此时就要加更多的节点
Leader
	--------->Flower 投票的过程会更加耗时,因为他此时回对过半机制的验证,节点数越多 半数也越来越多需要等到更多的机器返回ack,他才能把这个写入操作完成,
	--------->Observer观察者  如果此时加的是观察者  他不参加投票 而且他可以读
		提高读的性能



在这里插入图片描述

在这里插入图片描述

zookeeper集群中  不到一半是连不上集群的
一个集群 只有一个leader,我们的集群可以有很多个zk节点组成,呢么加这些节点的作用 肯定是为了提高你集群中读性能, 当你的用户使用zk的越来越多, 集群中zk的节点肯定是需要add的, 呢么你现在为了增加读的性能, 该怎么办
1. 要么增加Flower  	1. floowe 影响写性能  因为他参与投票
					
					2. Observice 虽然影响写性能 但是 他不参与投票
					3. 
呢么zk到底是满足CP还是AP呢
假如此时 1Leader 2Foller  1Observe
如果挂掉了2个Follwe 此时 客户端就连接不上集群了,连接不上代表不可用
[舍弃可用性 来满足一致性]
如果我此时挂掉的是OB ,此时集群是可用的 但是其他2台是可以使用的
ZK从着2个角度而言 AP 和CP 都是支持的

猜你喜欢

转载自blog.csdn.net/weixin_43689953/article/details/116034797