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具有形同的系统状态。

相关推荐
qq_124987075330 分钟前
基于SpringCloud的分布式演唱会抢票系统(源码+论文+部署+安装)
分布式·spring·spring cloud·毕业设计·计算机毕业设计
vx-bot55566635 分钟前
1024proxy现代对抗性环境下的分布式流量调度系统架构设计
分布式·系统架构
lhrimperial11 小时前
企业级消息中心架构设计与实践:多渠道统一推送平台
spring cloud·中间件·系统架构
富士康质检员张全蛋12 小时前
Zookeeper原理和Dubbo中的作用
zookeeper·dubbo
CRUD酱15 小时前
微服务分模块后怎么跨模块访问资源
java·分布式·微服务·中间件·java-ee
回家路上绕了弯16 小时前
定时任务实战指南:从单机到分布式,覆盖Spring Scheduler/Quartz/XXL-Jo
分布式·后端
rchmin17 小时前
开源分布式ID生成方案接入介绍
分布式·开源
西***634717 小时前
赋能指挥中枢:分布式KVM坐席协作系统技术与应用
分布式
Tony Bai18 小时前
【分布式系统】01 为何分布式?—— Vibe Coding 时代的系统设计哲学与我们的远征地图
分布式
云技纵横19 小时前
订票系统高并发实战:基于 ZooKeeper 的分布式锁、选座与幂等回滚(Java/Curator)
分布式·zookeeper·java-zookeeper