跳至正文

TECHNICAL KNOWLEDGE / 技术栈

从架构思路,到实现细节。

技术选型、工程实践与部署记录,逐步展开来看。

沟通你的技术问题 ↗

Kafka(Apache Kafka)是一个分布式流处理平台,设计用于高吞吐量和低延迟的数据传输。Kafka 的架构包括生产者、消费者、Broker 和 ZooKeeper,其中 Broker 和集群架构是关键组成部分。

 

Kafka Broker

Broker 是 Kafka 中的服务器实例,负责存储和管理消息。每个 Broker 都可以处理多个主题(topics),并且每个主题可以分为多个分区(partitions)。

主要功能:

  • 存储消息:Broker 按照主题和分区存储消息。
  • 消息传递:Broker 将消息从生产者传递给消费者。
  • 复制管理:Broker 管理分区的主副本(leader)和副本(replica),确保数据的高可用性和冗余。

     

Kafka 集群架构

一个 Kafka 集群由多个 Broker 组成,这些 Broker 协同工作以确保数据的高可用性和持久性。

 

1. 分区(Partition)

每个主题被分为多个分区,每个分区是一个有序的、不可变的消息序列。分区使得 Kafka 能够水平扩展:

  • 并行处理:分区允许多个消费者并行读取和处理数据。
  • 负载均衡:分区分布在不同的 Broker 上,均衡了负载。

     

2. 副本(Replication)

每个分区有一个主副本(leader)和多个副本(replica):

  • 主副本:处理所有的读写请求。
  • 副本:仅用于数据冗余和高可用性,当主副本故障时,副本可以提升为新的主副本。

     

3. 领导者选举(Leader Election)

每个分区的主副本由 ZooKeeper 选举,ZooKeeper 监控 Broker 的状态,并在故障时进行重新选举,以确保集群的高可用性。

 

4. ZooKeeper

Kafka 使用 ZooKeeper 进行分布式协调和管理:

  • 元数据管理:ZooKeeper 保存集群的元数据,如 Broker 信息、主题信息、分区和副本分配等。
  • 状态监控:ZooKeeper 监控 Broker 的状态,处理故障检测和恢复。

     

Kafka 集群的高可用性和容错性

  1. 数据复制:通过分区副本机制,Kafka 确保数据的冗余存储。
  2. 故障检测和恢复:ZooKeeper 负责监控 Broker 状态,并在检测到 Broker 故障时进行重新选举和恢复。
  3. 负载均衡:分区机制使得 Kafka 能够有效地分配负载,避免单点瓶颈。

     

Kafka 的伸缩性

Kafka 的架构设计使其能够水平扩展:

  • 添加 Broker:可以通过增加 Broker 来扩展集群的存储和处理能力。
  • 增加分区:可以通过增加主题的分区数来提高并行处理能力。

     

Kafka 集群的典型工作流程

  1. 生产者发送消息:生产者将消息发送到主题的指定分区。
  2. Broker 存储消息:负责分区的 Broker 接收消息并进行存储,同时将消息复制到其他 Broker 上的副本。
  3. 消费者读取消息:消费者从分区的主副本读取消息进行处理。