ZAB协议(算法)

发布于:2024-09-18 ⋅ 阅读:(14) ⋅ 点赞:(0)
一、ZAB(ZooKeeper Atomic Broadcast)介绍

ZAB 即 ZooKeeper Atomic Broadcast,是 ZooKeeper 实现分布式数据一致性的核心算法。它是一种原子广播协议,用于确保在分布式环境中,多个 ZooKeeper 服务器之间的数据一致性。

二、ZAB 的作用

  1. 保证数据一致性

    • 在分布式系统中,由于节点故障、网络延迟等原因,数据可能会出现不一致的情况。ZAB 通过一系列的机制,确保所有的 ZooKeeper 服务器上的数据都是一致的。

    • 例如,当一个客户端向 ZooKeeper 集群写入数据时,ZAB 会确保这个数据被所有的服务器正确地复制和存储,从而保证数据的一致性。

  2. 实现高可用性

    • ZAB 使得 ZooKeeper 具有高可用性。如果一个 ZooKeeper 服务器出现故障,其他服务器可以继续提供服务,不会影响整个系统的正常运行。

    • 例如,当一个领导者服务器出现故障时,ZAB 会自动选举出一个新的领导者,继续处理客户端的请求,从而保证系统的高可用性。

  3. 提供顺序一致性

    • ZAB 保证了 ZooKeeper 中的事务是按照顺序执行的。这意味着,对于一个给定的客户端,它看到的事务执行顺序是一致的。

    • 例如,当一个客户端先后执行了两个事务,ZAB 会确保这两个事务在所有的服务器上都是按照相同的顺序执行的,从而保证顺序一致性。

三、ZAB 的适用场景

  1. 分布式协调服务

    • ZooKeeper 作为一种分布式协调服务,广泛应用于分布式系统中。ZAB 是 ZooKeeper 实现分布式协调的核心算法,它可以用于实现分布式锁、分布式队列、配置管理等功能。

    • 例如,在一个分布式系统中,可以使用 ZooKeeper 实现分布式锁。多个客户端可以通过 ZooKeeper 的节点来竞争锁资源,ZAB 会确保锁的状态在所有的客户端上都是一致的,从而保证分布式锁的正确性。

  2. 服务发现

    • 在微服务架构中,服务发现是一个重要的问题。ZooKeeper 可以作为服务注册中心,使用 ZAB 算法来保证服务注册信息的一致性。

    • 例如,当一个服务上线时,它可以将自己的信息注册到 ZooKeeper 中。其他服务可以通过 ZooKeeper 获取到这个服务的信息,从而实现服务发现。ZAB 会确保服务注册信息在所有的 ZooKeeper 服务器上都是一致的,从而保证服务发现的正确性。

  3. 分布式配置管理

    • 在分布式系统中,配置管理是一个复杂的问题。ZooKeeper 可以作为分布式配置中心,使用 ZAB 算法来保证配置信息的一致性。

    • 例如,当一个配置项发生变化时,只需要在 ZooKeeper 中修改这个配置项,ZAB 会确保这个配置项在所有的服务器上都是一致的,从而保证分布式配置管理的正确性。

总之,ZAB 是 ZooKeeper 实现分布式数据一致性的核心算法,它具有保证数据一致性、实现高可用性和提供顺序一致性等作用。ZAB 适用于分布式协调服务、服务发现和分布式配置管理等场景。

四、深入了解

ZAB(Zookeeper Atomic Broadcast)

  • epoch类似RATF的term,counter类似index

  • 依旧是超过半数节点后才能在leader中提交数据

  • 优先级epoch > counter > SID(epoch和counter又被合成为ZXID)

  • proposal事务/数据

新leader(存在前任未提交的数据)会将前任Leader未提交的先传播后提交。

新leader(不存在前任未提交的数据)会将前任Leader未提交直接覆盖。

与RAFT算法区别 Leader选举,ZAB根据ZXID(epoch和counter),包含未提交的数据。RAFT根据term和index,

新leader(存在前任未提交的数据)会传播提交,在RAFT不会存在未提交的数据新leader

ZAB中没有候选者概念,有个观察者概念,缓解读操作压力。

ZAB 更注重高可用性和快速恢复服务,而 RAFT 更强调强一致性和简单的系统设计。


网站公告

今日签到

点亮在社区的每一天
去签到