【分布式学习】-zookeeper详细介绍

目录

 

Zookeeper分布式材料整理:

1、Zookeeper的功能

2、Zookeeper一致性特征:

3、zookeeper使用的Zab和paxios区别

3、Zab具体的实现

5、Zookeeper读写机制

6、Zab选举


Zookeeper分布式材料整理:

https://blog.csdn.net/lxiansheng001/article/details/94389837

1Zookeeper的功能

  • 可以基于ZK实现数据发布/订阅、负载均衡、命名服务、分布式协调/通知、集群管理、Master选举、分布式锁、分布式队列等特性。
  • ZooKeeper致力于提供一个高性能、高可用,具有严格的顺序访问控制能力(主要是写操作的严格顺序性)的分布式协调服务
  • ZooKeeper客户端通过TCP连接服务器
  • 数据节点:数据模型中的数据单元,ZNode.ZNode分为持久节点和临时节点,临时节点生命周期和客户端会话绑定
  • Observer:不参与Leader选举,致力于提高读性能

2Zookeeper一致性特征:

  • 1、顺序一致性. 
    包含:全局有序和因果有序。 
    • 全局有序:如果一台Server上消息A在消息B之前发布,那么在所有Server上消息A都在消息B之前。
    • 因果有序:对于顺序提交的消息B、A,如果消息B依赖于消息A,那么A将在B之前被执行。
  • 2、原子性. 
    集群中的所有Server,要么都更新成功,要么都更新失败,没有中间状态。
  • 3、单一视图性. 
    client不论连接到哪一个Server,展示给它的都是同一个视图。
  • 4、可靠性. 
    如果消息M被一台Server接受,那么消息将被所有Server接受。
  • 5、实时性. 
    ZK仅保证在一定时间段内,Client能从Server获取到最新的数据状态.

3zookeeper使用的Zabpaxios区别

 

  • 相同点:
  • 都有一个leader,leader向follower提案;
  • 半数确认;
  • 每一个proposal都有一个纪元epoch号类似于paxos中的选票;
  • 不同点:
  1. zookeeper强调的是高可用,paxos强调的是分布式一致性,paxos的一致性不能达到zookeeper的要求;
  2. Zab保证全局有序(Total order) - 假设有A、B两个事务,有一台server先执行A再执行B,那么可以保证所有server上A始终都被在B之前执行(联系zookeeper根结点创建来思考)。

 

3Zab具体的实现

https://blog.csdn.net/lxiansheng001/article/details/94389837

同步阶段:zxid(高位epoch,低位counter),Follower只会接受zxid比自己的lastZxid大的提案。

恢复阶段:

3、Zookeeper数据结构

Zookeeper 采用的树形结构,对于集群中分布式保持一致性的问题通过读写分离来完成。zk有自己的机制,在集群的情况下,zk会选举出一个leader负责写操作,剩下的都可以负载读操作,这样就可以将读写分离,保证的单一性,因此就不会出现上述数据不一致的情况了。其余类似操作有:分布式锁,版本控制等

记住一个原则:过半存活即可用。

【分布式学习】-zookeeper详细介绍_第1张图片

5Zookeeper读写机制

  • ZooKeeper通过以下两条基本保证来实现数据的一致性: 
    1、全局串行化所有写操作。 
    2、保证同一Client的指令被FIFO执行。
  • 读写请求
    • 对于读请求,由所请求的Server响应。
    • 对于写请求,都转发给Leader处理。

【分布式学习】-zookeeper详细介绍_第2张图片

6Zab选举

  1. 这是通过 Fast Leader Election 实现的,Leader 的选举只需要超过半数的节点投票即可,这样不需要等待所有节点的选票,能够尽早选出 Leader。

【分布式学习】-zookeeper详细介绍_第3张图片

你可能感兴趣的:(分布式框架,思维导图,zookeeper,zk详细介绍)