Zookeeper的系统架构

先看一张图:
在这里插入图片描述
ZooKeeper 的架构图中我们需要了解和掌握的主要有:

1: ZooKeeper分为服务器端(Server) 和客户端(Client),客户端可以连接到整个ZooKeeper服务的任意服务器上(除非 leaderServes 参数被显式设置, leader 不允许接受客户端连接

2: 客户端使用并维护一个 TCP 连接,通过这个连接发送请求、接受响应、获取观察的事件以及发送心跳。如果这个 TCP 连接中断,客户端将自动尝试连接到另外的 ZooKeeper服务器。客户端第一次连接到 ZooKeeper服务时,接受这个连接的ZooKeeper服务器会为这个客户端建立一个会话。当这个客户端连接到另外的服务器时,这个会话会被新的服务器重新建立。

3: 上图中每一个Server代表一个安装Zookeeper服务的机器,即是整个提供Zookeeper服务的集群(或者是由伪集群组成)

4: 组成ZooKeeper服务的服务器必须彼此了解。它们维护一个内存中的状态图像,以及持久存储中的事务日志和快照, 只要大多数服务器可用,ZooKeeper服务就可用

5: ZooKeeper 启动时,将从实例中选举一个 leader,Leader 负责处理数据更新等操作,一个更新操作成功的标志是当且仅当大多数Server在内存中成功修改数据。每个Server 在内存中存储了一份数据

6: Zookeeper是可以集群复制的,集群间通过Zab协议(Zookeeper Atomic Broadcast)来保持数据的一致性

7: Zab协议包含两个阶段:leader election阶段和Atomic Brodcast阶段。

  • 集群中将选举出一个leader,其他的机器则称为follower,所有的写操作都被传送给leader,并通过brodcast将所有的更新告诉给follower。

  • 当leader崩溃或者leader失去大多数的follower时,需要重新选举出一个新的leader,让所有的服务器都恢复到一个正确的状态。

  • 当leader被选举出来,且大多数服务器完成了 和leader的状态同步后,leadder election 的过程就结束了,就将会进入到Atomic brodcast的过程。

  • Atomic Brodcast同步leader和follower之间的信息,保证leader和follower具有形同的系统状态。

相关推荐

  1. CAP 角度下 Redis 与 Zookeeper架构比较

    2024-03-28 21:16:02       58 阅读
  2. Linux系统安装zookeeper

    2024-03-28 21:16:02       55 阅读

最近更新

  1. docker php8.1+nginx base 镜像 dockerfile 配置

    2024-03-28 21:16:02       94 阅读
  2. Could not load dynamic library ‘cudart64_100.dll‘

    2024-03-28 21:16:02       100 阅读
  3. 在Django里面运行非项目文件

    2024-03-28 21:16:02       82 阅读
  4. Python语言-面向对象

    2024-03-28 21:16:02       91 阅读

热门阅读

  1. mysql中数据类型与取值范围

    2024-03-28 21:16:02       42 阅读
  2. 低噪声放大器简略

    2024-03-28 21:16:02       43 阅读
  3. jvm高级面试题-2024

    2024-03-28 21:16:02       42 阅读
  4. ThinkPHP8多应用配置

    2024-03-28 21:16:02       42 阅读
  5. 第十四届蓝桥杯省赛Python组真题(未完)

    2024-03-28 21:16:02       37 阅读
  6. 【超详细】关于数据库索引的解答

    2024-03-28 21:16:02       41 阅读
  7. 数据库查询系统时间的SQL

    2024-03-28 21:16:02       44 阅读
  8. Linux - 第四节

    2024-03-28 21:16:02       42 阅读
  9. Linux kernel高频技术面试题一

    2024-03-28 21:16:02       41 阅读