大数据之Zookeeper入门介绍、架构与流程

Apache ZooKeeper 是一个开源的分布式协调服务,它为大型分布式系统提供了可靠的分布式配置管理、命名服务、分布式锁服务、集群管理等功能。ZooKeeper 旨在简化分布式应用程序中复杂的一致性问题,并提供了一种强一致性保证的高可用数据模型。

Zookeeper 架构:

  1. 集群结构
    ZooKeeper 集群通常由多个服务器组成,这些服务器在内部形成一个动态的主从结构。每个服务器可以是 Leader、Follower 或 Observer 角色之一。

    • Leader:负责处理写请求和更新系统状态,发起投票并做出决议。
    • Follower:接收客户端读写请求,并将写请求转发给 Leader 进行处理,同时参与投票过程以维护集群一致性。
    • Observer(可选角色):与 Follower 类似,但不参与投票选举过程,只同步数据并响应客户端的读请求,用于提高读性能或扩展集群监控能力。
  2. 数据存储
    ZooKeeper 存储的数据是以树状结构组织的节点(ZNode),每个 ZNode 可包含数据以及一组元数据,如版本号等。ZooKeeper 采用原子广播协议 zab 来保证所有服务器对 ZNode 状态变更的一致性。

  3. 心跳与同步
    集群中的各个服务器之间通过心跳机制进行通信,保持连接并交换事务日志和快照数据,确保整个集群的状态一致。

Zookeeper 工作流程:

  1. 客户端连接
    客户端可以连接到集群中的任意一台服务器,无论是 Leader 还是 Follower/Observer。如果连接的是非 Leader 节点,对于写请求会自动重定向到 Leader。

  2. 请求处理

    • 读请求:可以直接在 Follower 或 Observer 上处理,返回最新的已知数据。
    • 写请求:首先发送到 Leader,Leader 将该操作转换成一个事务提议(Proposal),然后将其发给所有 Follower 进行投票。
    • 共识达成:当超过半数以上的 Follower (法定人数)投票同意后,Leader 提交该事务并更新自身状态,然后通知其他服务器同步这个新状态。
  3. 状态同步与持久化
    所有服务器都会记录相同的事务日志,并定期生成数据快照,以便在节点故障恢复时能快速重建状态。

  4. 客户端回调
    客户端可以通过注册 Watcher 监听特定 ZNode 的变化,一旦发生相应事件,ZooKeeper 会触发回调通知客户端。

总的来说,ZooKeeper 通过其特有的复制和投票机制实现了高度可靠的数据一致性,并通过灵活的服务发现和协调功能,支持多种分布式应用场景。

  • 7
    点赞
  • 10
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值