当前位置: 首页>后端>正文

Zookeeper分布式协调服务笔记

Zookeeper类似一个文件系统

Zookeeper数据保存在内存中,这意味着可以实现高吞吐量和延迟数量

Zookeeper非常重视高性能,高可用和严格的有序访问

Zookeeper从无主状态到可运行状态,恢复只需200ms

1、Zookeeper的特性

1.最终一致性:客户端看到的数据最终是一致的。

2.可靠性:服务器保存了消息,那么它就一直都存在。

3.实时性:ZooKeeper 不能保证两个客户端同时得到刚更新的数据。

4.独立性(等待无关):不同客户端直接互不影响。

5.原子性:更新要不成功要不失败,没有第三个状态。? ??????

2、Zookeeper下的节点叫做Znode

Znode节点由三部分组成:

1.stat(状态信息、描述Znode的版本、权限信息等)

2.data(与该Znode关联的数据)

3.children(该Znode下的子节点)

Znode节点有四种类型:

1.PERSISTENT:永久节点

2.EPHEMERAL:临时节点

3.PERSISTENT_SEQUENTIAL:序列化永久节点

4.EPHEMERAL_SEQUENTIAL:序列化临时节点

3、Zookeeper是什么?

Zookeeper分布式协调服务笔记,第1张

server.1,1就是zk的id,在dataDir对应的目录下,创建myId文件,赋值为1

4、Zookeeper中快速领导者选举是怎么做的?

选班长:

1.投自己

2.交流?PK --> 最强的人

3.投票(先比较日志id? zxid大的,如果都相等,比较myid大的,myid肯定不相等)

4.统计? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ??

Zookeeper分布式协调服务笔记,第2张
ZK的leader选举流程

5、为什么集群启动一台ZK服务器,客户端连接会报错?

因为启动一条zk服务器,他自己本身都不知道自己是leader还是follower,所以zk会主动断开client,而client会进行重试一直去尝试连接,zk就一直主动断开,所以会一直抛异常

6、Zookeeper是如何通过两阶段提交来保证数据一致性的?

Zookeeper分布式协调服务笔记,第3张

leader,commit到follower,使用的是异步方式

ZK尽可能的去保证强一致性,但是目前还是最终一致性

7、Zookeeper的观察者节点的作用是什么?

节点过多读的性能会提升,但是会影响写的性能

所以,出现了观察者节点,既提高了读性能,又不参加投票,所以不会影响写性能

8、什么是脑裂?

两台机房,选出两个leader来

Zookeeper分布式协调服务笔记,第4张
Zookeeper分布式协调服务笔记,第5张

解决方案:通过过半机制进行选举,然后一个机房多,一个机房少

1.Zookeeper是什么?

2.Zab协议是什么?

3.什么是分布式一致性?Zookeeper保证的是什么一致性?

4.什么是两阶段提交?

5.Zookeeper中快速领导者选举是怎么做的?

6.Zookeeper中的一致性是如何保障的?

7.Zookeeper的观察者节点的作用是什么?

8.为什么建议用奇数个节点来搭建集群

9.什么是脑裂

10.Zookeeper集群中还会不会出现脑裂?为什么?

1.paxos算法

2.ZAB

3.watch机制

4.API,不怕写client

5.callback? -》 reactive 响应式编程(更充分的压榨OS操作系统,HW硬件 的资源和性能)

Zookeeper分布式协调服务笔记,第6张

1、paxos算法(小岛议员提议故事)https://www.douban.com/note/208430424/?_i=00706411eesvs5

它是一个基于消息传递的一致性算法,paxos被认为是目前为止唯一的分布式一致性算法,其他的算法都是在其基础之上进行改进和简化的

最重要的两点:过半通过、两阶段提交

ZK Server是怎么实现的:

情况一:client要读数据,follower毫不犹豫直接给他,但告诉他这可能不是最新的,如果要最新的,等会我sync一下leader再告诉你

情况二:client要写数据,follower做不了主,然后告诉leader,leader询问了所有follower,都说没问题,然后同意写,并把数据返回

情况三:leader挂了,follower选个头出来,期间不接受client的任何请求

2、ZAB协议(ZK快速选举leader的过程)

Zab协议 的全称是Zookeeper Atomic Broadcast(Zookeeper原子广播)

队列:FIFO、有序性

?3、watch机制

1.watch一次性的,每次都需要重新注册

2.watch的回调执行是顺序执行的? A <-- B?<-- C?<-- D?

分布式锁,当A抢到了创建节点,B就会watch A节点,当A挂掉或者删掉时,会通知ZK,ZK就会通过watch的回调钩子,来唤醒B的方法,执行是在B的客户端执行的

3.watch是轻量级的,只告诉你发生了什么,不会告诉你具体内容

watch的事件类型:节点创建、节点删除、节点数据变化、子节点改变(添加/删除)


https://www.xamrdz.com/backend/3bv1940980.html

相关文章: