一、概述
在分布式系统中,消息队列(Message Queue)扮演着至关重要的角色,它能够有效控制并发量,确保消息的可靠传递,并提供异步通信机制。ZooKeeper 和 Kafka 是两个非常流行的开源项目,它们分别用于提供分布式协调服务和高性能的分布式消息队列。本文将详细介绍如何部署 ZooKeeper + Kafka 消息队列群集。
二、ZooKeeper 简介
2.1 定义与特点
ZooKeeper 是一个开源的分布式协调服务,为分布式应用提供一致性服务。它的主要特点包括:
- 领导者-跟随者模式:集群中有一个领导者(Leader)和多个跟随者(Follower)。
- 全局数据一致:每个 Server 保存一份相同的数据副本,客户端连接到任何 Server 都能获得一致的数据。
- 更新请求顺序执行:来自同一个客户端的更新请求按发送顺序执行,即先进先出。
- 数据更新原子性:一次数据更新要么成功,要么失败。
- 实时性:在一定时间范围内,客户端能读到最新数据。
2.2 工作机制
ZooKeeper 的工作模式基于文件系统+通知机制。每个服务端上线时需要到 ZooKeeper 集群注册信息,客户端从 ZooKeeper 集群获取在线服务端信息列表并监听。服务端上线下线时,ZooKeeper 更新列表信息并通知客户端。
2.3 应用场景
ZooKeeper 广泛应用于以下场景: